Advertisement
Guest User

testit

a guest
Oct 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. import unittest
  2.  
  3. from exptree import ExpressionTree
  4.  
  5.  
  6. class TestInorder(unittest.TestCase):
  7.  
  8. def setUp(self):
  9. self.tree = ExpressionTree()
  10.  
  11.  
  12. def _assertParsedAsInfix(self, postfix, infix, expected):
  13. self.assertEqual(
  14. infix,
  15. expected,
  16. "After parsing the postfix expression {0!r}, as_infix should return {1!r}, not {2!r}."
  17. .format(postfix, expected, infix)
  18. )
  19.  
  20. def _test_expression(self, postfix, expected_value):
  21. """Test that parsing the postfix expression with the binary expression tree returns the expected value."""
  22. self.tree.construct_from_postfix(postfix)
  23. returned_value = self.tree.as_infix()
  24. self._assertParsedAsInfix(postfix, returned_value, expected_value)
  25.  
  26.  
  27. def test1_empty(self):
  28. """After inserting an empty expression, inorder traversal gives an empty expression. (1p)"""
  29. self.assertIsNone(self.tree.root, "An empty tree should have no root")
  30. self._test_expression('', '')
  31.  
  32.  
  33. def test2_simple(self):
  34. """After inserting the expression '1 2 +', inorder traversal gives '(1+2)'. (1p)"""
  35. postfix = "1 2 +"
  36. infix = "(1+2)"
  37. self._test_expression(postfix, infix)
  38.  
  39.  
  40. def test3_with_precedence(self):
  41. """After inserting the expression '1 2 + 3 *', inorder traversal gives '((1+2)*3)'. (1p)"""
  42. postfix = "1 2 + 3 *"
  43. infix = "((1+2)*3)"
  44. self._test_expression(postfix, infix)
  45.  
  46.  
  47. def test4_all_operators(self):
  48. """After inserting the expression 'a b + c d e - * /', inorder traversal gives '((a+b)/(c*(d-e)))'. (1p)"""
  49. postfix = "a b + c d e - * /"
  50. infix = "((a+b)/(c*(d-e)))"
  51. self._test_expression(postfix, infix)
  52.  
  53.  
  54. if __name__ == "__main__":
  55. unittest.main(verbosity=2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement