"""
Operator module contains the Operator class and a list of standard operators.
"""
class Operator:
    """
    Operator class is a binary operator with a symbol, a precedence and an evaluation function.
    """
    def __init__(self, symbol, precedence, evaluate_function):
        self.symbol = symbol
        self.precedence = precedence
        self.evaluate_function = evaluate_function

    def __repr__(self):
        return self.symbol

    def __call__(self, left, right):
        return self.evaluate_function(left, right)

STANDARD_OPERATORS = {
    '+': Operator('+', 1, lambda a, b: a + b),
    '-': Operator('-', 1, lambda a, b: a - b),
    '*': Operator('×', 2, lambda a, b: a * b),
    '/': Operator('/', 2, lambda a, b: a / b),
}

def test_operator():
    """
    Test the Operator class.
    """
    operator = Operator('%', 1, lambda a, b: a % b)
    assert repr(operator) == '%'
    assert operator(15, 4) == 3