Example #1
0
    def test_continue_simple(self):
        r1 = Rule('hi', continuation='cont1', value=14)
        i = {}
        r1.continue_(i, store)
        self.assertEqual(i['value'], r1.cont1)

        r2 = Rule('hi', continuation='none')
        self.assertRaises(KeyError, r2.continue_, i, store)
        self.assertRaises(TypeError, r2.continue_, i, None)
Example #2
0
 def test_continue_deferred(self):
     s = Selector(0, ('strip', 2))
     i = {'objects': [' help']}
     r = Rule('hi', continuation='cont1', value=s)
     r.continue_(i, store)
     self.assertEqual(len(i), 3)
     self.assertEqual(i['value'], 'l')
     self.assertEqual(i[s], 'l')
     self.assertEqual(r.cont1, 'l')
     self.assertIs(r.value, s)
Example #3
0
 def test_build_tree(self):
     r = Rule('hey')
     c = ConditionNode([Dummy(True)])
     self.assertIs(r._build_tree(c), c)
     x = lambda: None
     x._evaluate = x
     self.assertIs(r._build_tree(x), x)
     # Tested None indirectly in the constructor
     y = r._build_tree('')
     self.assertEqual(y.connector, AND)
     self.assertEqual(y.children, [])
     self.assertTrue(isinstance(y, ConditionNode))
Example #4
0
    def test_match(self):
        r1 = Rule(trigger='hi')
        self.assertFalse(r1.match())
        def x(q): raise Exception
        r1.conditions = x
        self.assertFalse(r1.match())
        x._evaluate = x
        self.assertIs(r1.conditions._evaluate, x)
        self.assertFalse(r1.match())

        c1, c2 = Dummy(True), Dummy(True)
        n = ConditionNode([c1, c2])
        r2 = Rule(trigger='hi', conditions=n)
        self.assertIs(r2.match(), r2)