Home | History | Annotate | Download | only in translit
      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
      4 package android.icu.dev.test.translit;
      5 
      6 import java.util.Enumeration;
      7 
      8 import org.junit.Test;
      9 import org.junit.runner.RunWith;
     10 import org.junit.runners.Parameterized;
     11 
     12 import android.icu.dev.test.TestFmwk;
     13 import android.icu.impl.UtilityExtensions;
     14 import android.icu.text.Replaceable;
     15 import android.icu.text.ReplaceableString;
     16 import android.icu.text.Transliterator;
     17 import 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)
     22 public 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 }