diff options
Diffstat (limited to 'harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollatorTest.java')
-rw-r--r-- | harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollatorTest.java | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollatorTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollatorTest.java new file mode 100644 index 0000000..9f5d141 --- /dev/null +++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollatorTest.java @@ -0,0 +1,234 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.harmony.tests.java.text; + +import java.text.Collator; +import java.text.ParseException; +import java.text.RuleBasedCollator; +import java.util.Locale; + +public class CollatorTest extends junit.framework.TestCase { + + public void test_clone() { + Collator c = Collator.getInstance(Locale.GERMAN); + Collator c2 = (Collator) c.clone(); + assertTrue("Clones answered false to equals", c.equals(c2)); + assertTrue("Clones were equivalent", c != c2); + } + + public void test_compareLjava_lang_ObjectLjava_lang_Object() { + Collator c = Collator.getInstance(Locale.FRENCH); + Object o, o2; + + c.setStrength(Collator.IDENTICAL); + o = "E"; + o2 = "F"; + assertTrue("a) Failed on primary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "\u00e9"; + assertTrue("a) Failed on secondary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "E"; + assertTrue("a) Failed on tertiary difference", c.compare(o, o2) < 0); + o = "\u0001"; + o2 = "\u0002"; + assertTrue("a) Failed on identical", c.compare(o, o2) < 0); + o = "e"; + o2 = "e"; + assertEquals("a) Failed on equivalence", 0, c.compare(o, o2)); + assertTrue("a) Failed on primary expansion", + c.compare("\u01db", "v") < 0); + + c.setStrength(Collator.TERTIARY); + o = "E"; + o2 = "F"; + assertTrue("b) Failed on primary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "\u00e9"; + assertTrue("b) Failed on secondary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "E"; + assertTrue("b) Failed on tertiary difference", c.compare(o, o2) < 0); + o = "\u0001"; + o2 = "\u0002"; + assertEquals("b) Failed on identical", 0, c.compare(o, o2)); + o = "e"; + o2 = "e"; + assertEquals("b) Failed on equivalence", 0, c.compare(o, o2)); + + c.setStrength(Collator.SECONDARY); + o = "E"; + o2 = "F"; + assertTrue("c) Failed on primary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "\u00e9"; + assertTrue("c) Failed on secondary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "E"; + assertEquals("c) Failed on tertiary difference", 0, c.compare(o, o2)); + o = "\u0001"; + o2 = "\u0002"; + assertEquals("c) Failed on identical", 0, c.compare(o, o2)); + o = "e"; + o2 = "e"; + assertEquals("c) Failed on equivalence", 0, c.compare(o, o2)); + + c.setStrength(Collator.PRIMARY); + o = "E"; + o2 = "F"; + assertTrue("d) Failed on primary difference", c.compare(o, o2) < 0); + o = "e"; + o2 = "\u00e9"; + assertEquals("d) Failed on secondary difference", 0, c.compare(o, o2)); + o = "e"; + o2 = "E"; + assertEquals("d) Failed on tertiary difference", 0, c.compare(o, o2)); + o = "\u0001"; + o2 = "\u0002"; + assertEquals("d) Failed on identical", 0, c.compare(o, o2)); + o = "e"; + o2 = "e"; + assertEquals("d) Failed on equivalence", 0, c.compare(o, o2)); + + try { + c.compare("e", new StringBuffer("Blah")); + } catch (ClassCastException e) { + // correct + return; + } + fail("Failed to throw ClassCastException"); + } + + public void test_equalsLjava_lang_Object() { + Collator c = Collator.getInstance(Locale.ENGLISH); + Collator c2 = (Collator) c.clone(); + assertTrue("Cloned collators not equal", c.equals(c2)); + c2.setStrength(Collator.SECONDARY); + assertTrue("Collators with different strengths equal", !c.equals(c2)); + } + + public void test_equalsLjava_lang_StringLjava_lang_String() { + Collator c = Collator.getInstance(Locale.FRENCH); + + c.setStrength(Collator.IDENTICAL); + assertTrue("a) Failed on primary difference", !c.equals("E", "F")); + assertTrue("a) Failed on secondary difference", !c + .equals("e", "\u00e9")); + assertTrue("a) Failed on tertiary difference", !c.equals("e", "E")); + assertTrue("a) Failed on identical", !c.equals("\u0001", "\u0002")); + assertTrue("a) Failed on equivalence", c.equals("e", "e")); + + c.setStrength(Collator.TERTIARY); + assertTrue("b) Failed on primary difference", !c.equals("E", "F")); + assertTrue("b) Failed on secondary difference", !c + .equals("e", "\u00e9")); + assertTrue("b) Failed on tertiary difference", !c.equals("e", "E")); + assertTrue("b) Failed on identical", c.equals("\u0001", "\u0002")); + assertTrue("b) Failed on equivalence", c.equals("e", "e")); + + c.setStrength(Collator.SECONDARY); + assertTrue("c) Failed on primary difference", !c.equals("E", "F")); + assertTrue("c) Failed on secondary difference", !c + .equals("e", "\u00e9")); + assertTrue("c) Failed on tertiary difference", c.equals("e", "E")); + assertTrue("c) Failed on identical", c.equals("\u0001", "\u0002")); + assertTrue("c) Failed on equivalence", c.equals("e", "e")); + + c.setStrength(Collator.PRIMARY); + assertTrue("d) Failed on primary difference", !c.equals("E", "F")); + assertTrue("d) Failed on secondary difference", c.equals("e", "\u00e9")); + assertTrue("d) Failed on tertiary difference", c.equals("e", "E")); + assertTrue("d) Failed on identical", c.equals("\u0001", "\u0002")); + assertTrue("d) Failed on equivalence", c.equals("e", "e")); + } + + public void failing_test_getAvailableLocales() { + Locale[] locales = Collator.getAvailableLocales(); + assertTrue("No locales", locales.length > 0); + boolean english = false, german = false; + for (int i = locales.length; --i >= 0;) { + if (locales[i].equals(Locale.ENGLISH)) + english = true; + if (locales[i].equals(Locale.GERMAN)) + german = true; + // Output the working locale to help diagnose a hang + Collator c1 = Collator.getInstance(locales[i]); + assertTrue("Doesn't work", c1.compare("a", "b") < 0); + assertTrue("Wrong decomposition", + c1.getDecomposition() == Collator.NO_DECOMPOSITION); + assertTrue("Wrong strength", c1.getStrength() == Collator.TERTIARY); + if (c1 instanceof RuleBasedCollator) { + try { + new RuleBasedCollator(((RuleBasedCollator) c1).getRules()); + } catch (ParseException e) { + fail("ParseException"); + } + // assertTrue("Can't recreate: " + locales[i], temp.equals(c1)); + } + } + assertTrue("Missing locales", english && german); + } + + public void failing_test_getDecomposition() { + RuleBasedCollator collator; + try { + collator = new RuleBasedCollator("; \u0300 < a, A < b < c < d"); + } catch (ParseException e) { + fail("ParseException"); + return; + } + assertTrue("Wrong default", + collator.getDecomposition() == Collator.CANONICAL_DECOMPOSITION); + } + + public void test_getInstance() { + Collator c1 = Collator.getInstance(); + Collator c2 = Collator.getInstance(Locale.getDefault()); + assertTrue("Wrong locale", c1.equals(c2)); + } + + public void test_getInstanceLjava_util_Locale() { + assertTrue("Used to test", true); + } + + public void test_getStrength() throws ParseException { + RuleBasedCollator collator = new RuleBasedCollator("&9 ; \u0300 < a, A < b < c < d"); + assertTrue("Wrong default", collator.getStrength() == Collator.TERTIARY); + } + + public void failing_test_setDecompositionI() { + Collator c = Collator.getInstance(Locale.FRENCH); + c.setStrength(Collator.IDENTICAL); + c.setDecomposition(Collator.NO_DECOMPOSITION); + assertTrue("Collator should not be using decomposition", !c.equals( + "\u212B", "\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL + // LETTER A WITH RING ABOVE" + c.setDecomposition(Collator.CANONICAL_DECOMPOSITION); + assertTrue("Collator should be using decomposition", c.equals("\u212B", + "\u00C5")); // "ANGSTROM SIGN" and "LATIN CAPITAL LETTER A WITH + // RING ABOVE" + assertTrue("Should not be equal under canonical decomposition", !c + .equals("\u2163", "IV")); // roman number "IV" + c.setDecomposition(Collator.FULL_DECOMPOSITION); + assertTrue("Should be equal under full decomposition", c.equals( + "\u2163", "IV")); // roman number "IV" + } + + public void test_setStrengthI() { + assertTrue("Used to test", true); + } +} |