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