def test_single(self):
     s = Substitution(["a"], ["b"])
     self.assertEqual(s.asFea(), "sub a by b;")
     self.assertEqual(s.involved_glyphs, set(["a", "b"]))
     self.assertEqual(
         etree.tostring(s.toXML()),
         "<substitution><from><slot><glyph>a</glyph></slot></from><to><slot><glyph>b</glyph></slot></to></substitution>"
         .encode("utf-8"))
     self.roundTrip(s)
 def test_alternate(self):
     s = Substitution(["a"], [["b", "c"]])
     self.assertEqual(s.asFea(), "sub a from [b c];")
     self.assertEqual(s.involved_glyphs, set(["a", "b", "c"]))
     self.roundTrip(s)
 def test_multiple_expansion_middle(self):
     s = Substitution([["aa", "bb"]], ["d", ["aa", "bb"], "c"])
     self.assertEqual(s.asFea(), "    sub aa by d aa c;\n    sub bb by d bb c;\n")
     self.assertEqual(s.involved_glyphs, set(["aa", "bb", "c", "d"]))
     self.roundTrip(s)
 def test_multiple_expansion(self):
     s = Substitution([["a", "b"]], [["a", "b"], "c"])
     self.assertEqual(s.asFea(), "    sub a by a c;\n    sub b by b c;\n")
     self.assertEqual(s.involved_glyphs, set(["a", "b", "c"]))
     self.roundTrip(s)
 def test_multiple(self):
     s = Substitution(["a"], ["b", "c"])
     self.assertEqual(s.asFea(), "sub a by b c;")
     self.assertEqual(s.involved_glyphs, set(["a", "b", "c"]))
     self.roundTrip(s)
 def test_ligature_expansion(self):
     s = Substitution([["f", "f.ss01"], ["i", "i.ss01"]], [["f_i", "f_i.ss01"]])
     self.assertEqual(s.asFea(), "    sub f i by f_i;\n    sub f.ss01 i.ss01 by f_i.ss01;\n")
     self.assertEqual(s.involved_glyphs, set(["f", "i", "f_i", "f.ss01", "i.ss01", "f_i.ss01"]))
     self.roundTrip(s)
 def test_ligature(self):
     s = Substitution(["a", "b"], ["c"])
     self.assertEqual(s.asFea(), "sub a b by c;")
     self.assertEqual(s.involved_glyphs, set(["a", "b", "c"]))
     self.roundTrip(s)
 def test_single_classes(self):
     s = Substitution([["a", "b"]], [["c", "d"]])
     self.assertEqual(s.asFea(), "sub [a b] by [c d];")
     self.assertEqual(s.involved_glyphs, set(["a", "b", "c", "d"]))
     self.roundTrip(s)