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