Imported Upstream version 1.7.6
[platform/upstream/harfbuzz.git] / test / api / test-ot-tag.c
index 81b6678..6fe79b4 100644 (file)
@@ -37,7 +37,7 @@ static void
 test_simple_tags (const char *s, hb_script_t script)
 {
   hb_script_t tag;
-  hb_script_t t1, t2;
+  hb_tag_t t1, t2;
 
   g_test_message ("Testing script %c%c%c%c: tag %s", HB_UNTAG (hb_script_to_iso15924_tag (script)), s);
   tag = hb_tag_from_string (s, -1);
@@ -72,7 +72,7 @@ test_indic_tags (const char *s1, const char *s2, hb_script_t script)
 static void
 test_ot_tag_script_degenerate (void)
 {
-  hb_script_t t1, t2;
+  hb_tag_t t1, t2;
 
   g_assert_cmphex (HB_TAG_CHAR4 ("DFLT"), ==, HB_OT_TAG_DEFAULT_SCRIPT);
 
@@ -132,6 +132,7 @@ test_ot_tag_script_indic (void)
   test_indic_tags ("ory2", "orya", HB_SCRIPT_ORIYA);
   test_indic_tags ("tml2", "taml", HB_SCRIPT_TAMIL);
   test_indic_tags ("tel2", "telu", HB_SCRIPT_TELUGU);
+  test_indic_tags ("mym2", "mymr", HB_SCRIPT_MYANMAR);
 }
 
 
@@ -187,24 +188,68 @@ test_ot_tag_language (void)
   test_language_two_way ("ENG", "en");
   test_tag_from_language ("ENG", "en_US");
 
+  test_language_two_way ("CJA", "cja"); /* Western Cham */
+  test_language_two_way ("CJM", "cjm"); /* Eastern Cham */
   test_language_two_way ("EVN", "eve");
 
+  test_language_two_way ("HAL", "cfm"); /* BCP47 and current ISO639-3 code for Halam/Falam Chin */
+  test_tag_from_language ("HAL", "flm"); /* Retired ISO639-3 code for Halam/Falam Chin */
+
+  test_tag_from_language ("QIN", "bgr"); /* Bawm Chin */
+  test_tag_from_language ("QIN", "cbl"); /* Bualkhaw Chin */
+  test_tag_from_language ("QIN", "cka"); /* Khumi Awa Chin */
+  test_tag_from_language ("QIN", "cmr"); /* Mro-Khimi Chin */
+  test_tag_from_language ("QIN", "cnb"); /* Chinbon Chin */
+  test_tag_from_language ("QIN", "cnh"); /* Hakha Chin */
+  test_tag_from_language ("QIN", "cnk"); /* Khumi Chin */
+  test_tag_from_language ("QIN", "cnw"); /* Ngawn Chin */
+  test_tag_from_language ("QIN", "csh"); /* Asho Chin */
+  test_tag_from_language ("QIN", "csy"); /* Siyin Chin */
+  test_tag_from_language ("QIN", "ctd"); /* Tedim Chin */
+  test_tag_from_language ("QIN", "czt"); /* Zotung Chin */
+  test_tag_from_language ("QIN", "dao"); /* Daai Chin */
+  test_tag_from_language ("QIN", "hlt"); /* Matu Chin */
+  test_tag_from_language ("QIN", "mrh"); /* Mara Chin */
+  test_tag_from_language ("QIN", "pck"); /* Paite Chin */
+  test_tag_from_language ("QIN", "sez"); /* Senthang Chin */
+  test_tag_from_language ("QIN", "tcp"); /* Tawr Chin */
+  test_tag_from_language ("QIN", "tcz"); /* Thado Chin */
+  test_tag_from_language ("QIN", "yos"); /* Yos, deprecated by IANA in favor of Zou [zom] */
+  test_tag_from_language ("QIN", "zom"); /* Zou */
+  test_tag_to_language ("QIN", "bgr");   /* no single BCP47 tag for Chin; picking Bawm Chin */
+
   test_language_two_way ("FAR", "fa");
   test_tag_from_language ("FAR", "fa_IR");
 
+  test_language_two_way ("SWA", "aii"); /* Swadaya Aramaic */
+
+  test_language_two_way ("SYR", "syr"); /* Syriac [macrolanguage] */
+  test_tag_from_language ("SYR", "amw"); /* Western Neo-Aramaic */
+  test_tag_from_language ("SYR", "cld"); /* Chaldean Neo-Aramaic */
+  test_tag_from_language ("SYR", "syc"); /* Classical Syriac */
+
+  test_language_two_way ("TUA", "tru"); /* Turoyo Aramaic */
+
   test_language_two_way ("ZHH", "zh-hk"); /* Chinese (Hong Kong) */
 
+  test_tag_from_language ("ZHS", "zh"); /* Chinese */
   test_tag_from_language ("ZHS", "zh-cn"); /* Chinese (China) */
   test_tag_from_language ("ZHS", "zh-sg"); /* Chinese (Singapore) */
-  test_tag_from_language ("ZHT", "zh-mo"); /* Chinese (Macao) */
+  test_tag_from_language ("ZHH", "zh-mo"); /* Chinese (Macao) */
+  test_tag_from_language ("ZHH", "zh-hant-mo"); /* Chinese (Macao) */
+  test_tag_from_language ("ZHH", "zh-hk"); /* Chinese (Hong Kong) */
+  test_tag_from_language ("ZHH", "zH-HanT-hK"); /* Chinese (Hong Kong) */
   test_tag_from_language ("ZHT", "zh-tw"); /* Chinese (Taiwan) */
+  test_tag_from_language ("ZHS", "zh-Hans"); /* Chinese (Simplified) */
+  test_tag_from_language ("ZHT", "zh-Hant"); /* Chinese (Traditional) */
+  test_tag_from_language ("ZHS", "zh-xx"); /* Chinese (Other) */
 
   test_tag_from_language ("ZHS", "zh"); /* Chinese */
   test_tag_from_language ("ZHS", "zh-xx");
 
-  test_tag_to_language ("ZHS", "zh-x-hbotzhs");
-  test_tag_to_language ("ZHT", "zh-x-hbotzht");
-  test_tag_to_language ("ZHP", "zh-x-hbotzhp");
+  test_tag_to_language ("ZHS", "zh-Hans");
+  test_tag_to_language ("ZHT", "zh-Hant");
+  test_tag_to_language ("ZHP", "x-hbotzhp");
 
   test_language_two_way ("ABC", "x-hbotabc");
   test_tag_from_language ("ABC", "asdf-asdf-wer-x-hbotabc-zxc");
@@ -217,6 +262,40 @@ test_ot_tag_language (void)
   test_tag_from_language ("XYZ", "xyz"); /* Unknown ISO 639-3 */
   test_tag_from_language ("XYZ", "xyz-qw"); /* Unknown ISO 639-3 */
 
+  /* International Phonetic Alphabet */
+  test_tag_from_language ("IPPH", "en-fonipa");
+  test_tag_from_language ("IPPH", "rm-CH-fonipa-sursilv-x-foobar");
+  test_tag_from_language ("IPPH", "und-fonipa");
+  test_tag_from_language ("IPPH", "zh-fonipa");
+  test_tag_to_language ("IPPH", "und-fonipa");
+
+  /* North American Phonetic Alphabet (Americanist Phonetic Notation) */
+  test_tag_from_language ("APPH", "en-fonnapa");
+  test_tag_from_language ("APPH", "chr-fonnapa");
+  test_tag_from_language ("APPH", "und-fonnapa");
+  test_tag_to_language ("APPH", "und-fonnapa");
+
+  /* Estrangela Syriac */
+  test_tag_from_language ("SYRE", "aii-Syre");
+  test_tag_from_language ("SYRE", "de-Syre");
+  test_tag_from_language ("SYRE", "syr-Syre");
+  test_tag_from_language ("SYRE", "und-Syre");
+  test_tag_to_language ("SYRE", "und-Syre");
+
+  /* Western Syriac */
+  test_tag_from_language ("SYRJ", "aii-Syrj");
+  test_tag_from_language ("SYRJ", "de-Syrj");
+  test_tag_from_language ("SYRJ", "syr-Syrj");
+  test_tag_from_language ("SYRJ", "und-Syrj");
+  test_tag_to_language ("SYRJ", "und-Syrj");
+
+  /* Eastern Syriac */
+  test_tag_from_language ("SYRN", "aii-Syrn");
+  test_tag_from_language ("SYRN", "de-Syrn");
+  test_tag_from_language ("SYRN", "syr-Syrn");
+  test_tag_from_language ("SYRN", "und-Syrn");
+  test_tag_to_language ("SYRN", "und-Syrn");
+
   /* Test that x-hbot overrides the base language */
   test_tag_from_language ("ABC", "fa-x-hbotabc-zxc");
   test_tag_from_language ("ABC", "fa-ir-x-hbotabc-zxc");