コード例 #1
0
ファイル: test_core.py プロジェクト: wilysword/rule-reactor
 def test_negate(self):
     c1, c2 = Dummy(True), Dummy(False)
     n = ConditionNode([c1, c2])
     result = n.evaluate()
     n.negate()
     self.assertEqual(len(n), 1)
     self.assertEqual(n.connector, AND)
     self.assertEqual(n.children[0].children, [c1, c2])
     self.assertEqual(n.children[0].connector, OR)
     # We went from (c1 AND c2) to (!c1 or !c2)
     self.assertEqual(n.evaluate(), not result)
     self.assertIs(c1.v, False)
     self.assertIs(c2.v, True)
     n.negate()
     self.assertIs(c1.v, True)
     self.assertIs(c2.v, False)
     self.assertEqual(len(n), 1)
     self.assertEqual(n.connector, AND)
     self.assertEqual(len(n.children[0]), 1)
     # collapsing at this point should give us back the original node structure
     n.collapse()
     self.assertEqual(n.evaluate(), result)
     self.assertEqual(n.children, [c1, c2])
     self.assertEqual(n.connector, AND)