1994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes/* 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 874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes * 9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 1074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes * 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, WITHOUT 13994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * License for the specific language governing permissions and limitations under 15994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * the License. 16994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes */ 17994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 18994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespackage org.apache.harmony.tests.java.text; 19994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 20994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.CharacterIterator; 21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.CollationElementIterator; 22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.CollationKey; 23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.Collator; 24994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ParseException; 25994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.RuleBasedCollator; 26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.StringCharacterIterator; 27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Locale; 28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport junit.framework.TestCase; 30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class RuleBasedCollatorTest extends TestCase { 32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 3374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void test_getCollationKeyLjava_lang_String() throws Exception { 3474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes // Regression test for HARMONY-28 3574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String source = null; 3655dfcd8b9609f112b0542af6a705080d98e00d2accornelius String Simple = "&9 < a< b< c< d"; 3774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator rbc = new RuleBasedCollator(Simple); 3874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationKey ck = rbc.getCollationKey(source); 3974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertNull("Assert 1: getCollationKey (null) does not return null", ck); 4074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 4174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 4274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testHashCode() throws ParseException { 4374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 4455dfcd8b9609f112b0542af6a705080d98e00d2accornelius String rule = "&9 < a < b < c < d"; 4574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = new RuleBasedCollator(rule); 4674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(rule.hashCode(), coll.hashCode()); 47994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 48994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 4974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 5055dfcd8b9609f112b0542af6a705080d98e00d2accornelius String rule = "&9 < a < b < c < d < e"; 5174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = new RuleBasedCollator(rule); 5274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(rule.hashCode(), coll.hashCode()); 53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 5474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 5574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 5674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testClone() throws ParseException { 5774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(Locale.US); 5874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator clone = (RuleBasedCollator) coll.clone(); 5974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertNotSame(coll, clone); 6074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(coll.getRules(), clone.getRules()); 6174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(coll.getDecomposition(), clone.getDecomposition()); 6274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(coll.getStrength(), clone.getStrength()); 6374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 6474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 6574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testEqualsObject() throws ParseException { 6655dfcd8b9609f112b0542af6a705080d98e00d2accornelius String rule = "&9 < a < b < c < d < e"; 6774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = new RuleBasedCollator(rule); 6874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 6974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(Collator.TERTIARY, coll.getStrength()); 7074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(Collator.NO_DECOMPOSITION, coll.getDecomposition()); 7174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator other = new RuleBasedCollator(rule); 7274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertTrue(coll.equals(other)); 7374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 7474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes coll.setStrength(Collator.PRIMARY); 7574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertFalse(coll.equals(other)); 7674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 7774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes coll.setStrength(Collator.TERTIARY); 7874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION); 7974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertFalse(coll.equals(other)); 8074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 8174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 8274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testCompareStringString() throws ParseException { 8355dfcd8b9609f112b0542af6a705080d98e00d2accornelius String rule = "&9 < c < b < a"; 8474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = new RuleBasedCollator(rule); 8574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(-1, coll.compare("c", "a")); 8674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 8774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 8874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testGetCollationKey() { 8974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(Locale.GERMAN); 9074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String source = "abc"; 9174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationKey key1 = coll.getCollationKey(source); 9274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(source, key1.getSourceString()); 9374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String source2 = "abb"; 9474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationKey key2 = coll.getCollationKey(source2); 9574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(source2, key2.getSourceString()); 9674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertTrue(key1.compareTo(key2) > 0); 9774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertTrue(coll.compare(source, source2) > 0); 9874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 9974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 10074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testGetRules() throws ParseException { 10155dfcd8b9609f112b0542af6a705080d98e00d2accornelius String rule = "&9 < a = b < c"; 10274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = new RuleBasedCollator(rule); 10374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(rule, coll.getRules()); 10474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 10574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 10674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testGetCollationElementIteratorString() throws Exception { 10774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 108ee7d0c5bfcc6891034eaea0fa4a9571ffde5d2aeNarayan Kamath Locale locale = Locale.forLanguageTag("es-u-co-trad"); 10974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale); 11074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String source = "cha"; 11174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationElementIterator iterator = coll.getCollationElementIterator(source); 11274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int[] e_offset = { 0, 2, 3 }; 11374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int offset = iterator.getOffset(); 11474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int i = 0; 11574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 11674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes while (offset != source.length()) { 11774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes iterator.next(); 11874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes offset = iterator.getOffset(); 11974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 12074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 12174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(CollationElementIterator.NULLORDER, iterator.next()); 122994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 123994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 12474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 12574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Locale locale = new Locale("de", "DE"); 12674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale); 12774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String source = "\u00fcb"; 12874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationElementIterator iterator = coll.getCollationElementIterator(source); 12974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int[] e_offset = { 0, 1, 1, 2 }; 13074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int offset = iterator.getOffset(); 13174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int i = 0; 13274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 13374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes while (offset != source.length()) { 13474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes iterator.next(); 13574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes offset = iterator.getOffset(); 13674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 13774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 13874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(CollationElementIterator.NULLORDER, iterator.next()); 139994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 14074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes //Regression for HARMONY-1352 14174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes try { 14255dfcd8b9609f112b0542af6a705080d98e00d2accornelius new RuleBasedCollator("&9 < a< b< c< d").getCollationElementIterator((String)null); 14374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 14474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 145994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 14674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 14774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 14874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testGetCollationElementIteratorCharacterIterator() throws Exception { 14974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 150ee7d0c5bfcc6891034eaea0fa4a9571ffde5d2aeNarayan Kamath Locale locale = Locale.forLanguageTag("es-u-co-trad"); 15174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale); 15274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String text = "cha"; 15374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes StringCharacterIterator source = new StringCharacterIterator(text); 15474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationElementIterator iterator = coll.getCollationElementIterator(source); 15574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int[] e_offset = { 0, 2, 3 }; 15674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int offset = iterator.getOffset(); 15774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int i = 0; 15874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 15974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes while (offset != text.length()) { 16074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes iterator.next(); 16174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes offset = iterator.getOffset(); 16274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes // System.out.println(offset); 16374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 16474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 16574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(CollationElementIterator.NULLORDER, iterator.next()); 166994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 167994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 16874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes { 16974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Locale locale = new Locale("de", "DE"); 17074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale); 17174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String text = "\u00fcb"; 17274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes StringCharacterIterator source = new StringCharacterIterator(text); 17374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationElementIterator iterator = coll.getCollationElementIterator(source); 17474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int[] e_offset = { 0, 1, 1, 2 }; 17574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int offset = iterator.getOffset(); 17674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes int i = 0; 17774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 17874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes while (offset != text.length()) { 17974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes iterator.next(); 18074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes offset = iterator.getOffset(); 18174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(e_offset[i++], offset); 18274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 18374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(CollationElementIterator.NULLORDER, iterator.next()); 184994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 18574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes //Regression for HARMONY-1352 18674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes try { 18755dfcd8b9609f112b0542af6a705080d98e00d2accornelius new RuleBasedCollator("&9 < a< b< c< d").getCollationElementIterator((CharacterIterator)null); 18874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 18974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 190994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 19174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 192994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 19374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testStrength() { 19474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(Locale.US); 19574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes for (int i = 0; i < 4; i++) { 19674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes coll.setStrength(i); 19774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(i, coll.getStrength()); 198994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 19974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 200994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 20174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testDecomposition() { 20274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(Locale.US); 20374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes for (int i = 0; i < 2; i++) { 20474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes coll.setDecomposition(i); 20574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(i, coll.getDecomposition()); 206994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 20774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 20874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 20974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testCollator_GetInstance() { 21074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Collator coll = Collator.getInstance(); 21174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Object obj1 = "a"; 21274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Object obj2 = "b"; 21374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(-1, coll.compare(obj1, obj2)); 21474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 21574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Collator.getInstance(); 21674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertFalse(coll.equals("A", "\uFF21")); 21774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 21874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 21974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testGetAvailableLocales() { 22074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertTrue(Collator.getAvailableLocales().length > 0); 22174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 22274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 22374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes // Test CollationKey 22474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testCollationKey() { 22574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Collator coll = Collator.getInstance(Locale.US); 22674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String text = "abc"; 22774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationKey key = coll.getCollationKey(text); 22874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes key.hashCode(); 22974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 23074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes CollationKey key2 = coll.getCollationKey("abc"); 23174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 23274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(0, key.compareTo(key2)); 23374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 23474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 23574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testNullPointerException() throws Exception { 23674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes //Regression for HARMONY-241 23774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes try { 23874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes new RuleBasedCollator(null); 23974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 24074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 241994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 24274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 24374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 24474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes public void testCompareNull() throws Exception { 24574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes //Regression for HARMONY-836 24674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes try { 24755dfcd8b9609f112b0542af6a705080d98e00d2accornelius new RuleBasedCollator("&9 < a").compare(null, null); 24874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 24974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 250994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 25174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 25274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 2533e3ea7374ec174050c91066bf2e3b154bffd4e96Elliott Hughes public void testEmptyRules() throws Exception { 2543e3ea7374ec174050c91066bf2e3b154bffd4e96Elliott Hughes new RuleBasedCollator(""); 2553e3ea7374ec174050c91066bf2e3b154bffd4e96Elliott Hughes new RuleBasedCollator(" "); 2563e3ea7374ec174050c91066bf2e3b154bffd4e96Elliott Hughes new RuleBasedCollator("# This is a comment."); 25774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 258994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes} 259