155dfcd8b9609f112b0542af6a705080d98e00d2accornelius/*
2994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * this work for additional information regarding copyright ownership.
5994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * (the "License"); you may not use this file except in compliance with
7994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * the License.  You may obtain a copy of the License at
855dfcd8b9609f112b0542af6a705080d98e00d2accornelius *
9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
1055dfcd8b9609f112b0542af6a705080d98e00d2accornelius *
11994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * See the License for the specific language governing permissions and
15994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * limitations under the License.
16994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes */
17994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespackage org.apache.harmony.tests.java.text;
18994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
19994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.Collator;
20994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ParseException;
21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.RuleBasedCollator;
22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Locale;
23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
24994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class CollatorTest extends junit.framework.TestCase {
25994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_clone() {
27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c = Collator.getInstance(Locale.GERMAN);
28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c2 = (Collator) c.clone();
29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Clones answered false to equals", c.equals(c2));
30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Clones were equivalent", c != c2);
31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
33994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_compareLjava_lang_ObjectLjava_lang_Object() {
34994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
35994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Object o, o2;
36994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
37994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.IDENTICAL);
38994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "E";
39994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "F";
40994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on primary difference", c.compare(o, o2) < 0);
41994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
42994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u00e9";
43994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on secondary difference", c.compare(o, o2) < 0);
44994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
45994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "E";
46994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on tertiary difference", c.compare(o, o2) < 0);
47994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "\u0001";
48994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u0002";
49994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on identical", c.compare(o, o2) < 0);
50994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
51994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "e";
52994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("a) Failed on equivalence", 0, c.compare(o, o2));
53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on primary expansion",
54994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				c.compare("\u01db", "v") < 0);
55994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
56994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.TERTIARY);
57994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "E";
58994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "F";
59994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on primary difference", c.compare(o, o2) < 0);
60994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
61994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u00e9";
62994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on secondary difference", c.compare(o, o2) < 0);
63994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
64994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "E";
65994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on tertiary difference", c.compare(o, o2) < 0);
66994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "\u0001";
67994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u0002";
68994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("b) Failed on identical", 0, c.compare(o, o2));
69994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
70994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "e";
71994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("b) Failed on equivalence", 0, c.compare(o, o2));
72994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
73994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.SECONDARY);
74994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "E";
75994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "F";
76994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on primary difference", c.compare(o, o2) < 0);
77994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
78994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u00e9";
79994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on secondary difference", c.compare(o, o2) < 0);
80994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
81994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "E";
82994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("c) Failed on tertiary difference", 0, c.compare(o, o2));
83994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "\u0001";
84994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u0002";
85994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("c) Failed on identical", 0, c.compare(o, o2));
86994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
87994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "e";
88994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("c) Failed on equivalence", 0, c.compare(o, o2));
89994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
90994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.PRIMARY);
91994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "E";
92994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "F";
93994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on primary difference", c.compare(o, o2) < 0);
94994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
95994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u00e9";
96994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("d) Failed on secondary difference", 0, c.compare(o, o2));
97994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
98994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "E";
99994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("d) Failed on tertiary difference", 0, c.compare(o, o2));
100994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "\u0001";
101994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "\u0002";
102994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("d) Failed on identical", 0, c.compare(o, o2));
103994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o = "e";
104994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		o2 = "e";
105994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("d) Failed on equivalence", 0, c.compare(o, o2));
106994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
107994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		try {
108994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			c.compare("e", new StringBuffer("Blah"));
109994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		} catch (ClassCastException e) {
110994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			// correct
111994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			return;
112994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		}
113994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		fail("Failed to throw ClassCastException");
114994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
115994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
116994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_equalsLjava_lang_Object() {
117994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c = Collator.getInstance(Locale.ENGLISH);
118994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c2 = (Collator) c.clone();
119994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Cloned collators not equal", c.equals(c2));
120994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c2.setStrength(Collator.SECONDARY);
121994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Collators with different strengths equal", !c.equals(c2));
122994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
123994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
124994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_equalsLjava_lang_StringLjava_lang_String() {
125994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
126994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
127994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.IDENTICAL);
128994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on primary difference", !c.equals("E", "F"));
129994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on secondary difference", !c
130994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				.equals("e", "\u00e9"));
131994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on tertiary difference", !c.equals("e", "E"));
132994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on identical", !c.equals("\u0001", "\u0002"));
133994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("a) Failed on equivalence", c.equals("e", "e"));
134994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
135994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.TERTIARY);
136994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on primary difference", !c.equals("E", "F"));
137994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on secondary difference", !c
138994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				.equals("e", "\u00e9"));
139994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on tertiary difference", !c.equals("e", "E"));
140994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on identical", c.equals("\u0001", "\u0002"));
141994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("b) Failed on equivalence", c.equals("e", "e"));
142994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
143994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.SECONDARY);
144994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on primary difference", !c.equals("E", "F"));
145994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on secondary difference", !c
146994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				.equals("e", "\u00e9"));
147994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on tertiary difference", c.equals("e", "E"));
148994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on identical", c.equals("\u0001", "\u0002"));
149994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("c) Failed on equivalence", c.equals("e", "e"));
150994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
151994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.PRIMARY);
152994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on primary difference", !c.equals("E", "F"));
153994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on secondary difference", c.equals("e", "\u00e9"));
154994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on tertiary difference", c.equals("e", "E"));
155994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on identical", c.equals("\u0001", "\u0002"));
156994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("d) Failed on equivalence", c.equals("e", "e"));
157994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
158994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
159994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void failing_test_getAvailableLocales() {
160994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Locale[] locales = Collator.getAvailableLocales();
161994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("No locales", locales.length > 0);
162994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		boolean english = false, german = false;
163994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		for (int i = locales.length; --i >= 0;) {
164994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			if (locales[i].equals(Locale.ENGLISH))
165994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				english = true;
166994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			if (locales[i].equals(Locale.GERMAN))
167994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				german = true;
168994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			// Output the working locale to help diagnose a hang
169994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			Collator c1 = Collator.getInstance(locales[i]);
170994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			assertTrue("Doesn't work", c1.compare("a", "b") < 0);
171994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			assertTrue("Wrong decomposition",
172994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes					c1.getDecomposition() == Collator.NO_DECOMPOSITION);
173994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			assertTrue("Wrong strength", c1.getStrength() == Collator.TERTIARY);
174994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			if (c1 instanceof RuleBasedCollator) {
175994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				try {
176994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes					new RuleBasedCollator(((RuleBasedCollator) c1).getRules());
177994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				} catch (ParseException e) {
178994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes					fail("ParseException");
179994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				}
180994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				// assertTrue("Can't recreate: " + locales[i], temp.equals(c1));
181994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			}
182994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		}
183994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Missing locales", english && german);
184994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
185994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
186994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void failing_test_getDecomposition() {
187994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		RuleBasedCollator collator;
188994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		try {
189994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			collator = new RuleBasedCollator("; \u0300 < a, A < b < c < d");
190994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		} catch (ParseException e) {
191994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			fail("ParseException");
192994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			return;
193994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		}
194994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Wrong default",
195994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				collator.getDecomposition() == Collator.CANONICAL_DECOMPOSITION);
196994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
197994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
198994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_getInstance() {
199994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c1 = Collator.getInstance();
200994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c2 = Collator.getInstance(Locale.getDefault());
201994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Wrong locale", c1.equals(c2));
202994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
203994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
204994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_getInstanceLjava_util_Locale() {
205994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Used to test", true);
206994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
207994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
20855dfcd8b9609f112b0542af6a705080d98e00d2accornelius	public void test_getStrength() throws ParseException {
20955dfcd8b9609f112b0542af6a705080d98e00d2accornelius		RuleBasedCollator collator = new RuleBasedCollator("&9 ; \u0300 < a, A < b < c < d");
210994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Wrong default", collator.getStrength() == Collator.TERTIARY);
211994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
212994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
213994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void failing_test_setDecompositionI() {
214994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
215994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setStrength(Collator.IDENTICAL);
216994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setDecomposition(Collator.NO_DECOMPOSITION);
217994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Collator should not be using decomposition", !c.equals(
218994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				"\u212B", "\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL
219994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		// LETTER A WITH RING ABOVE"
220994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
221994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Collator should be using decomposition", c.equals("\u212B",
222994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				"\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL LETTER A WITH
223994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		// RING ABOVE"
224994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Should not be equal under canonical decomposition", !c
225994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				.equals("\u2163", "IV")); // roman number "IV"
226994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		c.setDecomposition(Collator.FULL_DECOMPOSITION);
227994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Should be equal under full decomposition", c.equals(
228994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				"\u2163", "IV")); // roman number "IV"
229994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
230994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
231994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_setStrengthI() {
232994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue("Used to test", true);
233994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
234994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes}
235