def test_rpn_operator_parentheses(self): calculator = Calculator() expected = [ ValueToken(Decimal(2)), ValueToken(Decimal(4)), OperatorToken('+'), ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("(2 + 4)")))
def test_rpn_division(self): calculator = Calculator() expected = [ ValueToken(Decimal(6)), ValueToken(Decimal(3)), OperatorToken('/') ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("6 / 3")))
def test_rpn_operator_precedence_with_parentheses(self): calculator = Calculator() expected = [ ValueToken(Decimal(5)), ValueToken(Decimal(3)), OperatorToken('+'), ValueToken(Decimal(4)), OperatorToken('*') ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("(5 + 3) * 4")))
def test_rpn_multiple_parentheses_decimal(self): calculator = Calculator() expected = [ ValueToken(Decimal("3.5")), ValueToken(Decimal("2.7")), ValueToken(Decimal("4.8")), OperatorToken('+'), OperatorToken('*') ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("(3.5 * ((2.7) + (4.8)))")))
def test_rpn_multiple_parentheses(self): calculator = Calculator() expected = [ ValueToken(Decimal(3)), ValueToken(Decimal(2)), ValueToken(Decimal(4)), OperatorToken('+'), OperatorToken('*') ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("(3 * ((2) + (4)))")))
def test_rpn_decimal(self): calculator = Calculator() expected = [ ValueToken(Decimal("6.2")) ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("6.2")))
def test_rpn_value_parentheses(self): calculator = Calculator() expected = [ ValueToken(Decimal(2)) ] self.assertListEqual(expected, calculator.to_rpn(calculator.tokenize("(2)")))