def test_invalid(self): with self.assertRaises(calc.MalformedExpressionError): calc.PrecedenceClimbingEvaluator(['1', '+']).evaluate() with self.assertRaises(calc.MalformedExpressionError): calc.PrecedenceClimbingEvaluator(['(', '6']).evaluate() with self.assertRaises(calc.MalformedExpressionError): calc.PrecedenceClimbingEvaluator(['abc']).evaluate()
def test_evaluate_minus_minus(self): self.assertEqual( 9, calc.PrecedenceClimbingEvaluator( ['-', '3', '*', '(', '-', '3', ')']).evaluate()) self.assertEqual( 9, calc.PrecedenceClimbingEvaluator(['-', '3', '*', '-', '3']).evaluate())
def test_evaluate_unary(self): self.assertEqual(1, calc.PrecedenceClimbingEvaluator(['1']).evaluate()) self.assertEqual(1.9, calc.PrecedenceClimbingEvaluator(['1.9']).evaluate()) self.assertEqual( -1, calc.PrecedenceClimbingEvaluator(['-', '1']).evaluate()) self.assertEqual( -1.5, calc.PrecedenceClimbingEvaluator(['-', '1.5']).evaluate())
def test_assoc(self): self.assertEqual( 6, calc.PrecedenceClimbingEvaluator( ['1', '+', '2', '+', '3', '+', '0']).evaluate()) self.assertEqual( 8, calc.PrecedenceClimbingEvaluator( ['2', '*', '2', '*', '2', '*', '1']).evaluate()) self.assertEqual( 256, calc.PrecedenceClimbingEvaluator(['2', '^', '2', '^', '3']).evaluate())
def test_evaluate_binary(self): self.assertEqual( 5, calc.PrecedenceClimbingEvaluator(['2', '+', '3']).evaluate()) self.assertEqual( 1, calc.PrecedenceClimbingEvaluator(['-', '2', '+', '3']).evaluate()) self.assertEqual( 6, calc.PrecedenceClimbingEvaluator(['2', '*', '3']).evaluate()) self.assertEqual( 5, calc.PrecedenceClimbingEvaluator(['2', '*', '3', '-', '1']).evaluate()) self.assertEqual( -7, calc.PrecedenceClimbingEvaluator(['2', '-', '3', '*', '3']).evaluate())
def test_evaluate_par(self): self.assertEqual( 14, calc.PrecedenceClimbingEvaluator(['2', '*', '(', '7', ')']).evaluate()) self.assertEqual( -3, calc.PrecedenceClimbingEvaluator(['9', '/', '(', '-', '3', ')']).evaluate()) self.assertEqual( -3, calc.PrecedenceClimbingEvaluator(['9', '/', '(', '-', '3', ')']).evaluate()) self.assertEqual( 6, calc.PrecedenceClimbingEvaluator( ['2', '*', '(', '7', '-', '4', ')']).evaluate()) self.assertEqual( 1.5, calc.PrecedenceClimbingEvaluator( ['(', '7', '-', '4', ')', '/', '2']).evaluate())
def test_bug_sl(self): self.assertEqual( -2, calc.PrecedenceClimbingEvaluator(['-', '1', '-', '1']).evaluate())