105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert/* GENERATED SOURCE. DO NOT MODIFY. */ 205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert// © 2017 and later: Unicode, Inc. and others. 305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 405fa7802d0874812c234a29745586677ee5837eaFredrik Roubertpackage android.icu.dev.test.translit; 505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 605fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport java.util.Enumeration; 705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 805fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.Test; 905fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runner.RunWith; 1005fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runners.Parameterized; 1105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 1205fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.dev.test.TestFmwk; 1305fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.impl.UtilityExtensions; 1405fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.text.Replaceable; 1505fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.text.ReplaceableString; 1605fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.text.Transliterator; 1705fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.testsharding.MainTestShard; 1805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 1905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert// Check to see that incremental gets at least part way through a reasonable string. 2005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert@MainTestShard 2105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert@RunWith(Parameterized.class) 2205fa7802d0874812c234a29745586677ee5837eaFredrik Roubertpublic class IncrementalProgressTest extends TestFmwk { 2305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert private String lang; 2405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert private String text; 2505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 2605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public IncrementalProgressTest(String lang, String text){ 2705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert this.lang = lang; 2805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert this.text = text; 2905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 3005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 3105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert @Parameterized.Parameters 3205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public static String[][] testData(){ 3305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String latinTest = "The Quick Brown Fox."; 3405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest); 3505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest); 3605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // Labels have to be valid transliterator source names. 3705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String[][] tests = { 3805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert {"Any", latinTest}, 3905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert {"Latin", latinTest}, 4005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert {"Halfwidth", latinTest}, 4105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert {"Devanagari", devaTest}, 4205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert {"Katakana", kataTest}, 4305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert }; 4405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert return tests; 4505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 4605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 4705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public void CheckIncrementalAux(Transliterator t, String input) { 4805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Replaceable test = new ReplaceableString(input); 4905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length()); 5005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert t.transliterate(test, pos); 5105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert boolean gotError = false; 5205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 5305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X? 5405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) { 5505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 5605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert gotError = true; 5705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } else { 5805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 5905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 6005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert t.finishTransliteration(test, pos); 6105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert if (pos.start != pos.limit) { 6205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert errln("Incomplete, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos)); 6305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert gotError = true; 6405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 6505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert if(!gotError){ 6605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert //errln("FAIL: Did not get expected error"); 6705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 6805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 6905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 7005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert @Test 7105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public void TestIncrementalProgress() { 7205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Enumeration targets = Transliterator.getAvailableTargets(this.lang); 7305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert while(targets.hasMoreElements()) { 7405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String target = (String) targets.nextElement(); 7505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Enumeration variants = Transliterator.getAvailableVariants(this.lang, target); 7605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert while(variants.hasMoreElements()) { 7705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String variant = (String) variants.nextElement(); 7805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String id = this.lang + "-" + target + "/" + variant; 7905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert logln("id: " + id); 8005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 8105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Transliterator t = Transliterator.getInstance(id); 8205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert CheckIncrementalAux(t, text); 8305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 8405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert String rev = t.transliterate(text); 8505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 8605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // Special treatment: This transliterator has no registered inverse, skip for now. 8705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert if (id.equals("Devanagari-Arabic/")) 8805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert continue; 8905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 9005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert Transliterator inv = t.getInverse(); 9105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert CheckIncrementalAux(inv, rev); 9205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 9305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 9405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 9505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 9605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert}