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