12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others. 22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2001-2010, International Business Machines Corporation and * 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.translit; 102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport org.junit.Test; 112d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.ReplaceableString; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.Transliterator; 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.UnicodeSet; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @test 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @summary Error condition test of Transliterator 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class ErrorTest extends TestFmwk { 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 232d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Test 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestTransliteratorErrors() { 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String trans = "Latin-Greek"; 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String bogusID = "LATINGREEK-GREEKLATIN"; 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String newID = "Bogus-Latin"; 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String newIDRules = "zzz > Z; f <> ph"; 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String bogusRules = "a } [b-g m-p "; 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ReplaceableString testString = 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new ReplaceableString("A quick fox jumped over the lazy dog."); 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String insertString = "cats and dogs"; 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int stoppedAt = 0, len; 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.Position pos = new Transliterator.Position(); 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t = 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.getInstance(trans, Transliterator.FORWARD); 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (t == null) { 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: construction of Latin-Greek"); 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert len = testString.length(); 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert stoppedAt = t.transliterate(testString, 0, 100); 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (stoppedAt != -1) { 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Out of bounds check failed (1)."); 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (testString.length() != len) { 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new ReplaceableString("A quick fox jumped over the lazy dog."); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Transliterate fails and the target string was modified."); 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert stoppedAt = t.transliterate(testString, 100, testString.length() - 1); 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (stoppedAt != -1) { 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Out of bounds check failed (2)."); 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (testString.length() != len) { 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new ReplaceableString("A quick fox jumped over the lazy dog."); 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Transliterate fails and the target string was modified."); 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.start = 100; 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.limit = testString.length(); 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.transliterate(testString, pos); 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Start offset is out of bounds, error not reported."); 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Start offset is out of bounds and detected."); 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.limit = 100; 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.start = 0; 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.transliterate(testString, pos); 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Limit offset is out of bounds, error not reported.\n"); 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Start offset is out of bounds and detected."); 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert len = pos.contextLimit = testString.length(); 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.contextStart = 0; 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.limit = len - 1; 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.start = 5; 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.transliterate(testString, pos, insertString); 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (len == pos.limit) { 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Test insertion with string: the transliteration position limit didn't change as expected."); 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Insertion test with string failed for some reason."); 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.contextStart = 0; 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.contextLimit = testString.length(); 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.limit = testString.length() - 1; 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.start = 5; 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.transliterate(testString, pos, 0x0061); 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (len == pos.limit) { 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Test insertion with character: the transliteration position limit didn't change as expected."); 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Insertion test with UTF-16 code point failed for some reason."); 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert len = pos.limit = testString.length(); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.contextStart = 0; 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.contextLimit = testString.length() - 1; 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert pos.start = 5; 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.transliterate(testString, pos, insertString); 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Out of bounds check failed (3)."); 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (testString.length() != len) { 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: The input string was modified though the offsets were out of bounds."); 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Insertion test with out of bounds indexes."); 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t1 = null; 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t1 = Transliterator.getInstance(bogusID, Transliterator.FORWARD); 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (t1 != null) { 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\""); 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //try { // unneeded - Exception cannot be thrown 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t2 = 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.createFromRules( 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert newID, 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert newIDRules, 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.FORWARD); 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t3 = t2.getInverse(); 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: The newID transliterator was not registered so createInverse should fail."); 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (t3 != null) { 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: The newID transliterator was not registered so createInverse should fail."); 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (Exception e) { 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //} catch (Exception e) { } 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t4 = 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.createFromRules( 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert newID, 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bogusRules, 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.FORWARD); 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (t4 != null) { 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: The rules is malformed but error was not reported."); 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (Exception e) { 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1502d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Test 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestUnicodeSetErrors() { 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String badPattern = "[[:L:]-[0x0300-0x0400]"; 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert UnicodeSet set = new UnicodeSet(); 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //String result; 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!set.isEmpty()) { 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: The default ctor of UnicodeSet created a non-empty object."); 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert set.applyPattern(badPattern); 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Applied a bad pattern to the UnicodeSet object okay."); 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Test applying with the bad pattern."); 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new UnicodeSet(badPattern); 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Created a UnicodeSet based on bad patterns."); 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Test constructing with the bad pattern."); 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// public void TestUniToHexErrors() { 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// Transliterator t = null; 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// try { 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new UnicodeToHexTransliterator("", true, null); 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// if (t != null) { 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern."); 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } catch (IllegalArgumentException e) { 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// try { 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new UnicodeToHexTransliterator("\\x", true, null); 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// if (t != null) { 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern."); 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } catch (IllegalArgumentException e) { 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new UnicodeToHexTransliterator(); 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// try { 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// ((UnicodeToHexTransliterator) t).applyPattern("\\x"); 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// errln("FAIL: UnicodeToHexTransliterator::applyPattern succeeded with a bad pattern."); 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } catch (Exception e) { 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1972d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Test 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestRBTErrors() { 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String rules = "ab>y"; 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String id = "MyRandom-YReverse"; 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String goodPattern = "[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */ 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert UnicodeSet set = null; 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert set = new UnicodeSet(goodPattern); 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator t = 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.createFromRules(id, rules, Transliterator.REVERSE); 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert t.setFilter(set); 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.registerClass(id, t.getClass(), null); 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.unregister(id); 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Transliterator.getInstance(id, Transliterator.REVERSE); 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: construction of unregistered ID should have failed."); 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Was not able to create a good RBT to test registration."); 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (IllegalArgumentException e) { 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns."); 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// public void TestHexToUniErrors() { 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// Transliterator t = null; 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// //try { // unneeded - exception cannot be thrown 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new HexToUnicodeTransliterator("", null); 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// //} catch (Exception e) { 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// // errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern."); 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// //} 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// try { 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new HexToUnicodeTransliterator("\\x", null); 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern."); 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } catch (IllegalArgumentException e) { 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// t = new HexToUnicodeTransliterator(); 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// try { 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// ((HexToUnicodeTransliterator) t).applyPattern("\\x"); 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// errln("FAIL: HexToUnicodeTransliterator::applyPattern succeeded with a bad pattern."); 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } catch (IllegalArgumentException e) { 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// } 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 247