1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Copyright (C) 2001-2010, International Business Machines Corporation and * 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * others. All Rights Reserved. * 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.translit; 11f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 12f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 13aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.dev.test.TestFmwk; 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.ReplaceableString; 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.Transliterator; 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.UnicodeSet; 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @test 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @summary Error condition test of Transliterator 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class ErrorTest extends TestFmwk { 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 24f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestTransliteratorErrors() { 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String trans = "Latin-Greek"; 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String bogusID = "LATINGREEK-GREEKLATIN"; 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String newID = "Bogus-Latin"; 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String newIDRules = "zzz > Z; f <> ph"; 30aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String bogusRules = "a } [b-g m-p "; 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ReplaceableString testString = 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new ReplaceableString("A quick fox jumped over the lazy dog."); 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String insertString = "cats and dogs"; 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int stoppedAt = 0, len; 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.Position pos = new Transliterator.Position(); 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t = 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.getInstance(trans, Transliterator.FORWARD); 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (t == null) { 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: construction of Latin-Greek"); 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return; 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin len = testString.length(); 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin stoppedAt = t.transliterate(testString, 0, 100); 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (stoppedAt != -1) { 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Out of bounds check failed (1)."); 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (testString.length() != len) { 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin testString = 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new ReplaceableString("A quick fox jumped over the lazy dog."); 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Transliterate fails and the target string was modified."); 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin stoppedAt = t.transliterate(testString, 100, testString.length() - 1); 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (stoppedAt != -1) { 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Out of bounds check failed (2)."); 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (testString.length() != len) { 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin testString = 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new ReplaceableString("A quick fox jumped over the lazy dog."); 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Transliterate fails and the target string was modified."); 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.start = 100; 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.limit = testString.length(); 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.transliterate(testString, pos); 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Start offset is out of bounds, error not reported."); 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Start offset is out of bounds and detected."); 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.limit = 100; 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.start = 0; 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.transliterate(testString, pos); 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Limit offset is out of bounds, error not reported.\n"); 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Start offset is out of bounds and detected."); 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin len = pos.contextLimit = testString.length(); 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.contextStart = 0; 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.limit = len - 1; 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.start = 5; 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.transliterate(testString, pos, insertString); 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (len == pos.limit) { 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Test insertion with string: the transliteration position limit didn't change as expected."); 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Insertion test with string failed for some reason."); 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.contextStart = 0; 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.contextLimit = testString.length(); 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.limit = testString.length() - 1; 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.start = 5; 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.transliterate(testString, pos, 0x0061); 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (len == pos.limit) { 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Test insertion with character: the transliteration position limit didn't change as expected."); 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Insertion test with UTF-16 code point failed for some reason."); 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin len = pos.limit = testString.length(); 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.contextStart = 0; 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.contextLimit = testString.length() - 1; 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos.start = 5; 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.transliterate(testString, pos, insertString); 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Out of bounds check failed (3)."); 108aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (testString.length() != len) { 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: The input string was modified though the offsets were out of bounds."); 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Insertion test with out of bounds indexes."); 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t1 = null; 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t1 = Transliterator.getInstance(bogusID, Transliterator.FORWARD); 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (t1 != null) { 118aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\""); 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 121aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //try { // unneeded - Exception cannot be thrown 124aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t2 = 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.createFromRules( 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin newID, 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin newIDRules, 128aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.FORWARD); 129aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t3 = t2.getInverse(); 131aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: The newID transliterator was not registered so createInverse should fail."); 132aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (t3 != null) { 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: The newID transliterator was not registered so createInverse should fail."); 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (Exception e) { 136aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 137aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //} catch (Exception e) { } 138aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 139aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t4 = 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.createFromRules( 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin newID, 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bogusRules, 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.FORWARD); 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (t4 != null) { 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: The rules is malformed but error was not reported."); 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 147aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (Exception e) { 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 151f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 152aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestUnicodeSetErrors() { 153aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String badPattern = "[[:L:]-[0x0300-0x0400]"; 154aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet set = new UnicodeSet(); 155aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //String result; 156aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 157aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!set.isEmpty()) { 158aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: The default ctor of UnicodeSet created a non-empty object."); 159aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 160aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 161aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin set.applyPattern(badPattern); 162aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Applied a bad pattern to the UnicodeSet object okay."); 163aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 164aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Test applying with the bad pattern."); 165aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 166aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 167aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new UnicodeSet(badPattern); 168aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Created a UnicodeSet based on bad patterns."); 169aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 170aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Test constructing with the bad pattern."); 171aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 172aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 173aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 174aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// public void TestUniToHexErrors() { 175aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// Transliterator t = null; 176aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// try { 177aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new UnicodeToHexTransliterator("", true, null); 178aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// if (t != null) { 179aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern."); 180aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 181aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } catch (IllegalArgumentException e) { 182aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 183aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// try { 184aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new UnicodeToHexTransliterator("\\x", true, null); 185aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// if (t != null) { 186aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern."); 187aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 188aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } catch (IllegalArgumentException e) { 189aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 190aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new UnicodeToHexTransliterator(); 191aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// try { 192aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// ((UnicodeToHexTransliterator) t).applyPattern("\\x"); 193aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// errln("FAIL: UnicodeToHexTransliterator::applyPattern succeeded with a bad pattern."); 194aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } catch (Exception e) { 195aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 196aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 197aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 198f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 199aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestRBTErrors() { 200aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 201aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String rules = "ab>y"; 202aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String id = "MyRandom-YReverse"; 203aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String goodPattern = "[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */ 204aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet set = null; 205aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 206aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin set = new UnicodeSet(goodPattern); 207aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 208aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator t = 209aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.createFromRules(id, rules, Transliterator.REVERSE); 210aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t.setFilter(set); 211aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.registerClass(id, t.getClass(), null); 212aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.unregister(id); 213aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 214aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Transliterator.getInstance(id, Transliterator.REVERSE); 215aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: construction of unregistered ID should have failed."); 216aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 217aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 218aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 219aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Was not able to create a good RBT to test registration."); 220aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 221aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 222aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns."); 223aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return; 224aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 225aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 226aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 227aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// public void TestHexToUniErrors() { 228aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// Transliterator t = null; 229aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// //try { // unneeded - exception cannot be thrown 230aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new HexToUnicodeTransliterator("", null); 231aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// //} catch (Exception e) { 232aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// // errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern."); 233aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// //} 234aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// try { 235aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new HexToUnicodeTransliterator("\\x", null); 236aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern."); 237aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } catch (IllegalArgumentException e) { 238aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 239aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// 240aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// t = new HexToUnicodeTransliterator(); 241aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// try { 242aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// ((HexToUnicodeTransliterator) t).applyPattern("\\x"); 243aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// errln("FAIL: HexToUnicodeTransliterator::applyPattern succeeded with a bad pattern."); 244aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } catch (IllegalArgumentException e) { 245aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 246aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin// } 247aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 248