1*e1fe3e4aSElliott Hughesfrom fontTools import unicodedata 2*e1fe3e4aSElliott Hughes 3*e1fe3e4aSElliott Hughesimport pytest 4*e1fe3e4aSElliott Hughes 5*e1fe3e4aSElliott Hughes 6*e1fe3e4aSElliott Hughesdef test_script(): 7*e1fe3e4aSElliott Hughes assert unicodedata.script("a") == "Latn" 8*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0)) == "Zyyy" 9*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0378)) == "Zzzz" 10*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10FFFF)) == "Zzzz" 11*e1fe3e4aSElliott Hughes 12*e1fe3e4aSElliott Hughes # these were randomly sampled, one character per script 13*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1E918)) == "Adlm" 14*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1170D)) == "Ahom" 15*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x145A0)) == "Hluw" 16*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0607)) == "Arab" 17*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x056C)) == "Armn" 18*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10B27)) == "Avst" 19*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1B41)) == "Bali" 20*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x168AD)) == "Bamu" 21*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x16ADD)) == "Bass" 22*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1BE5)) == "Batk" 23*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x09F3)) == "Beng" 24*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11C5B)) == "Bhks" 25*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x3126)) == "Bopo" 26*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1103B)) == "Brah" 27*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x2849)) == "Brai" 28*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1A0A)) == "Bugi" 29*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x174E)) == "Buhd" 30*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x18EE)) == "Cans" 31*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x102B7)) == "Cari" 32*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1053D)) == "Aghb" 33*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11123)) == "Cakm" 34*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xAA1F)) == "Cham" 35*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xAB95)) == "Cher" 36*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1F0C7)) == "Zyyy" 37*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x2C85)) == "Copt" 38*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x12014)) == "Xsux" 39*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1082E)) == "Cprt" 40*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA686)) == "Cyrl" 41*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10417)) == "Dsrt" 42*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x093E)) == "Deva" 43*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1BC4B)) == "Dupl" 44*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1310C)) == "Egyp" 45*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1051C)) == "Elba" 46*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x2DA6)) == "Ethi" 47*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10AD)) == "Geor" 48*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x2C52)) == "Glag" 49*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10343)) == "Goth" 50*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11371)) == "Gran" 51*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x03D0)) == "Grek" 52*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0AAA)) == "Gujr" 53*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0A4C)) == "Guru" 54*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x23C9F)) == "Hani" 55*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xC259)) == "Hang" 56*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1722)) == "Hano" 57*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x108F5)) == "Hatr" 58*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x05C2)) == "Hebr" 59*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1B072)) == "Hira" 60*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10847)) == "Armi" 61*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x033A)) == "Zinh" 62*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10B66)) == "Phli" 63*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10B4B)) == "Prti" 64*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA98A)) == "Java" 65*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x110B2)) == "Kthi" 66*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0CC6)) == "Knda" 67*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x3337)) == "Kana" 68*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA915)) == "Kali" 69*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10A2E)) == "Khar" 70*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x17AA)) == "Khmr" 71*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11225)) == "Khoj" 72*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x112B6)) == "Sind" 73*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0ED7)) == "Laoo" 74*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xAB3C)) == "Latn" 75*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1C48)) == "Lepc" 76*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1923)) == "Limb" 77*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1071D)) == "Lina" 78*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x100EC)) == "Linb" 79*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA4E9)) == "Lisu" 80*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10284)) == "Lyci" 81*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10926)) == "Lydi" 82*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11161)) == "Mahj" 83*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0D56)) == "Mlym" 84*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0856)) == "Mand" 85*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10AF0)) == "Mani" 86*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11CB0)) == "Marc" 87*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11D28)) == "Gonm" 88*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xABDD)) == "Mtei" 89*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1E897)) == "Mend" 90*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x109B0)) == "Merc" 91*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10993)) == "Mero" 92*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x16F5D)) == "Plrd" 93*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1160B)) == "Modi" 94*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x18A8)) == "Mong" 95*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x16A48)) == "Mroo" 96*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1128C)) == "Mult" 97*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x105B)) == "Mymr" 98*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x108AF)) == "Nbat" 99*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x19B3)) == "Talu" 100*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1143D)) == "Newa" 101*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x07F4)) == "Nkoo" 102*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1B192)) == "Nshu" 103*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x169C)) == "Ogam" 104*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1C56)) == "Olck" 105*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10CE9)) == "Hung" 106*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10316)) == "Ital" 107*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10A93)) == "Narb" 108*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1035A)) == "Perm" 109*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x103D5)) == "Xpeo" 110*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10A65)) == "Sarb" 111*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10C09)) == "Orkh" 112*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0B60)) == "Orya" 113*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x104CF)) == "Osge" 114*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x104A8)) == "Osma" 115*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x16B12)) == "Hmng" 116*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10879)) == "Palm" 117*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11AF1)) == "Pauc" 118*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA869)) == "Phag" 119*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10909)) == "Phnx" 120*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x10B81)) == "Phlp" 121*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA941)) == "Rjng" 122*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x16C3)) == "Runr" 123*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0814)) == "Samr" 124*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA88C)) == "Saur" 125*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x111C8)) == "Shrd" 126*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1045F)) == "Shaw" 127*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x115AD)) == "Sidd" 128*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1D8C0)) == "Sgnw" 129*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0DB9)) == "Sinh" 130*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x110F9)) == "Sora" 131*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11A60)) == "Soyo" 132*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1B94)) == "Sund" 133*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA81F)) == "Sylo" 134*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0740)) == "Syrc" 135*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1714)) == "Tglg" 136*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1761)) == "Tagb" 137*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1965)) == "Tale" 138*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1A32)) == "Lana" 139*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xAA86)) == "Tavt" 140*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x116A5)) == "Takr" 141*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0B8E)) == "Taml" 142*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1754D)) == "Tang" 143*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0C40)) == "Telu" 144*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x07A4)) == "Thaa" 145*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0E42)) == "Thai" 146*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x0F09)) == "Tibt" 147*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x2D3A)) == "Tfng" 148*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x114B0)) == "Tirh" 149*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x1038B)) == "Ugar" 150*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA585)) == "Vaii" 151*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x118CF)) == "Wara" 152*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0xA066)) == "Yiii" 153*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11A31)) == "Zanb" 154*e1fe3e4aSElliott Hughes assert unicodedata.script(chr(0x11F00)) == "Kawi" 155*e1fe3e4aSElliott Hughes 156*e1fe3e4aSElliott Hughes 157*e1fe3e4aSElliott Hughesdef test_script_extension(): 158*e1fe3e4aSElliott Hughes assert unicodedata.script_extension("a") == {"Latn"} 159*e1fe3e4aSElliott Hughes assert unicodedata.script_extension(chr(0)) == {"Zyyy"} 160*e1fe3e4aSElliott Hughes assert unicodedata.script_extension(chr(0x0378)) == {"Zzzz"} 161*e1fe3e4aSElliott Hughes assert unicodedata.script_extension(chr(0x10FFFF)) == {"Zzzz"} 162*e1fe3e4aSElliott Hughes 163*e1fe3e4aSElliott Hughes assert unicodedata.script_extension("\u0660") == {"Arab", "Thaa", "Yezi"} 164*e1fe3e4aSElliott Hughes assert unicodedata.script_extension("\u0964") == { 165*e1fe3e4aSElliott Hughes "Beng", 166*e1fe3e4aSElliott Hughes "Deva", 167*e1fe3e4aSElliott Hughes "Dogr", 168*e1fe3e4aSElliott Hughes "Gong", 169*e1fe3e4aSElliott Hughes "Gonm", 170*e1fe3e4aSElliott Hughes "Gran", 171*e1fe3e4aSElliott Hughes "Gujr", 172*e1fe3e4aSElliott Hughes "Guru", 173*e1fe3e4aSElliott Hughes "Knda", 174*e1fe3e4aSElliott Hughes "Mahj", 175*e1fe3e4aSElliott Hughes "Mlym", 176*e1fe3e4aSElliott Hughes "Nand", 177*e1fe3e4aSElliott Hughes "Orya", 178*e1fe3e4aSElliott Hughes "Sind", 179*e1fe3e4aSElliott Hughes "Sinh", 180*e1fe3e4aSElliott Hughes "Sylo", 181*e1fe3e4aSElliott Hughes "Takr", 182*e1fe3e4aSElliott Hughes "Taml", 183*e1fe3e4aSElliott Hughes "Telu", 184*e1fe3e4aSElliott Hughes "Tirh", 185*e1fe3e4aSElliott Hughes } 186*e1fe3e4aSElliott Hughes 187*e1fe3e4aSElliott Hughes 188*e1fe3e4aSElliott Hughesdef test_script_name(): 189*e1fe3e4aSElliott Hughes assert unicodedata.script_name("Latn") == "Latin" 190*e1fe3e4aSElliott Hughes assert unicodedata.script_name("Zyyy") == "Common" 191*e1fe3e4aSElliott Hughes assert unicodedata.script_name("Zzzz") == "Unknown" 192*e1fe3e4aSElliott Hughes # underscores in long names are replaced by spaces 193*e1fe3e4aSElliott Hughes assert unicodedata.script_name("Egyp") == "Egyptian Hieroglyphs" 194*e1fe3e4aSElliott Hughes 195*e1fe3e4aSElliott Hughes with pytest.raises(KeyError): 196*e1fe3e4aSElliott Hughes unicodedata.script_name("QQQQ") 197*e1fe3e4aSElliott Hughes assert unicodedata.script_name("QQQQ", default="Unknown") 198*e1fe3e4aSElliott Hughes 199*e1fe3e4aSElliott Hughes 200*e1fe3e4aSElliott Hughesdef test_script_code(): 201*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Latin") == "Latn" 202*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Common") == "Zyyy" 203*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Unknown") == "Zzzz" 204*e1fe3e4aSElliott Hughes # case, whitespace, underscores and hyphens are ignored 205*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Egyptian Hieroglyphs") == "Egyp" 206*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Egyptian_Hieroglyphs") == "Egyp" 207*e1fe3e4aSElliott Hughes assert unicodedata.script_code("egyptianhieroglyphs") == "Egyp" 208*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Egyptian-Hieroglyphs") == "Egyp" 209*e1fe3e4aSElliott Hughes 210*e1fe3e4aSElliott Hughes with pytest.raises(KeyError): 211*e1fe3e4aSElliott Hughes unicodedata.script_code("Does not exist") 212*e1fe3e4aSElliott Hughes assert unicodedata.script_code("Does not exist", default="Zzzz") == "Zzzz" 213*e1fe3e4aSElliott Hughes 214*e1fe3e4aSElliott Hughes 215*e1fe3e4aSElliott Hughesdef test_block(): 216*e1fe3e4aSElliott Hughes assert unicodedata.block("\x00") == "Basic Latin" 217*e1fe3e4aSElliott Hughes assert unicodedata.block("\x7F") == "Basic Latin" 218*e1fe3e4aSElliott Hughes assert unicodedata.block("\x80") == "Latin-1 Supplement" 219*e1fe3e4aSElliott Hughes assert unicodedata.block("\u1c90") == "Georgian Extended" 220*e1fe3e4aSElliott Hughes assert unicodedata.block("\u0870") == "Arabic Extended-B" 221*e1fe3e4aSElliott Hughes assert unicodedata.block("\U00011B00") == "Devanagari Extended-A" 222*e1fe3e4aSElliott Hughes 223*e1fe3e4aSElliott Hughes 224*e1fe3e4aSElliott Hughesdef test_ot_tags_from_script(): 225*e1fe3e4aSElliott Hughes # simple 226*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Latn") == ["latn"] 227*e1fe3e4aSElliott Hughes # script mapped to multiple new and old script tags 228*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Deva") == ["dev2", "deva"] 229*e1fe3e4aSElliott Hughes # exceptions 230*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Hira") == ["kana"] 231*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Zmth") == ["math"] 232*e1fe3e4aSElliott Hughes # special script codes map to DFLT 233*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Zinh") == ["DFLT"] 234*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Zyyy") == ["DFLT"] 235*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Zzzz") == ["DFLT"] 236*e1fe3e4aSElliott Hughes # this is invalid or unknown 237*e1fe3e4aSElliott Hughes assert unicodedata.ot_tags_from_script("Aaaa") == ["DFLT"] 238*e1fe3e4aSElliott Hughes 239*e1fe3e4aSElliott Hughes 240*e1fe3e4aSElliott Hughesdef test_ot_tag_to_script(): 241*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("latn") == "Latn" 242*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("kana") == "Kana" 243*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("DFLT") == None 244*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("aaaa") == None 245*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("beng") == "Beng" 246*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("bng2") == "Beng" 247*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("dev2") == "Deva" 248*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("gjr2") == "Gujr" 249*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("yi ") == "Yiii" 250*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("nko ") == "Nkoo" 251*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("vai ") == "Vaii" 252*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("lao ") == "Laoo" 253*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("yi") == "Yiii" 254*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("math") == "Zmth" 255*e1fe3e4aSElliott Hughes # both 'hang' and 'jamo' tags map to the Hangul script 256*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("hang") == "Hang" 257*e1fe3e4aSElliott Hughes assert unicodedata.ot_tag_to_script("jamo") == "Hang" 258*e1fe3e4aSElliott Hughes 259*e1fe3e4aSElliott Hughes for invalid_value in ("", " ", "z zz", "zzzzz"): 260*e1fe3e4aSElliott Hughes with pytest.raises(ValueError, match="invalid OpenType tag"): 261*e1fe3e4aSElliott Hughes unicodedata.ot_tag_to_script(invalid_value) 262*e1fe3e4aSElliott Hughes 263*e1fe3e4aSElliott Hughes 264*e1fe3e4aSElliott Hughesdef test_script_horizontal_direction(): 265*e1fe3e4aSElliott Hughes assert unicodedata.script_horizontal_direction("Latn") == "LTR" 266*e1fe3e4aSElliott Hughes assert unicodedata.script_horizontal_direction("Arab") == "RTL" 267*e1fe3e4aSElliott Hughes assert unicodedata.script_horizontal_direction("Thaa") == "RTL" 268*e1fe3e4aSElliott Hughes assert unicodedata.script_horizontal_direction("Ougr") == "RTL" 269*e1fe3e4aSElliott Hughes 270*e1fe3e4aSElliott Hughes with pytest.raises(KeyError): 271*e1fe3e4aSElliott Hughes unicodedata.script_horizontal_direction("Azzz") 272*e1fe3e4aSElliott Hughes assert unicodedata.script_horizontal_direction("Azzz", default="LTR") == "LTR" 273*e1fe3e4aSElliott Hughes 274*e1fe3e4aSElliott Hughes 275*e1fe3e4aSElliott Hughesif __name__ == "__main__": 276*e1fe3e4aSElliott Hughes import sys 277*e1fe3e4aSElliott Hughes 278*e1fe3e4aSElliott Hughes sys.exit(pytest.main(sys.argv)) 279