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)
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)
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))
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)