Loading core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java +62 −19 Original line number Diff line number Diff line Loading @@ -38,15 +38,22 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 } @SmallTest public void testTextAndAppearanceInSuggestionsPopup() { public void testTextAppearanceInSuggestionsPopup() { final Activity activity = getActivity(); final String sampleText = "abc def ghi"; final String[] candidate = {"DEF", "Def"}; final SuggestionSpan suggestionSpan = new SuggestionSpan(activity, candidate, SuggestionSpan.FLAG_AUTO_CORRECTION); final int spanStart = 4; final int spanEnd = 7; final String[] singleWordCandidates = {"DEF", "Def"}; final SuggestionSpan singleWordSuggestionSpan = new SuggestionSpan(activity, singleWordCandidates, SuggestionSpan.FLAG_AUTO_CORRECTION); final int singleWordSpanStart = 4; final int singleWordSpanEnd = 7; final String[] multiWordCandidates = {"ABC DEF GHI", "Abc Def Ghi"}; final SuggestionSpan multiWordSuggestionSpan = new SuggestionSpan(activity, multiWordCandidates, SuggestionSpan.FLAG_AUTO_CORRECTION); final int multiWordSpanStart = 0; final int multiWordSpanEnd = 11; TextAppearanceSpan expectedSpan = new TextAppearanceSpan(activity, android.R.style.TextAppearance_SuggestionHighlight); TextPaint tmpTp = new TextPaint(); Loading @@ -62,10 +69,13 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 public void run() { SpannableStringBuilder ssb = new SpannableStringBuilder(); ssb.append(sampleText); ssb.setSpan(suggestionSpan, spanStart, spanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); ssb.setSpan(singleWordSuggestionSpan, singleWordSpanStart, singleWordSpanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); ssb.setSpan(multiWordSuggestionSpan, multiWordSpanStart, multiWordSpanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); editText.setText(ssb); Selection.setSelection(editText.getText(), spanStart, spanEnd); Selection.setSelection(editText.getText(), singleWordSpanStart, singleWordSpanEnd); editText.onTextContextMenuItem(TextView.ID_REPLACE); } }); Loading @@ -73,11 +83,13 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 // In this test, the SuggestionsPopupWindow looks like // abc def ghi // ---------- // | *DEF* | // | *Def* | // ----------------- // | abc *DEF* ghi | // | abc *Def* ghi | // | *ABC DEF GHI* | // | *Abc Def Ghi* | // | DELETE | // ---------- // ----------------- // *XX* means that XX is highlighted. activity.runOnUiThread(new Runnable() { public void run() { Loading @@ -90,9 +102,10 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 int childNum = listView.getChildCount(); // +1 for "DELETE" command. assertEquals(candidate.length + 1, childNum); assertEquals(singleWordCandidates.length + multiWordCandidates.length + 1, childNum); for (int i = 0; i < candidate.length; ++i) { for (int i = 0; i < singleWordCandidates.length; ++i) { TextView textView = (TextView) listView.getChildAt(i); assertNotNull(textView); Loading @@ -100,16 +113,46 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 assertNotNull(spanned); // Check that the suggestion item order is kept. assertEquals(candidate[i], spanned.toString()); String expectedText = "abc " + singleWordCandidates[i] + " ghi"; assertEquals(expectedText, spanned.toString()); // Check that the text is highlighted with correct color and text size. TextAppearanceSpan[] taSpan = spanned.getSpans(singleWordSpanStart, singleWordSpanEnd, TextAppearanceSpan.class); assertEquals(1, taSpan.length); TextPaint tp = new TextPaint(); taSpan[0].updateDrawState(tp); assertEquals(expectedHighlightTextColor, tp.getColor()); assertEquals(expectedHighlightTextSize, tp.getTextSize()); // Check only center word is highlighted. assertEquals(singleWordSpanStart, spanned.getSpanStart(taSpan[0])); assertEquals(singleWordSpanEnd, spanned.getSpanEnd(taSpan[0])); } for (int i = 0; i < multiWordCandidates.length; ++i) { int indexInListView = singleWordCandidates.length + i; TextView textView = (TextView) listView.getChildAt(indexInListView); assertNotNull(textView); Spanned spanned = (Spanned) textView.getText(); assertNotNull(spanned); // Check that the suggestion item order is kept. assertEquals(multiWordCandidates[i], spanned.toString()); // Check that the text is highlighted with correct color and text size. TextAppearanceSpan[] taSpan = spanned.getSpans(0, candidate[i].length(), TextAppearanceSpan.class); TextAppearanceSpan[] taSpan = spanned.getSpans( 0, multiWordCandidates[i].length(), TextAppearanceSpan.class); assertEquals(1, taSpan.length); TextPaint tp = new TextPaint(); taSpan[0].updateDrawState(tp); assertEquals(expectedHighlightTextColor, tp.getColor()); assertEquals(expectedHighlightTextSize, tp.getTextSize()); // Check the whole text is highlighted. assertEquals(multiWordSpanStart, spanned.getSpanStart(taSpan[0])); assertEquals(multiWordSpanEnd, spanned.getSpanEnd(taSpan[0])); } } }); Loading Loading
core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java +62 −19 Original line number Diff line number Diff line Loading @@ -38,15 +38,22 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 } @SmallTest public void testTextAndAppearanceInSuggestionsPopup() { public void testTextAppearanceInSuggestionsPopup() { final Activity activity = getActivity(); final String sampleText = "abc def ghi"; final String[] candidate = {"DEF", "Def"}; final SuggestionSpan suggestionSpan = new SuggestionSpan(activity, candidate, SuggestionSpan.FLAG_AUTO_CORRECTION); final int spanStart = 4; final int spanEnd = 7; final String[] singleWordCandidates = {"DEF", "Def"}; final SuggestionSpan singleWordSuggestionSpan = new SuggestionSpan(activity, singleWordCandidates, SuggestionSpan.FLAG_AUTO_CORRECTION); final int singleWordSpanStart = 4; final int singleWordSpanEnd = 7; final String[] multiWordCandidates = {"ABC DEF GHI", "Abc Def Ghi"}; final SuggestionSpan multiWordSuggestionSpan = new SuggestionSpan(activity, multiWordCandidates, SuggestionSpan.FLAG_AUTO_CORRECTION); final int multiWordSpanStart = 0; final int multiWordSpanEnd = 11; TextAppearanceSpan expectedSpan = new TextAppearanceSpan(activity, android.R.style.TextAppearance_SuggestionHighlight); TextPaint tmpTp = new TextPaint(); Loading @@ -62,10 +69,13 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 public void run() { SpannableStringBuilder ssb = new SpannableStringBuilder(); ssb.append(sampleText); ssb.setSpan(suggestionSpan, spanStart, spanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); ssb.setSpan(singleWordSuggestionSpan, singleWordSpanStart, singleWordSpanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); ssb.setSpan(multiWordSuggestionSpan, multiWordSpanStart, multiWordSpanEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE); editText.setText(ssb); Selection.setSelection(editText.getText(), spanStart, spanEnd); Selection.setSelection(editText.getText(), singleWordSpanStart, singleWordSpanEnd); editText.onTextContextMenuItem(TextView.ID_REPLACE); } }); Loading @@ -73,11 +83,13 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 // In this test, the SuggestionsPopupWindow looks like // abc def ghi // ---------- // | *DEF* | // | *Def* | // ----------------- // | abc *DEF* ghi | // | abc *Def* ghi | // | *ABC DEF GHI* | // | *Abc Def Ghi* | // | DELETE | // ---------- // ----------------- // *XX* means that XX is highlighted. activity.runOnUiThread(new Runnable() { public void run() { Loading @@ -90,9 +102,10 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 int childNum = listView.getChildCount(); // +1 for "DELETE" command. assertEquals(candidate.length + 1, childNum); assertEquals(singleWordCandidates.length + multiWordCandidates.length + 1, childNum); for (int i = 0; i < candidate.length; ++i) { for (int i = 0; i < singleWordCandidates.length; ++i) { TextView textView = (TextView) listView.getChildAt(i); assertNotNull(textView); Loading @@ -100,16 +113,46 @@ public class SuggestionsPopupWindowTest extends ActivityInstrumentationTestCase2 assertNotNull(spanned); // Check that the suggestion item order is kept. assertEquals(candidate[i], spanned.toString()); String expectedText = "abc " + singleWordCandidates[i] + " ghi"; assertEquals(expectedText, spanned.toString()); // Check that the text is highlighted with correct color and text size. TextAppearanceSpan[] taSpan = spanned.getSpans(singleWordSpanStart, singleWordSpanEnd, TextAppearanceSpan.class); assertEquals(1, taSpan.length); TextPaint tp = new TextPaint(); taSpan[0].updateDrawState(tp); assertEquals(expectedHighlightTextColor, tp.getColor()); assertEquals(expectedHighlightTextSize, tp.getTextSize()); // Check only center word is highlighted. assertEquals(singleWordSpanStart, spanned.getSpanStart(taSpan[0])); assertEquals(singleWordSpanEnd, spanned.getSpanEnd(taSpan[0])); } for (int i = 0; i < multiWordCandidates.length; ++i) { int indexInListView = singleWordCandidates.length + i; TextView textView = (TextView) listView.getChildAt(indexInListView); assertNotNull(textView); Spanned spanned = (Spanned) textView.getText(); assertNotNull(spanned); // Check that the suggestion item order is kept. assertEquals(multiWordCandidates[i], spanned.toString()); // Check that the text is highlighted with correct color and text size. TextAppearanceSpan[] taSpan = spanned.getSpans(0, candidate[i].length(), TextAppearanceSpan.class); TextAppearanceSpan[] taSpan = spanned.getSpans( 0, multiWordCandidates[i].length(), TextAppearanceSpan.class); assertEquals(1, taSpan.length); TextPaint tp = new TextPaint(); taSpan[0].updateDrawState(tp); assertEquals(expectedHighlightTextColor, tp.getColor()); assertEquals(expectedHighlightTextSize, tp.getTextSize()); // Check the whole text is highlighted. assertEquals(multiWordSpanStart, spanned.getSpanStart(taSpan[0])); assertEquals(multiWordSpanEnd, spanned.getSpanEnd(taSpan[0])); } } }); Loading