def testOperatorClear(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('2 sqrt clear'.split()) self.assertEqual(len(actualValueStack), 0)
def testOperatorUndo(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('5 4 3 2 undo undo * 5 * undo'.split()) expectedValueStack = [float(20), float(5)] self.assertEqual(actualValueStack, expectedValueStack)
def testOperatorDiv(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('7 12 2 /'.split()) expectedValueStack = [float(7), float(12 / 2)] self.assertEqual(actualValueStack, expectedValueStack)
def testMixOperators(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('1 2 3 * 5 + 7 / -'.split()) expectedValueStack = [float(1 - (2 * 3 + 5) / 7)] self.assertEqual(actualValueStack, expectedValueStack)
def testOperatorSub(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('5 2 -'.split()) expectedValueStack = [float(5 - 2)] self.assertEqual(actualValueStack, expectedValueStack)
def testOperatorMul(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('1 2 3 4 5 * * * '.split()) expectedValueStack = [float(1), float(5 * 4 * 3 * 2 * 1)] self.assertEqual(actualValueStack, expectedValueStack)
def testNumbersStack(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('5 4 3 2'.split()) expectedValueStack = [float(5), float(4), float(3), float(2)] self.assertEqual(actualValueStack, expectedValueStack)
def testOperatorSqrt(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('2 sqrt'.split()) expectedValueStack = [math.sqrt(float(2))] self.assertEqual(actualValueStack, expectedValueStack)
def testUndoWithInsufficientParameters(self): self.assertRaises(IndexError, rpn_caculator.RPNCaculator().caculate, '1 2 3 * 5 undo undo undo undo undo undo'.split())
def testInsufficientParameters(self): actualValueStack, actualInstructionStack = rpn_caculator.RPNCaculator( ).caculate('1 2 3 * 5 + * * 6 5'.split()) expectedValueStack = [11.0] self.assertEqual(actualValueStack, expectedValueStack)
def testNegativeSqrt(self): self.assertRaises(ValueError, rpn_caculator.RPNCaculator().caculate, '-1 sqrt'.split())
def testZeroDivision(self): self.assertRaises(ZeroDivisionError, rpn_caculator.RPNCaculator().caculate, '1 0 /'.split())
def testInvalidInput(self): self.assertRaises(ValueError, rpn_caculator.RPNCaculator().caculate, 's')