def testSimpleEval(self):
     S = RPNCalculator()
     val = S.evaluate('3')
     self.assertEqual(val, 3)
     self.assertEqual(str(S), '[3*]')
     
     S = RPNCalculator()
     val = S.evaluate('3 5')
     self.assertEqual(val, 5)
     self.assertEqual(str(S), '[5*, 3]')
     
     S = RPNCalculator()
     val = S.evaluate('3 5 7')
     self.assertEqual(val, 7)
     self.assertEqual(str(S), '[7*, 5, 3]')
    def testEvalAdd(self):
        S = RPNCalculator()
        val = S.evaluate('3 5 +')
        self.assertEqual(val, 8)
        self.assertEqual(str(S), '[8*]')

        S = RPNCalculator()
        val = S.evaluate('3 5 + 2 +')
        self.assertEqual(val, 10)
        self.assertEqual(str(S), '[10*]')

        S = RPNCalculator()
        val = S.evaluate('2 3 5 + +')
        self.assertEqual(val, 10)
        self.assertEqual(str(S), '[10*]')
    def testEvalAdd(self):
        S = RPNCalculator()
        val = S.evaluate('3 5 +')
        self.assertEqual(val, 8)
        self.assertEqual(str(S), '[8*]')

        S = RPNCalculator()
        val = S.evaluate('3 5 + 2 +')
        self.assertEqual(val, 10)
        self.assertEqual(str(S), '[10*]')

        S = RPNCalculator()
        val = S.evaluate('2 3 5 + +')
        self.assertEqual(val, 10)
        self.assertEqual(str(S), '[10*]')
    def testSimpleEval(self):
        S = RPNCalculator()
        val = S.evaluate('3')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate('3 5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')

        S = RPNCalculator()
        val = S.evaluate('3 5 7')
        self.assertEqual(val, 7)
        self.assertEqual(str(S), '[7*, 5, 3]')
 def testBadAdd(self):
     S = RPNCalculator()
     try:
         val = S.evaluate('2 + 3')
         self.assertTrue(False, 'Evaluate of bad combo failed to raise exception')
     except Exception as e:
         if not isinstance(e, ValueError):
             raise self.fail('RPN eval raised exception that is not ValueError')
         self.assertTrue(True)
 def testBadAdd(self):
     S = RPNCalculator()
     try:
         val = S.evaluate('2 + 3')
         self.assertTrue(False,
                         'Evaluate of bad combo failed to raise exception')
     except Exception as e:
         if not isinstance(e, ValueError):
             raise self.fail(
                 'RPN eval raised exception that is not ValueError')
         self.assertTrue(True)
    def testSimpleEvalWhitespace(self):
        S = RPNCalculator()
        val = S.evaluate(' 3')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')
        
        S = RPNCalculator()
        val = S.evaluate('3 ')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate(' 3 ')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate('3\t5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')
        
        S = RPNCalculator()
        val = S.evaluate('3  5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')

        S = RPNCalculator()
        val = S.evaluate('3\t\t5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')
    def testSimpleEvalWhitespace(self):
        S = RPNCalculator()
        val = S.evaluate(' 3')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate('3 ')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate(' 3 ')
        self.assertEqual(val, 3)
        self.assertEqual(str(S), '[3*]')

        S = RPNCalculator()
        val = S.evaluate('3\t5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')

        S = RPNCalculator()
        val = S.evaluate('3  5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')

        S = RPNCalculator()
        val = S.evaluate('3\t\t5')
        self.assertEqual(val, 5)
        self.assertEqual(str(S), '[5*, 3]')
 def testEvalExample3(self):
     S = RPNCalculator()
     val = S.evaluate('3 5 + 7 * 8 11 * -')
     self.assertEqual(val, -32)
     self.assertEqual(str(S), '[-32*]')
 def testEvalExample3(self):
     S = RPNCalculator()
     val = S.evaluate('3 5 + 7 * 8 11 * -')
     self.assertEqual(val, -32)
     self.assertEqual(str(S), '[-32*]')