1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17a055b2a5d62f7e8f879d2704edb261d43c3ac46cJesse Wilsonpackage libcore.java.text;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.text.AttributedCharacterIterator;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.text.AttributedString;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.text.CharacterIterator;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeSet;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.WeakHashMap;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
28a055b2a5d62f7e8f879d2704edb261d43c3ac46cJesse Wilsonpublic class OldAttributedStringTest extends junit.framework.TestCase {
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static void assertEqualString (String msg, String expected, AttributedString attrString) {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedCharacterIterator it = attrString.getIterator();
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer buf = new StringBuffer();
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        buf.append(it.first());
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        char ch;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((ch = it.next()) != CharacterIterator.DONE)
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            buf.append(ch);
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(msg, expected, buf.toString());
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLAttributedCharacterIterator_1() {
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String testString = "Test string";
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString = new AttributedString(testString);
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedCharacterIterator iter = attrString.getIterator();
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString2 = new AttributedString(iter);
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEqualString("String must match!", testString, attrString2);
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLAttributedCharacterIterator_2() {
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String testString = "Test string";
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString = new AttributedString(testString);
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedCharacterIterator iter = attrString.getIterator();
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString2 = new AttributedString(iter, 2, 7);
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEqualString("String must match!", "st st", attrString2);
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
57229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#AttributedString(AttributedCharacterIterator,
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int) Test of method
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#AttributedString(AttributedCharacterIterator,
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int). Case 1: Try to consruct AttributedString. Case 2: Try
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        to consruct AttributedString using incorrect beginIndex. Case 3:
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        Try to consruct AttributedString using incorrect endIndex.
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLAttributedCharacterIteratorII() {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-1355
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Try to consruct AttributedString.
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), 0, 0);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + e.toString());
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to consruct AttributedString using incorrect beginIndex.
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), -1, 0);
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to consruct AttributedString using incorrect endIndex.
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), 0, -1);
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLAttributedCharacterIterator_3() {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String testString = "Test string";
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString = new AttributedString(testString);
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedCharacterIterator iter = attrString.getIterator();
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString attrString2;
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attrString2 = new AttributedString(iter, 2, 7, new AttributedCharacterIterator.Attribute[] {});
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEqualString("String must match!", "st st", attrString2);
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attrString2 = new AttributedString(iter, 2, 7, null);
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEqualString("String must match!", "st st", attrString2);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
105229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#AttributedString(AttributedCharacterIterator,
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int, AttributedCharacterIterator.Attribute[]) Test of method
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#AttributedString(AttributedCharacterIterator,
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int, AttributedCharacterIterator.Attribute[]). Case 1: Try to
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        consruct AttributedString. Case 2: Try to consruct
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        AttributedString using incorrect beginIndex. Case 3: Try to
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        consruct AttributedString using incorrect endIndex. Case 4: Try to
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        consruct AttributedString using specified attributes.
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLAttributedCharacterIteratorII$Ljava_text_AttributedCharacterIterator$Attribute() {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Try to consruct AttributedString.
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), 0, 0,
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    null);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + e.toString());
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to consruct AttributedString using incorrect beginIndex.
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), -1, 0,
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    null);
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to consruct AttributedString using incorrect endIndex.
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), 0, -1,
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    null);
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to consruct AttributedString using specified attributes.
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator.Attribute[] attributes = new AttributedCharacterIterator.Attribute[1];
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            attributes[0] = new TestAttributedCharacterIteratorAttribute("test");
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString(new testAttributedCharacterIterator(), 0, 0,
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    attributes);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected expected " + e.toString());
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
153229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#AttributedString(AttributedCharacterIterator,
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int, Map<? extends AttributedCharacterIterator.Attribute,?>)
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        Test of method
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#AttributedString(AttributedCharacterIterator,
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int, Map<? extends
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        AttributedCharacterIterator.Attribute,?>). Case 1: Try to
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        construct AttributedString. Case 2: Try to construct
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        AttributedString using 0-length text and not an empty Map
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        attributes.
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_lang_StringLjava_util_Map() {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String test = "Test string";
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Try to construct AttributedString
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedString attrString = new AttributedString(
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    test,
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    new WeakHashMap<AttributedCharacterIterator.Attribute, String>());
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator it = attrString.getIterator();
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            StringBuffer buf = new StringBuffer();
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            buf.append(it.first());
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            char ch;
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            while ((ch = it.next()) != CharacterIterator.DONE)
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                buf.append(ch);
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Wrong string: " + buf, buf.toString().equals(test));
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + e.toString());
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to construct AttributedString using 0-length text and
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // not an empty Map attributes.
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Map<AttributedCharacterIterator.Attribute, String> whm = new WeakHashMap<AttributedCharacterIterator.Attribute, String>();
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            whm.put(new TestAttributedCharacterIteratorAttribute("test"),
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "value");
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new AttributedString("", whm);
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class TestAttributedCharacterIteratorAttribute extends
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator.Attribute {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private static final long serialVersionUID = -2917613373935785179L;
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public TestAttributedCharacterIteratorAttribute(String name) {
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(name);
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class testAttributedCharacterIterator implements
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Set getAllAttributeKeys() {
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object getAttribute(AttributedCharacterIterator.Attribute p) {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Map getAttributes() {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunLimit(Set p) {
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunLimit(AttributedCharacterIterator.Attribute p) {
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunLimit() {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunStart(Set p) {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunStart(AttributedCharacterIterator.Attribute p) {
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getRunStart() {
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object clone() {
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getIndex() {
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getEndIndex() {
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getBeginIndex() {
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char setIndex(int p) {
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char previous() {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char next() {
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char current() {
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char last() {
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public char first() {
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 'a';
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addAttributeLjava_text_AttributedCharacterIterator$AttributeLjava_lang_ObjectII() {
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString as = new AttributedString("test");
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "a", 2,
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                3);
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedCharacterIterator it = as.getIterator();
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("non-null value limit", 2, it
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE));
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as = new AttributedString("test");
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, null,
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                2, 3);
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        it = as.getIterator();
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("null value limit", 4, it
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE));
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as = new AttributedString("test");
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    null, -1, 3);
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException");
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // regression for Harmony-1244
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as = new AttributedString("123", new WeakHashMap());
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttribute(null, new TreeSet(), 0, 1);
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw NullPointerException");
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttribute(null, new TreeSet(), -1, 1);
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw NullPointerException");
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
324229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString.addAttribute(AttributedCharacterIterator,
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        Object)
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addAttributeLjava_text_AttributedCharacterIterator$AttributeLjava_lang_Object() {
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // regression for Harmony-1244
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString as = new AttributedString("123", new WeakHashMap());
330f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "english");
332f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        as.addAttribute(AttributedCharacterIterator.Attribute.INPUT_METHOD_SEGMENT,
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                                "input method");
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        as.addAttribute(AttributedCharacterIterator.Attribute.READING, "reading");
335f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttribute(null, new TreeSet());
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw NullPointerException");
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttribute(null, null);
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw NullPointerException");
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
351229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#addAttributes(Map<? extends
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        AttributedCharacterIterator.Attribute,?>, int, int) Tests of
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        method java.text.AttributedString#addAttributes(Map<? extends
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        AttributedCharacterIterator.Attribute,?>, int, int). Case 1: Try
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        to add attributes to AttributesString. Case 2: Try to add
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        null-attributes to AttributesString. Case 3: Try to add attributes
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        to AttributesString using incorrect index.
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addAttributesLjava_util_MapII() {
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AttributedString as = new AttributedString("test");
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map<AttributedCharacterIterator.Attribute, String> whm = new WeakHashMap<AttributedCharacterIterator.Attribute, String>();
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Try to add attributes to AttributesString.
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            whm.put(new TestAttributedCharacterIteratorAttribute("test1"),
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "value1");
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            whm.put(new TestAttributedCharacterIteratorAttribute("test2"),
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "value2");
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            whm.put(new TestAttributedCharacterIteratorAttribute("test3"),
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "value3");
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttributes(whm, 0, 3);
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + e.toString());
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to add null-attributes to AttributesString.
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttributes(null, 0, 3);
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException was not thrown");
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to add attributes to AttributesString using incorrect
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // index.
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            as.addAttributes(whm, 0, 0);
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
395229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#getIterator() Test of method
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#getIterator().
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getIterator() {
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String test = "Test string";
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedString attrString = new AttributedString(test);
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator it = attrString.getIterator();
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Incorrect iteration on AttributedString", it.first(),
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    test.charAt(0));
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exceptiption " + e.toString());
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
411229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[])
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        Test of method
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[]).
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getIterator$Ljava_text_AttributedCharacterIterator$Attribute() {
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String test = "Test string";
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Map<AttributedCharacterIterator.Attribute, String> hm = new HashMap<AttributedCharacterIterator.Attribute, String>();
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator.Attribute[] aci = new AttributedCharacterIterator.Attribute[3];
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[0] = new TestAttributedCharacterIteratorAttribute("att1");
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[1] = new TestAttributedCharacterIteratorAttribute("att2");
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[2] = new TestAttributedCharacterIteratorAttribute("att3");
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(aci[0], "value1");
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(aci[1], "value2");
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedString attrString = new AttributedString(test, hm);
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator it = attrString.getIterator(aci);
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[0]).equals("value1"));
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[1]).equals("value2"));
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[2]) == null);
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exceptiption " + e.toString());
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
441229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[],
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int) Test of method
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[],
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        int, int).
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getIterator$Ljava_text_AttributedCharacterIterator$AttributeII() {
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String test = "Test string";
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Map<AttributedCharacterIterator.Attribute, String> hm = new HashMap<AttributedCharacterIterator.Attribute, String>();
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator.Attribute[] aci = new AttributedCharacterIterator.Attribute[3];
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[0] = new TestAttributedCharacterIteratorAttribute("att1");
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[1] = new TestAttributedCharacterIteratorAttribute("att2");
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            aci[2] = new TestAttributedCharacterIteratorAttribute("att3");
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(aci[0], "value1");
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(aci[1], "value2");
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedString attrString = new AttributedString(test);
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            attrString.addAttributes(hm, 2, 4);
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            AttributedCharacterIterator it = attrString.getIterator(aci, 1, 5);
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[0]) == null);
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[1]) == null);
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[2]) == null);
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            it.next();
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[0]).equals("value1"));
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[1]).equals("value2"));
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Incorrect iteration on AttributedString", it
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getAttribute(aci[2]) == null);
476f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                attrString.getIterator(aci, -1, 5);
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("IllegalArgumentException is not thrown.");
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch(IllegalArgumentException iae) {
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //expected
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
483f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                attrString.getIterator(aci, 6, 5);
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("IllegalArgumentException is not thrown.");
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch(IllegalArgumentException iae) {
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //expected
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
490f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                attrString.getIterator(aci, 3, 2);
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("IllegalArgumentException is not thrown.");
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch(IllegalArgumentException iae) {
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //expected
496f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            }
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exceptiption " + e.toString());
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
500f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
503