/* * 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); } }