예제 #1
0
 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()
예제 #2
0
 def test_evaluate_minus_minus(self):
     self.assertEqual(
         9,
         calc.ShuntingYardEvaluator(['-', '3', '*', '(', '-', '3',
                                     ')']).evaluate())
     self.assertEqual(
         9,
         calc.ShuntingYardEvaluator(['-', '3', '*', '-', '3']).evaluate())
예제 #3
0
 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())
예제 #4
0
 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())
예제 #5
0
 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())
예제 #6
0
 def test_bug_sl(self):
     self.assertEqual(
         -2,
         calc.ShuntingYardEvaluator(['-', '1', '-', '1']).evaluate())
예제 #7
0
 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())