From b6cd1cddebe177ecdfc384ab0af368e427d00a03 Mon Sep 17 00:00:00 2001 From: Norbert Runge Date: Wed, 19 Jul 2017 17:13:03 +0000 Subject: [PATCH] ICU-13243 enables and re-arranges a test case disabled during JUnit migration. X-SVN-Rev: 40269 --- .../translit/IncrementalProgressTest.java | 93 +++++++++++++++++++ .../dev/test/translit/TransliteratorTest.java | 80 +--------------- 2 files changed, 97 insertions(+), 76 deletions(-) create mode 100644 icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java new file mode 100644 index 00000000000..a58401a81d9 --- /dev/null +++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java @@ -0,0 +1,93 @@ +// © 2017 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +package com.ibm.icu.dev.test.translit; + +import java.util.Enumeration; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import com.ibm.icu.dev.test.TestFmwk; +import com.ibm.icu.impl.UtilityExtensions; +import com.ibm.icu.text.Replaceable; +import com.ibm.icu.text.ReplaceableString; +import com.ibm.icu.text.Transliterator; + +// Check to see that incremental gets at least part way through a reasonable string. +@RunWith(Parameterized.class) +public class IncrementalProgressTest extends TestFmwk { + private String lang; + private String text; + + public IncrementalProgressTest(String lang, String text){ + this.lang = lang; + this.text = text; + } + + @Parameterized.Parameters + public static String[][] testData(){ + String latinTest = "The Quick Brown Fox."; + String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest); + String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest); + // Labels have to be valid transliterator source names. + String[][] tests = { + {"Any", latinTest}, + {"Latin", latinTest}, + {"Halfwidth", latinTest}, + {"Devanagari", devaTest}, + {"Katakana", kataTest}, + }; + return tests; + } + + public void CheckIncrementalAux(Transliterator t, String input) { + Replaceable test = new ReplaceableString(input); + Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length()); + t.transliterate(test, pos); + boolean gotError = false; + + // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X? + if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) { + errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); + gotError = true; + } else { + logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); + } + t.finishTransliteration(test, pos); + if (pos.start != pos.limit) { + errln("Incomplete, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); + gotError = true; + } + if(!gotError){ + //errln("FAIL: Did not get expected error"); + } + } + + @Test + public void TestIncrementalProgress() { + Enumeration targets = Transliterator.getAvailableTargets(this.lang); + while(targets.hasMoreElements()) { + String target = (String) targets.nextElement(); + Enumeration variants = Transliterator.getAvailableVariants(this.lang, target); + while(variants.hasMoreElements()) { + String variant = (String) variants.nextElement(); + String id = this.lang + "-" + target + "/" + variant; + logln("id: " + id); + + Transliterator t = Transliterator.getInstance(id); + CheckIncrementalAux(t, text); + + String rev = t.transliterate(text); + + // Special treatment: This transliterator has no registered inverse, skip for now. + if (id.equals("Devanagari-Arabic/")) + continue; + + Transliterator inv = t.getInverse(); + CheckIncrementalAux(inv, rev); + } + } + } + +} \ No newline at end of file diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java index a53ea50e58b..dd48b7ff6fa 100644 --- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java +++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java @@ -17,7 +17,6 @@ import java.util.List; import java.util.Locale; import java.util.Map.Entry; -import org.junit.Ignore; import org.junit.Test; import com.ibm.icu.dev.test.TestFmwk; @@ -144,6 +143,10 @@ public class TransliteratorTest extends TestFmwk { String id = (String) e.nextElement(); checkRegistry(id); } + // Need to remove these test-specific transliterators in order not to interfere with other tests. + Transliterator.unregister("foo3"); + Transliterator.unregister("foo2"); + Transliterator.unregister("foo1"); } private void checkRegistry (String id, String rules) { @@ -2794,81 +2797,6 @@ public class TransliteratorTest extends TestFmwk { } } - // Check to see that incremental gets at least part way through a reasonable string. - // TODO(junit): should be working - also should be converted to parameterized test - @Ignore - @Test - public void TestIncrementalProgress() { - String latinTest = "The Quick Brown Fox."; - String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest); - String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest); - String[][] tests = { - {"Any", latinTest}, - {"Latin", latinTest}, - {"Halfwidth", latinTest}, - {"Devanagari", devaTest}, - {"Katakana", kataTest}, - }; - - Enumeration sources = Transliterator.getAvailableSources(); - while(sources.hasMoreElements()) { - String source = (String) sources.nextElement(); - String test = findMatch(source, tests); - if (test == null) { - logln("Skipping " + source + "-X"); - continue; - } - Enumeration targets = Transliterator.getAvailableTargets(source); - while(targets.hasMoreElements()) { - String target = (String) targets.nextElement(); - Enumeration variants = Transliterator.getAvailableVariants(source, target); - while(variants.hasMoreElements()) { - String variant = (String) variants.nextElement(); - String id = source + "-" + target + "/" + variant; - logln("id: " + id); - - Transliterator t = Transliterator.getInstance(id); - CheckIncrementalAux(t, test); - - String rev = t.transliterate(test); - Transliterator inv = t.getInverse(); - CheckIncrementalAux(inv, rev); - } - } - } - } - - public String findMatch (String source, String[][] pairs) { - for (int i = 0; i < pairs.length; ++i) { - if (source.equalsIgnoreCase(pairs[i][0])) return pairs[i][1]; - } - return null; - } - - public void CheckIncrementalAux(Transliterator t, String input) { - - Replaceable test = new ReplaceableString(input); - Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length()); - t.transliterate(test, pos); - boolean gotError = false; - - // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X? - - if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) { - errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); - gotError = true; - } else { - logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); - } - t.finishTransliteration(test, pos); - if (pos.start != pos.limit) { - errln("Incomplete, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); - gotError = true; - } - if(!gotError){ - //errln("FAIL: Did not get expected error"); - } - } @Test public void TestFunction() { -- 2.40.0