1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.text.tests.java.text;
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.Collator;
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.ParseException;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.RuleBasedCollator;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class CollatorTest extends junit.framework.TestCase {
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#clone()
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_clone() {
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c = Collator.getInstance(Locale.GERMAN);
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c2 = (Collator) c.clone();
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Clones answered false to equals", c.equals(c2));
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Clones were equivalent", c != c2);
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#compare(java.lang.Object, java.lang.Object)
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_compareLjava_lang_ObjectLjava_lang_Object() {
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object o, o2;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.IDENTICAL);
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "E";
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "F";
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on primary difference", c.compare(o, o2) < 0);
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u00e9";
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on secondary difference", c.compare(o, o2) < 0);
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "E";
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on tertiary difference", c.compare(o, o2) < 0);
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "\u0001";
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u0002";
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on identical", c.compare(o, o2) < 0);
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "e";
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("a) Failed on equivalence", 0, c.compare(o, o2));
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on primary expansion",
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				c.compare("\u01db", "v") < 0);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.TERTIARY);
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "E";
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "F";
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on primary difference", c.compare(o, o2) < 0);
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u00e9";
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on secondary difference", c.compare(o, o2) < 0);
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "E";
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on tertiary difference", c.compare(o, o2) < 0);
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "\u0001";
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u0002";
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("b) Failed on identical", 0, c.compare(o, o2));
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "e";
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("b) Failed on equivalence", 0, c.compare(o, o2));
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.SECONDARY);
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "E";
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "F";
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on primary difference", c.compare(o, o2) < 0);
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u00e9";
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on secondary difference", c.compare(o, o2) < 0);
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "E";
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("c) Failed on tertiary difference", 0, c.compare(o, o2));
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "\u0001";
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u0002";
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("c) Failed on identical", 0, c.compare(o, o2));
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "e";
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("c) Failed on equivalence", 0, c.compare(o, o2));
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.PRIMARY);
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "E";
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "F";
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on primary difference", c.compare(o, o2) < 0);
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u00e9";
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("d) Failed on secondary difference", 0, c.compare(o, o2));
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "E";
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("d) Failed on tertiary difference", 0, c.compare(o, o2));
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "\u0001";
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "\u0002";
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("d) Failed on identical", 0, c.compare(o, o2));
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o = "e";
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		o2 = "e";
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("d) Failed on equivalence", 0, c.compare(o, o2));
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.compare("e", new StringBuffer("Blah"));
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ClassCastException e) {
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// correct
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail("Failed to throw ClassCastException");
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#equals(java.lang.Object)
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_equalsLjava_lang_Object() {
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c = Collator.getInstance(Locale.ENGLISH);
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c2 = (Collator) c.clone();
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Cloned collators not equal", c.equals(c2));
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c2.setStrength(Collator.SECONDARY);
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Collators with different strengths equal", !c.equals(c2));
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#equals(java.lang.String, java.lang.String)
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_equalsLjava_lang_StringLjava_lang_String() {
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.IDENTICAL);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on primary difference", !c.equals("E", "F"));
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on secondary difference", !c
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals("e", "\u00e9"));
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on tertiary difference", !c.equals("e", "E"));
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on identical", !c.equals("\u0001", "\u0002"));
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("a) Failed on equivalence", c.equals("e", "e"));
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.TERTIARY);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on primary difference", !c.equals("E", "F"));
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on secondary difference", !c
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals("e", "\u00e9"));
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on tertiary difference", !c.equals("e", "E"));
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on identical", c.equals("\u0001", "\u0002"));
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("b) Failed on equivalence", c.equals("e", "e"));
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.SECONDARY);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on primary difference", !c.equals("E", "F"));
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on secondary difference", !c
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals("e", "\u00e9"));
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on tertiary difference", c.equals("e", "E"));
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on identical", c.equals("\u0001", "\u0002"));
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("c) Failed on equivalence", c.equals("e", "e"));
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.PRIMARY);
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on primary difference", !c.equals("E", "F"));
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on secondary difference", c.equals("e", "\u00e9"));
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on tertiary difference", c.equals("e", "E"));
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on identical", c.equals("\u0001", "\u0002"));
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("d) Failed on equivalence", c.equals("e", "e"));
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#getAvailableLocales()
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	//FIXME This test fails on Harmony ClassLibrary
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void failing_test_getAvailableLocales() {
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Locale[] locales = Collator.getAvailableLocales();
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("No locales", locales.length > 0);
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean english = false, german = false;
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = locales.length; --i >= 0;) {
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (locales[i].equals(Locale.ENGLISH))
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				english = true;
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (locales[i].equals(Locale.GERMAN))
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				german = true;
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Output the working locale to help diagnose a hang
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collator c1 = Collator.getInstance(locales[i]);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Doesn't work", c1.compare("a", "b") < 0);
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Wrong decomposition",
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					c1.getDecomposition() == Collator.NO_DECOMPOSITION);
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Wrong strength", c1.getStrength() == Collator.TERTIARY);
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (c1 instanceof RuleBasedCollator) {
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				try {
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					new RuleBasedCollator(((RuleBasedCollator) c1).getRules());
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				} catch (ParseException e) {
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					fail("ParseException");
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				// assertTrue("Can't recreate: " + locales[i], temp.equals(c1));
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Missing locales", english && german);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#getDecomposition()
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	//FIXME This test fails on Harmony ClassLibrary
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void failing_test_getDecomposition() {
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		RuleBasedCollator collator;
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			collator = new RuleBasedCollator("; \u0300 < a, A < b < c < d");
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ParseException e) {
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("ParseException");
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong default",
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				collator.getDecomposition() == Collator.CANONICAL_DECOMPOSITION);
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#getInstance()
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getInstance() {
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c1 = Collator.getInstance();
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c2 = Collator.getInstance(Locale.getDefault());
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong locale", c1.equals(c2));
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#getInstance(java.util.Locale)
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getInstanceLjava_util_Locale() {
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Used to test", true);
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#getStrength()
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getStrength() {
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		RuleBasedCollator collator;
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			collator = new RuleBasedCollator("; \u0300 < a, A < b < c < d");
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ParseException e) {
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("ParseException");
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong default", collator.getStrength() == Collator.TERTIARY);
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#setDecomposition(int)
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	//FIXME This test fails on Harmony ClassLibrary
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void failing_test_setDecompositionI() {
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collator c = Collator.getInstance(Locale.FRENCH);
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setStrength(Collator.IDENTICAL);
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setDecomposition(Collator.NO_DECOMPOSITION);
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Collator should not be using decomposition", !c.equals(
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"\u212B", "\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// LETTER A WITH RING ABOVE"
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Collator should be using decomposition", c.equals("\u212B",
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL LETTER A WITH
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// RING ABOVE"
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Should not be equal under canonical decomposition", !c
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals("\u2163", "IV")); // roman number "IV"
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c.setDecomposition(Collator.FULL_DECOMPOSITION);
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Should be equal under full decomposition", c.equals(
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"\u2163", "IV")); // roman number "IV"
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.Collator#setStrength(int)
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setStrengthI() {
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Used to test", true);
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
277