Commit 24dc157d authored by Taddeus Kroes's avatar Taddeus Kroes

Node.contains() now ignores negation in the compared node during comparison.

parent f5a7c1cd
...@@ -252,7 +252,7 @@ class ExpressionBase(object): ...@@ -252,7 +252,7 @@ class ExpressionBase(object):
""" """
Check if a node equal to the specified one exists within this node. Check if a node equal to the specified one exists within this node.
""" """
if include_self and self == node: if include_self and negate(self, 0) == node:
return True return True
if not self.is_leaf: if not self.is_leaf:
......
...@@ -212,13 +212,14 @@ class TestNode(RulesTestCase): ...@@ -212,13 +212,14 @@ class TestNode(RulesTestCase):
self.assertEqualNodes(Scope(-n).as_nary_node(), -n) self.assertEqualNodes(Scope(-n).as_nary_node(), -n)
def test_contains(self): def test_contains(self):
a, ab, bc, ln0, ln1 = tree('a, ab, bc, ln(a) + 1, ln(b) + 1') a, ab, bc, ln0, ln1, ma = tree('a, ab, bc, ln(a) + 1, ln(b) + 1, -a')
self.assertTrue(a.contains(a)) self.assertTrue(a.contains(a))
self.assertTrue(ab.contains(a)) self.assertTrue(ab.contains(a))
self.assertFalse(bc.contains(a)) self.assertFalse(bc.contains(a))
self.assertTrue(ln0.contains(a)) self.assertTrue(ln0.contains(a))
self.assertFalse(ln1.contains(a)) self.assertFalse(ln1.contains(a))
self.assertTrue(ma.contains(a))
def test_construct_function_derivative(self): def test_construct_function_derivative(self):
self.assertEqual(str(tree('der(x ^ 2)')), '[x ^ 2]\'') self.assertEqual(str(tree('der(x ^ 2)')), '[x ^ 2]\'')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment