test_scope.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import unittest
  2. from src.scope import Scope
  3. from tests.rulestestcase import RulesTestCase, tree
  4. class TestScope(RulesTestCase):
  5. def setUp(self):
  6. self.n, self.f = tree('a + b + cd,f')
  7. (self.a, self.b), self.cd = self.n
  8. self.c, self.d = self.cd
  9. self.scope = Scope(self.n)
  10. def test___init__(self):
  11. self.assertEqual(self.scope.node, self.n)
  12. self.assertEqual(self.scope.nodes, [self.a, self.b, self.cd])
  13. def test_remove_leaf(self):
  14. self.scope.remove(self.b)
  15. self.assertEqual(self.scope.nodes, [self.a, self.cd])
  16. def test_remove_node(self):
  17. self.scope.remove(self.cd)
  18. self.assertEqual(self.scope.nodes, [self.a, self.b])
  19. def test_remove_replace(self):
  20. self.scope.remove(self.cd, self.f)
  21. self.assertEqual(self.scope.nodes, [self.a, self.b, self.f])
  22. def test_remove_error(self):
  23. with self.assertRaises(ValueError):
  24. self.scope.remove(self.f)
  25. def test_as_nary_node(self):
  26. self.assertEqualNodes(self.scope.as_nary_node(), self.n)