xref: /aosp_15_r20/external/fonttools/Tests/agl_test.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughesfrom fontTools import agl
2*e1fe3e4aSElliott Hughesimport unittest
3*e1fe3e4aSElliott Hughes
4*e1fe3e4aSElliott Hughes
5*e1fe3e4aSElliott Hughesclass AglToUnicodeTest(unittest.TestCase):
6*e1fe3e4aSElliott Hughes    def test_spec_examples(self):
7*e1fe3e4aSElliott Hughes        # https://github.com/adobe-type-tools/agl-specification#3-examples
8*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("Lcommaaccent"), "Ļ")
9*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni20AC0308"), "\u20AC\u0308")
10*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u1040C"), "\U0001040C")
11*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uniD801DC0C"), "")
12*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni20ac"), "")
13*e1fe3e4aSElliott Hughes        self.assertEqual(
14*e1fe3e4aSElliott Hughes            agl.toUnicode("Lcommaaccent_uni20AC0308_u1040C.alternate"),
15*e1fe3e4aSElliott Hughes            "\u013B\u20AC\u0308\U0001040C",
16*e1fe3e4aSElliott Hughes        )
17*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("Lcommaaccent_uni013B_u013B"), "ĻĻĻ")
18*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("foo"), "")
19*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode(".notdef"), "")
20*e1fe3e4aSElliott Hughes
21*e1fe3e4aSElliott Hughes    def test_aglfn(self):
22*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("longs_t"), "ſt")
23*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("f_f_i.alt123"), "ffi")
24*e1fe3e4aSElliott Hughes
25*e1fe3e4aSElliott Hughes    def test_uniABCD(self):
26*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni0041"), "A")
27*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni0041_uni0042_uni0043"), "ABC")
28*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni004100420043"), "ABC")
29*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni"), "")
30*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni41"), "")
31*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uni004101"), "")
32*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("uniDC00"), "")
33*e1fe3e4aSElliott Hughes
34*e1fe3e4aSElliott Hughes    def test_uABCD(self):
35*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u0041"), "A")
36*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u00041"), "A")
37*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u000041"), "A")
38*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u0000041"), "")
39*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("u0041_uni0041_A.alt"), "AAA")
40*e1fe3e4aSElliott Hughes
41*e1fe3e4aSElliott Hughes    def test_union(self):
42*e1fe3e4aSElliott Hughes        # Interesting test case because "uni" is a prefix of "union".
43*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("union"), "∪")
44*e1fe3e4aSElliott Hughes        # U+222A U+FE00 is a Standardized Variant for UNION WITH SERIFS.
45*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("union_uniFE00"), "\u222A\uFE00")
46*e1fe3e4aSElliott Hughes
47*e1fe3e4aSElliott Hughes    def test_dingbats(self):
48*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a20", isZapfDingbats=True), "✔")
49*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a20.alt", isZapfDingbats=True), "✔")
50*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a206", isZapfDingbats=True), "❰")
51*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a20", isZapfDingbats=False), "")
52*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a0", isZapfDingbats=True), "")
53*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("a207", isZapfDingbats=True), "")
54*e1fe3e4aSElliott Hughes        self.assertEqual(agl.toUnicode("abcdef", isZapfDingbats=True), "")
55*e1fe3e4aSElliott Hughes
56*e1fe3e4aSElliott Hughes
57*e1fe3e4aSElliott Hughesif __name__ == "__main__":
58*e1fe3e4aSElliott Hughes    import sys
59*e1fe3e4aSElliott Hughes
60*e1fe3e4aSElliott Hughes    sys.exit(unittest.main())
61