Пример #1
0
 def test_parse(self):
     ex = Expression()
     self.assertEqual(ex.parse("a"), (["sequence" ,["literal", ["button", "a"]]], ""))
     self.assertEqual(ex.parse("ab"), (["sequence" ,["literal", ["button", "a"]],
                                           ["sequence", ["literal", ["button", "b"]]]], ""))
     self.assertEqual(ex.parse("a*b"), (["sequence" ,["literal", ["button", "a"]],
                                            ["sequence", ["literal", ["wild", "*"]],
                                                ["sequence", ["literal", ["button", "b"]]]]], ""))
     self.assertEqual(ex.parse("<Enter>a"), (["sequence" ,["literal", ["button", "<Enter>"]],
                                                 ["sequence", ["literal", ["button", "a"]]]], ""))
Пример #2
0
 def test_compile(self):
     ex = Expression()
     btn_a = ex.button(30)
     btn_b = ex.button(48)
     btn_enter = ex.button(28)
     btn_wild = ex.wild(28)
     key = lambda code, state: KeyEvent(InputEvent(0, 0, 0, code, state))
     keys = [key(code,state) for code in [28,30,46,48] for state in [0,1,2]]
     keysets = [list(i) for i in permutations(keys, 3)]
     matches = {
         "a": btn_a,
         "<Enter>": btn_enter,
         "ab": ex.sequence(btn_a, btn_b),
         "a*b": ex.sequence(btn_a, ex.sequence(btn_wild, btn_b))
     }
     for line, expected in matches.items():
         result_expected = map(expected, keysets)
         result_actual = map(ex.compile(ex.parse(line)[0]), keysets)
         data = [(e, a, keysets[i], ex.parse(line))\
         for i, (a, e) in enumerate(zip(result_actual, result_expected))\
         if a[0] != e[0] or a[2] != e[2]
         ]
         self.assertEquals(data, [])