public void TestPiecemeal() { String hangul = "\uBC0F"; String jamo = nameToJamo("(Mi)(I)(Cf)"); String latin = "mic"; String latin2 = "mich"; Transliterator t = null; t = Transliterator.GetInstance("NFD"); // was Hangul-Jamo TransliteratorTest.Expect(t, hangul, jamo); t = Transliterator.GetInstance("NFC"); // was Jamo-Hangul TransliteratorTest.Expect(t, jamo, hangul); t = Transliterator.GetInstance("Latin-Jamo"); TransliteratorTest.Expect(t, latin, jamo); t = Transliterator.GetInstance("Jamo-Latin"); TransliteratorTest.Expect(t, jamo, latin2); t = Transliterator.GetInstance("Hangul-Latin"); TransliteratorTest.Expect(t, hangul, latin2); t = Transliterator.GetInstance("Latin-Hangul"); TransliteratorTest.Expect(t, latin, hangul); t = Transliterator.GetInstance("Hangul-Latin; Latin-Jamo"); TransliteratorTest.Expect(t, hangul, jamo); t = Transliterator.GetInstance("Jamo-Latin; Latin-Hangul"); TransliteratorTest.Expect(t, jamo, hangul); t = Transliterator.GetInstance("Hangul-Latin; Latin-Hangul"); TransliteratorTest.Expect(t, hangul, hangul); }
public void TestJamo() { Transliterator latinJamo = Transliterator.GetInstance("Latin-Jamo"); Transliterator jamoLatin = latinJamo.GetInverse(); String[] CASE = { // Column 1 is the latin text L1 to be fed to Latin-Jamo // to yield output J. // Column 2 is expected value of J. J is fed to // Jamo-Latin to yield output L2. // Column 3 is expected value of L2. If the expected // value of L2 is L1, then L2 is null. // add tests for the update to fix problems where it didn't follow the standard // see also http://www.unicode.org/cldr/data/charts/transforms/Latin-Hangul.html "gach", "(Gi)(A)(Cf)", null, "geumhui", "(Gi)(EU)(Mf)(Hi)(YI)", null, "choe", "(Ci)(OE)", null, "wo", "(IEUNG)(WEO)", null, "Wonpil", "(IEUNG)(WEO)(Nf)(Pi)(I)(L)", "wonpil", "GIPPEUM", "(Gi)(I)(BB)(EU)(Mf)", "gippeum", "EUTTEUM", "(IEUNG)(EU)(DD)(EU)(Mf)", "eutteum", "KKOTNAE", "(GGi)(O)(Tf)(Ni)(AE)", "kkotnae", "gaga", "(Gi)(A)(Gi)(A)", null, "gag-a", "(Gi)(A)(Gf)(IEUNG)(A)", null, "gak-ka", "(Gi)(A)(Kf)(Ki)(A)", null, "gakka", "(Gi)(A)(GGi)(A)", null, "gakk-a", "(Gi)(A)(GGf)(IEUNG)(A)", null, "gakkka", "(Gi)(A)(GGf)(Ki)(A)", null, "gak-kka", "(Gi)(A)(Kf)(GGi)(A)", null, "bab", "(Bi)(A)(Bf)", null, "babb", "(Bi)(A)(Bf)(Bi)(EU)", "babbeu", "babbba", "(Bi)(A)(Bf)(Bi)(EU)(Bi)(A)", "babbeuba", "bagg", "(Bi)(A)(Gf)(Gi)(EU)", "baggeu", "baggga", "(Bi)(A)(Gf)(Gi)(EU)(Gi)(A)", "baggeuga", //"bag"+SEP+"gga", "(Bi)(A)(Gf)"+SEP+"(Gi)(EU)(Gi)(A)", "bag"+SEP+"geuga", "kabsa", "(Ki)(A)(Bf)(Si)(A)", null, "kabska", "(Ki)(A)(BS)(Ki)(A)", null, "gabsbka", "(Gi)(A)(BS)(Bi)(EU)(Ki)(A)", "gabsbeuka", // not (Kf) "gga", "(Gi)(EU)(Gi)(A)", "geuga", "bsa", "(Bi)(EU)(Si)(A)", "beusa", "agg", "(IEUNG)(A)(Gf)(Gi)(EU)", "aggeu", "agga", "(IEUNG)(A)(Gf)(Gi)(A)", null, "la", "(R)(A)", null, "bs", "(Bi)(EU)(Sf)", "beus", "kalgga", "(Ki)(A)(L)(Gi)(EU)(Gi)(A)", "kalgeuga", // 'r' in a final position is treated like 'l' "karka", "(Ki)(A)(L)(Ki)(A)", "kalka", }; for (int i = 0; i < CASE.Length; i += 3) { String jamo = nameToJamo(CASE[i + 1]); if (CASE[i + 2] == null) { TransliteratorTest.Expect(latinJamo, CASE[i], jamo, jamoLatin); } else { // Handle case where round-trip is expected to fail TransliteratorTest.Expect(latinJamo, CASE[i], jamo); TransliteratorTest.Expect(jamoLatin, jamo, CASE[i + 2]); } } }