summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMindy Pereira <mindyp@google.com>2011-09-22 08:04:45 -0700
committerMindy Pereira <mindyp@google.com>2011-09-22 09:54:51 -0700
commitd71925073f008dccd8c4b65d5d66534e6451e64d (patch)
tree4c11ba272d60e26d7aec18cffccf657bc970507a /tests
parent53f1eb3acfb88d4d9e384f89933df812b9d83f50 (diff)
downloadchips-d71925073f008dccd8c4b65d5d66534e6451e64d.tar.gz
Protect against focus lost before drawing/uesrs already tokenized.
Fixes bug:5339625 odd behavior on orientation change in the "to field" Also, added more test cases around adding/ removing more chip. Change-Id: I1b24526b5be82835b5ec7c0345b7d73a31169a8f
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/ex/chips/ChipsTest.java195
1 files changed, 193 insertions, 2 deletions
diff --git a/tests/src/com/android/ex/chips/ChipsTest.java b/tests/src/com/android/ex/chips/ChipsTest.java
index bc9a434..f550e96 100644
--- a/tests/src/com/android/ex/chips/ChipsTest.java
+++ b/tests/src/com/android/ex/chips/ChipsTest.java
@@ -20,7 +20,9 @@ import android.content.Context;
import android.test.AndroidTestCase;
import android.text.Editable;
import android.text.SpannableStringBuilder;
+import android.text.style.ImageSpan;
import android.text.util.Rfc822Tokenizer;
+import android.widget.TextView;
import com.android.ex.chips.RecipientEditTextView;
import com.android.ex.chips.RecipientEntry;
@@ -57,6 +59,11 @@ public class ChipsTest extends AndroidTestCase {
public Editable getSpannable() {
return mEditable;
}
+
+ @Override
+ public int getLineHeight() {
+ return 48;
+ }
}
private MockRecipientEditTextView createViewForTesting() {
@@ -98,11 +105,12 @@ public class ChipsTest extends AndroidTestCase {
String first = (String) mTokenizer.terminateToken("FIRST");
String second = (String) mTokenizer.terminateToken("SECOND");
String extra = "EXTRA";
+ mEditable = new SpannableStringBuilder();
mEditable.append(first + extra + second);
int firstStart = mEditable.toString().indexOf(first);
- int firstEnd = firstStart + first.length();
+ int firstEnd = firstStart + first.trim().length();
int secondStart = mEditable.toString().indexOf(second);
- int secondEnd = secondStart + second.length();
+ int secondEnd = secondStart + second.trim().length();
mEditable.setSpan(mMockRecips[mMockRecips.length - 2], firstStart, firstEnd, 0);
mEditable.setSpan(mMockRecips[mMockRecips.length - 1], secondStart, secondEnd, 0);
view.sanitizeBetween();
@@ -125,6 +133,189 @@ public class ChipsTest extends AndroidTestCase {
- extra.length());
}
+ public void testMoreChip() {
+ populateMocks(3);
+ MockRecipientEditTextView view = createViewForTesting();
+ view.setMoreItem(createTestMoreItem());
+ String first = (String) mTokenizer.terminateToken("FIRST");
+ String second = (String) mTokenizer.terminateToken("SECOND");
+ String third = (String) mTokenizer.terminateToken("THIRD");
+ mEditable = new SpannableStringBuilder();
+ mEditable.append(first+second+third);
+
+ int firstStart = mEditable.toString().indexOf(first);
+ int firstEnd = firstStart + first.trim().length();
+ int secondStart = mEditable.toString().indexOf(second);
+ int secondEnd = secondStart + second.trim().length();
+ int thirdStart = mEditable.toString().indexOf(third);
+ int thirdEnd = thirdStart + third.trim().length();
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 3], firstStart, firstEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 2], secondStart, secondEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 1], thirdStart, thirdEnd, 0);
+
+ view.createMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ // Find the more chip.
+ ImageSpan moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), thirdStart);
+ assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd);
+
+ view.removeMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd);
+ moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), -1);
+
+ // Rinse and repeat, just in case!
+ view.createMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ // Find the more chip.
+ moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), thirdStart);
+ assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd);
+
+ view.removeMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd);
+ moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), -1);
+ }
+
+ public void testMoreChipLotsOfUsers() {
+ populateMocks(10);
+ MockRecipientEditTextView view = createViewForTesting();
+ view.setMoreItem(createTestMoreItem());
+ String first = (String) mTokenizer.terminateToken("FIRST");
+ String second = (String) mTokenizer.terminateToken("SECOND");
+ String third = (String) mTokenizer.terminateToken("THIRD");
+ String fourth = (String) mTokenizer.terminateToken("FOURTH");
+ String fifth = (String) mTokenizer.terminateToken("FIFTH");
+ String sixth = (String) mTokenizer.terminateToken("SIXTH");
+ String seventh = (String) mTokenizer.terminateToken("SEVENTH");
+ String eigth = (String) mTokenizer.terminateToken("EIGHTH");
+ String ninth = (String) mTokenizer.terminateToken("NINTH");
+ String tenth = (String) mTokenizer.terminateToken("TENTH");
+ mEditable = new SpannableStringBuilder();
+ mEditable.append(first+second+third+fourth+fifth+sixth+seventh+eigth+ninth+tenth);
+
+ int firstStart = mEditable.toString().indexOf(first);
+ int firstEnd = firstStart + first.trim().length();
+ int secondStart = mEditable.toString().indexOf(second);
+ int secondEnd = secondStart + second.trim().length();
+ int thirdStart = mEditable.toString().indexOf(third);
+ int thirdEnd = thirdStart + third.trim().length();
+ int fourthStart = mEditable.toString().indexOf(fourth);
+ int fourthEnd = fourthStart + fourth.trim().length();
+ int fifthStart = mEditable.toString().indexOf(fifth);
+ int fifthEnd = fifthStart + fifth.trim().length();
+ int sixthStart = mEditable.toString().indexOf(sixth);
+ int sixthEnd = sixthStart + sixth.trim().length();
+ int seventhStart = mEditable.toString().indexOf(seventh);
+ int seventhEnd = seventhStart + seventh.trim().length();
+ int eighthStart = mEditable.toString().indexOf(eigth);
+ int eighthEnd = eighthStart + eigth.trim().length();
+ int ninthStart = mEditable.toString().indexOf(ninth);
+ int ninthEnd = ninthStart + ninth.trim().length();
+ int tenthStart = mEditable.toString().indexOf(tenth);
+ int tenthEnd = tenthStart + tenth.trim().length();
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 10], firstStart, firstEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 9], secondStart, secondEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 8], thirdStart, thirdEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 7], fourthStart, fourthEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 6], fifthStart, fifthEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 5], sixthStart, sixthEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 4], seventhStart, seventhEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 3], eighthStart, eighthEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 2], ninthStart, ninthEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 1], tenthStart, tenthEnd, 0);
+
+ view.createMoreChip();
+ assertEquals(mEditable.toString(), first + second + third + fourth + fifth + sixth
+ + seventh + eigth + ninth + tenth);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 10]), firstStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 9]), secondStart);
+ // Find the more chip.
+ ImageSpan moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), thirdStart);
+ assertEquals(mEditable.getSpanEnd(moreChip), tenthEnd);
+
+ view.removeMoreChip();
+ assertEquals(mEditable.toString(), first + second + third + fourth + fifth + sixth
+ + seventh + eigth + ninth + tenth);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 10]), firstStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 9]), secondStart);
+
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 8]), thirdStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 7]), fourthStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 6]), fifthStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 5]), sixthStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 4]), seventhStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), eighthStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), ninthStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), tenthStart);
+ moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), -1);
+
+ }
+
+ public void testMoreChipSpecialChars() {
+ populateMocks(3);
+ MockRecipientEditTextView view = createViewForTesting();
+ view.setMoreItem(createTestMoreItem());
+ String first = (String) mTokenizer.terminateToken("FI,RST");
+ String second = (String) mTokenizer.terminateToken("SE,COND");
+ String third = (String) mTokenizer.terminateToken("THI,RD");
+ mEditable = new SpannableStringBuilder();
+ mEditable.append(first+second+third);
+
+ int firstStart = mEditable.toString().indexOf(first);
+ int firstEnd = firstStart + first.trim().length();
+ int secondStart = mEditable.toString().indexOf(second);
+ int secondEnd = secondStart + second.trim().length();
+ int thirdStart = mEditable.toString().indexOf(third);
+ int thirdEnd = thirdStart + third.trim().length();
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 3], firstStart, firstEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 2], secondStart, secondEnd, 0);
+ mEditable.setSpan(mMockRecips[mMockRecips.length - 1], thirdStart, thirdEnd, 0);
+
+ view.createMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ // Find the more chip.
+ ImageSpan moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), thirdStart);
+ assertEquals(mEditable.getSpanEnd(moreChip), thirdEnd);
+
+ view.removeMoreChip();
+ assertEquals(mEditable.toString(), first+second+third);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 3]), firstStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 3]), firstEnd);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 2]), secondStart);
+ assertEquals(mEditable.getSpanStart(mMockRecips[mMockRecips.length - 1]), thirdStart);
+ assertEquals(mEditable.getSpanEnd(mMockRecips[mMockRecips.length - 1]), thirdEnd);
+ moreChip = view.getMoreChip();
+ assertEquals(mEditable.getSpanStart(moreChip), -1);
+ }
+
+ private TextView createTestMoreItem() {
+ TextView view = new TextView(getContext());
+ view.setText("<xliff:g id='count'>%1$s</xliff:g> more...");
+ return view;
+ }
+
private void populateMocks(int size) {
mMockEntries = new RecipientEntry[size];
for (int i = 0; i < size; i++) {