ChipsTest.java revision dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825
17cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira/* 27cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * Copyright (C) 2011 The Android Open Source Project 37cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * 47cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 57cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * you may not use this file except in compliance with the License. 67cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * You may obtain a copy of the License at 77cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * 87cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 97cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * 107cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * Unless required by applicable law or agreed to in writing, software 117cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 127cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * See the License for the specific language governing permissions and 147cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira * limitations under the License. 157cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira */ 167cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira 177cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereirapackage com.android.ex.chips; 187cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira 1901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport android.content.Context; 207cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereiraimport android.test.AndroidTestCase; 2101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport android.text.Editable; 2201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport android.text.SpannableStringBuilder; 23d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereiraimport android.text.style.ImageSpan; 2401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport android.text.util.Rfc822Tokenizer; 25d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereiraimport android.widget.TextView; 2601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 2701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport com.android.ex.chips.RecipientEditTextView; 2801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereiraimport com.android.ex.chips.RecipientEntry; 2901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 307cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira 317cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereirapublic class ChipsTest extends AndroidTestCase { 328eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira private RecipientChip[] mMockRecips; 3301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 348eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira private RecipientEntry[] mMockEntries; 3501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 3601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira private Rfc822Tokenizer mTokenizer; 3701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 3801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira private Editable mEditable; 3901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 4001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira class MockRecipientEditTextView extends RecipientEditTextView { 4101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 4201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public MockRecipientEditTextView(Context context) { 4301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira super(context, null); 4401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mTokenizer = new Rfc822Tokenizer(); 4501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira setTokenizer(mTokenizer); 4601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 4701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 4801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira @Override 4901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public RecipientChip[] getSortedRecipients() { 5001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira return mMockRecips; 5101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 5201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 5301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira @Override 5401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public Editable getText() { 5501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira return mEditable; 5601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 5701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 5801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira @Override 5901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public Editable getSpannable() { 6001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira return mEditable; 6101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 62d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 63d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira @Override 64d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira public int getLineHeight() { 65d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira return 48; 66d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira } 6701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 6801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 6901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira private MockRecipientEditTextView createViewForTesting() { 7001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable = new SpannableStringBuilder(); 7101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira MockRecipientEditTextView view = new MockRecipientEditTextView(getContext()); 7201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira return view; 7301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 7401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 7501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public void testCreateDisplayText() { 7601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira RecipientEditTextView view = createViewForTesting(); 7701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira RecipientEntry entry = RecipientEntry.constructGeneratedEntry("User Name, Jr", 7801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira "user@username.com"); 7901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira String test = view.createDisplayText(entry); 8001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals("Expected a properly formatted RFC email address", 8101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira "\"User Name, Jr\" <user@username.com>, ", test); 8201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 8301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira RecipientEntry alreadyFormatted = RecipientEntry.constructFakeEntry("user@username.com, "); 8401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira test = view.createDisplayText(alreadyFormatted); 8501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals("Expected a properly formatted RFC email address", "<user@username.com>, ", 8601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira test); 8701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 8801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira RecipientEntry alreadyFormattedNoSpace = RecipientEntry 8901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira .constructFakeEntry("user@username.com,"); 9001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira test = view.createDisplayText(alreadyFormattedNoSpace); 9101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals("Expected a properly formatted RFC email address", "<user@username.com>, ", 9201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira test); 9301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira 9401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira RecipientEntry alreadyNamed = RecipientEntry.constructGeneratedEntry("User Name", 9501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira "\"User Name, Jr\" <user@username.com>"); 9601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira test = view.createDisplayText(alreadyNamed); 9701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals( 9801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira "Expected address that used the name not the excess address name", 9901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira "User Name <user@username.com>, ", test); 10001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira } 1017cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira 10201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira public void testSanitizeBetween() { 1038eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira populateMocks(2); 10401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira MockRecipientEditTextView view = createViewForTesting(); 10501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira String first = (String) mTokenizer.terminateToken("FIRST"); 10601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira String second = (String) mTokenizer.terminateToken("SECOND"); 10701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira String extra = "EXTRA"; 108d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable = new SpannableStringBuilder(); 10901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable.append(first + extra + second); 11001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira int firstStart = mEditable.toString().indexOf(first); 111dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstEnd = firstStart + first.length(); 11201162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira int secondStart = mEditable.toString().indexOf(second); 113dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondEnd = secondStart + second.length(); 11401162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 2], firstStart, firstEnd, 0); 11501162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], secondStart, secondEnd, 0); 11601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira view.sanitizeBetween(); 11701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira String editableString = mEditable.toString(); 11801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals(editableString.indexOf(extra), -1); 11901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals(editableString.indexOf(first), firstStart); 12001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals(editableString.indexOf(second), secondStart - extra.length()); 12101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals(editableString, (first + second)); 122399bda87ad1a4d003609d6d27afc50c8359846b9Mindy Pereira 12301162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable = new SpannableStringBuilder(); 1248eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira populateMocks(1); 1258eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira mEditable.append(extra); 12601162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable.append(first); 12701162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira firstStart = mEditable.toString().indexOf(first); 12801162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira firstEnd = firstStart + first.length(); 12901162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], firstStart, firstEnd, 0); 13001162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira view.sanitizeBetween(); 13101162ce6739af1c9d9870f8e7e489f805c7e6794Mindy Pereira assertEquals(mEditable.toString(), first); 1328eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), firstStart 1338eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira - extra.length()); 1348eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira } 1358eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira 136d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira public void testMoreChip() { 137d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira populateMocks(3); 138d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira MockRecipientEditTextView view = createViewForTesting(); 139d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.setMoreItem(createTestMoreItem()); 140d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String first = (String) mTokenizer.terminateToken("FIRST"); 141d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String second = (String) mTokenizer.terminateToken("SECOND"); 142d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String third = (String) mTokenizer.terminateToken("THIRD"); 143d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable = new SpannableStringBuilder(); 144d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.append(first+second+third); 145d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 146d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int firstStart = mEditable.toString().indexOf(first); 147dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstEnd = firstStart + first.length(); 148d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int secondStart = mEditable.toString().indexOf(second); 149dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondEnd = secondStart + second.length(); 150d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int thirdStart = mEditable.toString().indexOf(third); 151dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdEnd = thirdStart + third.length(); 152d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 3], firstStart, firstEnd, 0); 153d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 2], secondStart, secondEnd, 0); 154d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], thirdStart, thirdEnd, 0); 155d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 156d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.createMoreChip(); 157d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 158d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 159d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 160d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira // Find the more chip. 161d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira ImageSpan moreChip = view.getMoreChip(); 162d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), thirdStart); 163d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd); 164d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 165d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.removeMoreChip(); 166d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 167d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 168d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd); 169d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 170d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart); 171d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd); 172d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira moreChip = view.getMoreChip(); 173d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), -1); 174d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 175d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira // Rinse and repeat, just in case! 176d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.createMoreChip(); 177d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 178d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 179d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 180d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira // Find the more chip. 181d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira moreChip = view.getMoreChip(); 182d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), thirdStart); 183d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd); 184d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 185d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.removeMoreChip(); 186d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 187d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 188d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd); 189d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 190d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart); 191d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd); 192d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira moreChip = view.getMoreChip(); 193d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), -1); 194d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira } 195d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 196d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira public void testMoreChipLotsOfUsers() { 197d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira populateMocks(10); 198d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira MockRecipientEditTextView view = createViewForTesting(); 199d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.setMoreItem(createTestMoreItem()); 200d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String first = (String) mTokenizer.terminateToken("FIRST"); 201d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String second = (String) mTokenizer.terminateToken("SECOND"); 202d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String third = (String) mTokenizer.terminateToken("THIRD"); 203d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String fourth = (String) mTokenizer.terminateToken("FOURTH"); 204d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String fifth = (String) mTokenizer.terminateToken("FIFTH"); 205d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String sixth = (String) mTokenizer.terminateToken("SIXTH"); 206d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String seventh = (String) mTokenizer.terminateToken("SEVENTH"); 207d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String eigth = (String) mTokenizer.terminateToken("EIGHTH"); 208d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String ninth = (String) mTokenizer.terminateToken("NINTH"); 209d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String tenth = (String) mTokenizer.terminateToken("TENTH"); 210d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable = new SpannableStringBuilder(); 211d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.append(first+second+third+fourth+fifth+sixth+seventh+eigth+ninth+tenth); 212d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 213d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int firstStart = mEditable.toString().indexOf(first); 214dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstEnd = firstStart + first.length(); 215d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int secondStart = mEditable.toString().indexOf(second); 216dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondEnd = secondStart + second.length(); 217d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int thirdStart = mEditable.toString().indexOf(third); 218dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdEnd = thirdStart + third.length(); 219d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int fourthStart = mEditable.toString().indexOf(fourth); 220dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int fourthEnd = fourthStart + fourth.length(); 221d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int fifthStart = mEditable.toString().indexOf(fifth); 222dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int fifthEnd = fifthStart + fifth.length(); 223d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int sixthStart = mEditable.toString().indexOf(sixth); 224dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int sixthEnd = sixthStart + sixth.length(); 225d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int seventhStart = mEditable.toString().indexOf(seventh); 226dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int seventhEnd = seventhStart + seventh.length(); 227d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int eighthStart = mEditable.toString().indexOf(eigth); 228dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int eighthEnd = eighthStart + eigth.length(); 229d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int ninthStart = mEditable.toString().indexOf(ninth); 230dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int ninthEnd = ninthStart + ninth.length(); 231d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int tenthStart = mEditable.toString().indexOf(tenth); 232dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int tenthEnd = tenthStart + tenth.length(); 233d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 10], firstStart, firstEnd, 0); 234d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 9], secondStart, secondEnd, 0); 235d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 8], thirdStart, thirdEnd, 0); 236d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 7], fourthStart, fourthEnd, 0); 237d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 6], fifthStart, fifthEnd, 0); 238d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 5], sixthStart, sixthEnd, 0); 239d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 4], seventhStart, seventhEnd, 0); 240d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 3], eighthStart, eighthEnd, 0); 241d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 2], ninthStart, ninthEnd, 0); 242d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], tenthStart, tenthEnd, 0); 243d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 244d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.createMoreChip(); 245d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first + second + third + fourth + fifth + sixth 246d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira + seventh + eigth + ninth + tenth); 247d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 10]), firstStart); 248d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 9]), secondStart); 249d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira // Find the more chip. 250d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira ImageSpan moreChip = view.getMoreChip(); 251d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), thirdStart); 252d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(moreChip), tenthEnd); 253d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 254d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.removeMoreChip(); 255d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first + second + third + fourth + fifth + sixth 256d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira + seventh + eigth + ninth + tenth); 257d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 10]), firstStart); 258d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 9]), secondStart); 259d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 260d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 8]), thirdStart); 261d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 7]), fourthStart); 262d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 6]), fifthStart); 263d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 5]), sixthStart); 264d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 4]), seventhStart); 265d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), eighthStart); 266d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), ninthStart); 267d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), tenthStart); 268d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira moreChip = view.getMoreChip(); 269d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), -1); 270d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 271d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira } 272d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 273d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira public void testMoreChipSpecialChars() { 274d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira populateMocks(3); 275d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira MockRecipientEditTextView view = createViewForTesting(); 276d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.setMoreItem(createTestMoreItem()); 277d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String first = (String) mTokenizer.terminateToken("FI,RST"); 278d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String second = (String) mTokenizer.terminateToken("SE,COND"); 279d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira String third = (String) mTokenizer.terminateToken("THI,RD"); 280d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable = new SpannableStringBuilder(); 281d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.append(first+second+third); 282d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 283d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int firstStart = mEditable.toString().indexOf(first); 284dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstEnd = firstStart + first.length(); 285d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int secondStart = mEditable.toString().indexOf(second); 286dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondEnd = secondStart + second.length(); 287d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira int thirdStart = mEditable.toString().indexOf(third); 288dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdEnd = thirdStart + third.length(); 289d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 3], firstStart, firstEnd, 0); 290d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 2], secondStart, secondEnd, 0); 291d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], thirdStart, thirdEnd, 0); 292d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 293d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.createMoreChip(); 294d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 295d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 296d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 297d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira // Find the more chip. 298d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira ImageSpan moreChip = view.getMoreChip(); 299d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), thirdStart); 300d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd); 301d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 302d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.removeMoreChip(); 303d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.toString(), first+second+third); 304d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart); 305d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd); 306d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart); 307d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart); 308d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd); 309d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira moreChip = view.getMoreChip(); 310d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira assertEquals(mEditable.getSpanStart(moreChip), -1); 311d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira } 312d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 313dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira public void testMoreChipDupes() { 314dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira populateMocks(4); 315dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira MockRecipientEditTextView view = createViewForTesting(); 316dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira view.setMoreItem(createTestMoreItem()); 317dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira String first = (String) mTokenizer.terminateToken("FIRST"); 318dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira String second = (String) mTokenizer.terminateToken("SECOND"); 319dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira String third = (String) mTokenizer.terminateToken("THIRD"); 320dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable = new SpannableStringBuilder(); 321dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable.append(first+second+third+third); 322dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira 323dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstStart = mEditable.toString().indexOf(first); 324dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int firstEnd = firstStart + first.length(); 325dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondStart = mEditable.toString().indexOf(second); 326dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int secondEnd = secondStart + second.length(); 327dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdStart = mEditable.toString().indexOf(third); 328dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdEnd = thirdStart + third.length(); 329dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdNextStart = mEditable.toString().indexOf(third, thirdEnd); 330dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira int thirdNextEnd = thirdNextStart + third.length(); 331dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 4], firstStart, firstEnd, 0); 332dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 3], secondStart, secondEnd, 0); 333dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 2], thirdStart, thirdEnd, 0); 334dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira mEditable.setSpan(mMockRecips[mMockRecips.length - 1], thirdNextStart, thirdNextEnd, 0); 335dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira 336dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira view.createMoreChip(); 337dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.toString(), first+second+third+third); 338dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 4]), firstStart); 339dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), secondStart); 340dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira // Find the more chip. 341dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira ImageSpan moreChip = view.getMoreChip(); 342dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(moreChip), thirdStart); 343dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanEnd(moreChip), thirdNextEnd); 344dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira 345dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira view.removeMoreChip(); 346dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.toString(), first+second+third+third); 347dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 4]), firstStart); 348dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 4]), firstEnd); 349dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), secondStart); 350dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), thirdStart); 351dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 2]), thirdEnd); 352dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdNextStart); 353dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdNextEnd); 354dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira moreChip = view.getMoreChip(); 355dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira assertEquals(mEditable.getSpanStart(moreChip), -1); 356dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira } 357dfeb97f6b18cdeff9872f8d32cd7a33baa1f8825Mindy Pereira 358d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira private TextView createTestMoreItem() { 359d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira TextView view = new TextView(getContext()); 360d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira view.setText("<xliff:g id='count'>%1$s</xliff:g> more..."); 361d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira return view; 362d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira } 363d71925073f008dccd8c4b65d5d66534e6451e64dMindy Pereira 3648eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira private void populateMocks(int size) { 3658eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira mMockEntries = new RecipientEntry[size]; 3668eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira for (int i = 0; i < size; i++) { 3678eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira mMockEntries[i] = RecipientEntry.constructGeneratedEntry("user", 3688eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira "user@username.com"); 3698eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira } 3708eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira mMockRecips = new RecipientChip[size]; 3718eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira for (int i = 0; i < size; i++) { 3728eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira mMockRecips[i] = new RecipientChip(null, mMockEntries[i], i); 3738eb031e6de46e477412d92ab0c5ef20b431f1804Mindy Pereira } 3747cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira } 3757cb970b6d9b60b9b9828d40fea8cff395a40ecd9Mindy Pereira} 376