Esempio n. 1
0
    def test_nested_operations_cases(self):
        expression = '( 1 + ( 2 * 3 ) )'

        result = evaluate_infix_expression(expression)

        assert result == 7

        expression = '( ( 1 * 2 ) + 3 )'

        result = evaluate_infix_expression(expression)

        assert result == 5
Esempio n. 2
0
def evaluate_expression(expression: str, notation: str) -> float:
    """
    Calculates the expression result given its notation.
    :param expression: The expression to be calculated
    :param notation: The notation type that the expression is written in. I.e. (prefix, infix)
    :return: The result of the expression
    """
    if notation == PREFIX_NOTATION:
        return evaluate_prefix_expression(expression)

    if notation == INFIX_NOTATION:
        return evaluate_infix_expression(expression)

    raise Exception("Invalid notation type")
Esempio n. 3
0
    def test_complex_multiple_operations_cases(self):
        expression = '( ( ( 1 + 1 ) / 10 ) - ( 1 * 2 ) )'

        result = evaluate_infix_expression(expression)

        assert result == -1.8

        expression = '( 2 * ( 3 + ( 4 / 2 ) ) )'

        result = evaluate_infix_expression(expression)

        assert result == 10

        expression = '( ( 2 * 3 ) + ( 6 / 2 ) )'

        result = evaluate_infix_expression(expression)

        assert result == 9

        expression = '( ( 2 * ( 2 + 2 ) ) / 2 )'

        result = evaluate_infix_expression(expression)

        assert result == 4
Esempio n. 4
0
    def test_simple_sum(self):
        expression = '( 2 + 2 )'

        result = evaluate_infix_expression(expression)

        assert result == 4
Esempio n. 5
0
    def test_simple_division(self):
        expression = '( 3 / 2 )'

        result = evaluate_infix_expression(expression)

        assert result == 1.5
Esempio n. 6
0
    def test_simple_multiplication(self):
        expression = '( 2 * 2 )'

        result = evaluate_infix_expression(expression)

        assert result == 4
Esempio n. 7
0
    def test_simple_subtraction(self):
        expression = '( 0 - 3 )'

        result = evaluate_infix_expression(expression)

        assert result == -3