Просмотр исходного кода

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

Taddeus Kroes 14 лет назад
Родитель
Сommit
24dc157db2
2 измененных файлов с 3 добавлено и 2 удалено
  1. 1 1
      src/node.py
  2. 2 1
      tests/test_node.py

+ 1 - 1
src/node.py

@@ -252,7 +252,7 @@ class ExpressionBase(object):
         """
         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
 
         if not self.is_leaf:

+ 2 - 1
tests/test_node.py

@@ -212,13 +212,14 @@ class TestNode(RulesTestCase):
         self.assertEqualNodes(Scope(-n).as_nary_node(), -n)
 
     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(ab.contains(a))
         self.assertFalse(bc.contains(a))
         self.assertTrue(ln0.contains(a))
         self.assertFalse(ln1.contains(a))
+        self.assertTrue(ma.contains(a))
 
     def test_construct_function_derivative(self):
         self.assertEqual(str(tree('der(x ^ 2)')), '[x ^ 2]\'')