1a81953a2b1818066ef5e44817f374ac288bab343Christine Chen/* 2a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * Copyright (C) 2011 The Android Open Source Project 3a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * 4a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * you may not use this file except in compliance with the License. 6a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * You may obtain a copy of the License at 7a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * 8a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * http://www.apache.org/licenses/LICENSE-2.0 9a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * 10a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * Unless required by applicable law or agreed to in writing, software 11a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * distributed under the License is distributed on an "AS IS" BASIS, 12a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * See the License for the specific language governing permissions and 14a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * limitations under the License. 15a81953a2b1818066ef5e44817f374ac288bab343Christine Chen */ 16a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 17a81953a2b1818066ef5e44817f374ac288bab343Christine Chenpackage com.android.contacts.common.format; 18a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 1942210256d3d584783ac2fb2742088ce57d9da766Yorke Leeimport android.graphics.Typeface; 20a81953a2b1818066ef5e44817f374ac288bab343Christine Chenimport android.test.suitebuilder.annotation.SmallTest; 21f99a990be713ed35afe64ba8133c5428816390c6Christine Chenimport android.text.SpannableString; 22a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 23a81953a2b1818066ef5e44817f374ac288bab343Christine Chenimport com.android.contacts.common.format.SpannedTestUtils; 24a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 25a81953a2b1818066ef5e44817f374ac288bab343Christine Chenimport junit.framework.TestCase; 26a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 27a81953a2b1818066ef5e44817f374ac288bab343Christine Chen/** 28a81953a2b1818066ef5e44817f374ac288bab343Christine Chen * Unit tests for {@link TextHighlighter}. 29a81953a2b1818066ef5e44817f374ac288bab343Christine Chen */ 30a81953a2b1818066ef5e44817f374ac288bab343Christine Chen@SmallTest 31a81953a2b1818066ef5e44817f374ac288bab343Christine Chenpublic class TextHighlighterTest extends TestCase { 32a81953a2b1818066ef5e44817f374ac288bab343Christine Chen private static final int TEST_PREFIX_HIGHLIGHT_COLOR = 0xFF0000; 33a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 34a81953a2b1818066ef5e44817f374ac288bab343Christine Chen /** The object under test. */ 35a81953a2b1818066ef5e44817f374ac288bab343Christine Chen private TextHighlighter mTextHighlighter; 36a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 37a81953a2b1818066ef5e44817f374ac288bab343Christine Chen @Override 38a81953a2b1818066ef5e44817f374ac288bab343Christine Chen protected void setUp() throws Exception { 39a81953a2b1818066ef5e44817f374ac288bab343Christine Chen super.setUp(); 4042210256d3d584783ac2fb2742088ce57d9da766Yorke Lee mTextHighlighter = new TextHighlighter(Typeface.BOLD); 41a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 42a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 43a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testApply_EmptyPrefix() { 44a81953a2b1818066ef5e44817f374ac288bab343Christine Chen CharSequence seq = mTextHighlighter.applyPrefixHighlight("", ""); 45a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, ""); 46a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 47a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("test", ""); 48a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, "test"); 49a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 50a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 51a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetText_MatchingPrefix() { 52a81953a2b1818066ef5e44817f374ac288bab343Christine Chen final String prefix = "TE"; 53a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 54a81953a2b1818066ef5e44817f374ac288bab343Christine Chen CharSequence seq = mTextHighlighter.applyPrefixHighlight("test", prefix); 55a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 0, 1); 56a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 57a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("Test", prefix); 58a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 0, 1); 59a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 60a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("TEst", prefix); 61a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 0, 1); 62a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 63a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("a test", prefix); 64a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 2, 3); 65a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 66a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 67a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetText_NotMatchingPrefix() { 68a81953a2b1818066ef5e44817f374ac288bab343Christine Chen final CharSequence seq = mTextHighlighter.applyPrefixHighlight("test", "TA"); 69a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, "test"); 70a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 71a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 72a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetText_FirstMatch() { 73a81953a2b1818066ef5e44817f374ac288bab343Christine Chen final CharSequence seq = mTextHighlighter.applyPrefixHighlight( 74a81953a2b1818066ef5e44817f374ac288bab343Christine Chen "a test's tests are not tests", "TE"); 75a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 2, 3); 76a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 77a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 78a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetText_NoMatchingMiddleOfWord() { 79a81953a2b1818066ef5e44817f374ac288bab343Christine Chen final String prefix = "TE"; 80a81953a2b1818066ef5e44817f374ac288bab343Christine Chen CharSequence seq = mTextHighlighter.applyPrefixHighlight("atest", prefix); 81a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, "atest"); 82a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 83a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("atest otest", prefix); 84a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, "atest otest"); 85a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 86a81953a2b1818066ef5e44817f374ac288bab343Christine Chen seq = mTextHighlighter.applyPrefixHighlight("atest test", prefix); 87a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertPrefixSpan(seq, 6, 7); 88a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 89a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 90a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetMask_LengthMismatch() { 91f99a990be713ed35afe64ba8133c5428816390c6Christine Chen final SpannableString testString1 = new SpannableString("atest"); 92f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString1, 0, 0); 93f99a990be713ed35afe64ba8133c5428816390c6Christine Chen CharSequence seq = testString1; 94a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, "atest"); 95a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 96f99a990be713ed35afe64ba8133c5428816390c6Christine Chen final SpannableString testString2 = new SpannableString(""); 97f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString2, 0, 0); 98f99a990be713ed35afe64ba8133c5428816390c6Christine Chen seq = testString2; 99a81953a2b1818066ef5e44817f374ac288bab343Christine Chen SpannedTestUtils.assertNotSpanned(seq, ""); 100a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 101a81953a2b1818066ef5e44817f374ac288bab343Christine Chen 102a81953a2b1818066ef5e44817f374ac288bab343Christine Chen public void testSetMask_Highlight() { 103f99a990be713ed35afe64ba8133c5428816390c6Christine Chen final SpannableString testString1 = new SpannableString("alongtest"); 104f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString1, 2, 4); 105f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 0), 2); 106f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 2), 4); 107f99a990be713ed35afe64ba8133c5428816390c6Christine Chen 108f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString1, 3, 6); 109f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 0), 2); 110f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 2), 6); 111f99a990be713ed35afe64ba8133c5428816390c6Christine Chen 112f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString1, 4, 5); 113f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 2), 6); 114f99a990be713ed35afe64ba8133c5428816390c6Christine Chen 115f99a990be713ed35afe64ba8133c5428816390c6Christine Chen mTextHighlighter.applyMaskingHighlight(testString1, 7, 8); 116f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 2), 6); 117f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 6), 7); 118f99a990be713ed35afe64ba8133c5428816390c6Christine Chen assertEquals(SpannedTestUtils.getNextTransition(testString1, 7), 8); 119a81953a2b1818066ef5e44817f374ac288bab343Christine Chen } 120a81953a2b1818066ef5e44817f374ac288bab343Christine Chen} 121