1/* GENERATED SOURCE. DO NOT MODIFY. */ 2// © 2017 and later: Unicode, Inc. and others. 3// License & terms of use: http://www.unicode.org/copyright.html#License 4package android.icu.dev.test.translit; 5 6import java.util.Enumeration; 7 8import org.junit.Test; 9import org.junit.runner.RunWith; 10import org.junit.runners.Parameterized; 11 12import android.icu.dev.test.TestFmwk; 13import android.icu.impl.UtilityExtensions; 14import android.icu.text.Replaceable; 15import android.icu.text.ReplaceableString; 16import android.icu.text.Transliterator; 17import android.icu.testsharding.MainTestShard; 18 19// Check to see that incremental gets at least part way through a reasonable string. 20@MainTestShard 21@RunWith(Parameterized.class) 22public class IncrementalProgressTest extends TestFmwk { 23 private String lang; 24 private String text; 25 26 public IncrementalProgressTest(String lang, String text){ 27 this.lang = lang; 28 this.text = text; 29 } 30 31 @Parameterized.Parameters 32 public static String[][] testData(){ 33 String latinTest = "The Quick Brown Fox."; 34 String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest); 35 String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest); 36 // Labels have to be valid transliterator source names. 37 String[][] tests = { 38 {"Any", latinTest}, 39 {"Latin", latinTest}, 40 {"Halfwidth", latinTest}, 41 {"Devanagari", devaTest}, 42 {"Katakana", kataTest}, 43 }; 44 return tests; 45 } 46 47 public void CheckIncrementalAux(Transliterator t, String input) { 48 Replaceable test = new ReplaceableString(input); 49 Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length()); 50 t.transliterate(test, pos); 51 boolean gotError = false; 52 53 // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X? 54 if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) { 55 errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 56 gotError = true; 57 } else { 58 logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 59 } 60 t.finishTransliteration(test, pos); 61 if (pos.start != pos.limit) { 62 errln("Incomplete, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 63 gotError = true; 64 } 65 if(!gotError){ 66 //errln("FAIL: Did not get expected error"); 67 } 68 } 69 70 @Test 71 public void TestIncrementalProgress() { 72 Enumeration targets = Transliterator.getAvailableTargets(this.lang); 73 while(targets.hasMoreElements()) { 74 String target = (String) targets.nextElement(); 75 Enumeration variants = Transliterator.getAvailableVariants(this.lang, target); 76 while(variants.hasMoreElements()) { 77 String variant = (String) variants.nextElement(); 78 String id = this.lang + "-" + target + "/" + variant; 79 logln("id: " + id); 80 81 Transliterator t = Transliterator.getInstance(id); 82 CheckIncrementalAux(t, text); 83 84 String rev = t.transliterate(text); 85 86 // Special treatment: This transliterator has no registered inverse, skip for now. 87 if (id.equals("Devanagari-Arabic/")) 88 continue; 89 90 Transliterator inv = t.getInverse(); 91 CheckIncrementalAux(inv, rev); 92 } 93 } 94 } 95 96}