1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package libcore.java.text;
19
20import java.text.AttributedCharacterIterator;
21import java.text.AttributedString;
22import java.util.HashSet;
23import java.util.Map;
24import java.util.Set;
25import junit.framework.TestCase;
26
27public class OldAttributedCharacterIteratorTest extends TestCase {
28
29    AttributedCharacterIterator it;
30    String string = "test test";
31
32    public void test_getRunLimitLSet() {
33        AttributedString as = new AttributedString("test");
34        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "a", 2,
35                3);
36        AttributedCharacterIterator it = as.getIterator();
37        HashSet<AttributedCharacterIterator.Attribute>  attr =
38            new HashSet<AttributedCharacterIterator.Attribute>();
39        attr.add(AttributedCharacterIterator.Attribute.LANGUAGE);
40        assertEquals("non-null value limit",
41                2, it.getRunLimit(attr));
42
43        as = new AttributedString("test");
44        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, null,
45                2, 3);
46        it = as.getIterator();
47        assertEquals("null value limit",
48                4, it.getRunLimit(attr));
49
50        attr.add(AttributedCharacterIterator.Attribute.READING);
51        assertEquals("null value limit",
52                4, it.getRunLimit(attr));
53    }
54
55    public void test_getAllAttributeKeys() {
56        AttributedString as = new AttributedString("test");
57        AttributedCharacterIterator it = as.getIterator();
58        Set<AttributedCharacterIterator.Attribute> emptyAttributes =
59            it.getAllAttributeKeys();
60        assertTrue(emptyAttributes.isEmpty());
61
62        int attrCount = 10;
63        for(int i = 0 ; i < attrCount; i++) {
64            as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
65                    "a");
66        }
67        it = as.getIterator();
68        Set<AttributedCharacterIterator.Attribute> attributes =
69            it.getAllAttributeKeys();
70        for(AttributedCharacterIterator.Attribute attr:attributes) {
71            assertEquals(AttributedCharacterIterator.Attribute.LANGUAGE, attr);
72        }
73    }
74
75    public void test_getAttributeLAttributedCharacterIterator_Attribute() {
76
77        Object attribute =
78            it.getAttribute(AttributedCharacterIterator.Attribute.LANGUAGE);
79        assertEquals("ENGLISH", attribute);
80
81        attribute =
82            it.getAttribute(AttributedCharacterIterator.Attribute.READING);
83        assertEquals("READ", attribute);
84
85        assertNull(it.getAttribute(AttributedCharacterIterator.
86                Attribute.INPUT_METHOD_SEGMENT));
87    }
88
89    public void test_getAttributes() {
90        Map<AttributedCharacterIterator.Attribute, Object> attributes =
91            it.getAttributes();
92        assertEquals(2, attributes.size());
93        assertEquals("ENGLISH",
94                attributes.get(AttributedCharacterIterator.Attribute.LANGUAGE));
95        assertEquals("READ",
96                attributes.get(AttributedCharacterIterator.Attribute.READING));
97
98        AttributedString as = new AttributedString("test");
99        assertTrue(as.getIterator().getAttributes().isEmpty());
100    }
101
102    public void test_getRunLimit() {
103        int limit = it.getRunLimit();
104        assertEquals(string.length(), limit);
105
106        AttributedString as = new AttributedString("");
107        assertEquals(0, as.getIterator().getRunLimit());
108
109        as = new AttributedString(new AttributedString("test text").
110                getIterator(), 2, 7);
111
112        AttributedCharacterIterator it = as.getIterator();
113        assertEquals(5, it.getRunLimit());
114    }
115
116    public void test_getRunLimitLAttribute() {
117        AttributedString as = new AttributedString("");
118        assertEquals(0, as.getIterator().getRunLimit(
119                AttributedCharacterIterator.Attribute.LANGUAGE));
120
121        as = new AttributedString("text");
122        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
123                "ENGLISH");
124
125        as.addAttribute(AttributedCharacterIterator.Attribute.READING,
126        "READ", 1, 3);
127
128        assertEquals(4, as.getIterator().getRunLimit(
129                AttributedCharacterIterator.Attribute.LANGUAGE));
130
131        assertEquals(1, as.getIterator().getRunLimit(
132                AttributedCharacterIterator.Attribute.READING));
133    }
134
135    public void test_getRunStart() {
136        assertEquals(0, it.getRunStart());
137
138        AttributedString as = new AttributedString("");
139        assertEquals(0, as.getIterator().getRunStart());
140
141        as = new AttributedString(new AttributedString("test text").
142                getIterator(), 2, 7);
143
144        AttributedCharacterIterator it = as.getIterator();
145
146        assertEquals(0, it.getRunStart());
147
148        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
149                "GERMAN", 1, 2);
150        as.addAttribute(AttributedCharacterIterator.Attribute.READING,
151                "READ", 1, 3);
152        assertEquals(0, as.getIterator().getRunStart());
153    }
154
155    public void test_getRunStartLAttribute() {
156        assertEquals(0, it.getRunStart(
157                AttributedCharacterIterator.Attribute.LANGUAGE));
158
159        AttributedString as = new AttributedString("test text");
160        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
161                            "GERMAN", 2, 5);
162        as.addAttribute(AttributedCharacterIterator.Attribute.READING,
163                            "READ", 2, 7);
164
165        assertEquals(0, as.getIterator().getRunStart(
166                AttributedCharacterIterator.Attribute.LANGUAGE));
167        assertEquals(0, as.getIterator().getRunStart(
168                AttributedCharacterIterator.Attribute.READING));
169    }
170
171    public void test_getRunStartLjava_util_Set() {
172        AttributedString as = new AttributedString("test");
173        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "a", 2,
174                3);
175        AttributedCharacterIterator it = as.getIterator();
176        HashSet<AttributedCharacterIterator.Attribute>  attr =
177            new HashSet<AttributedCharacterIterator.Attribute>();
178        attr.add(AttributedCharacterIterator.Attribute.LANGUAGE);
179        assertEquals(0, it.getRunStart(attr));
180
181        as = new AttributedString("test");
182        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
183                "ENGLISH",1, 3);
184        it = as.getIterator();
185        assertEquals(0, it.getRunStart(attr));
186
187        attr.add(AttributedCharacterIterator.Attribute.READING);
188        assertEquals(0, it.getRunStart(attr));
189
190
191    }
192
193    protected void setUp() {
194
195        AttributedString as = new AttributedString(string);
196
197        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
198                "GERMAN");
199        as.addAttribute(AttributedCharacterIterator.Attribute.READING,
200                "READ");
201        as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
202                "ENGLISH");
203
204        it = as.getIterator();
205    }
206
207    protected void tearDown() {
208    }
209}
210