def test_visit_BinOp_multiply(self): node = BinOp(left=Num(Token('INTEGER', 2)), op=Token('MULTIPLY', '*'), right=Num(Token('INTEGER', 3))) interpreter = Interpreter(None) result = interpreter.visit_BinOp(node) assert result == 6
def test_visit_BinOp_Subtract(self): node = BinOp(left=Num(Token('INTEGER', 6)), op=Token('SUBTRACT', '-'), right=Num(Token('INTEGER', 2))) interpreter = Interpreter(None) result = interpreter.visit_BinOp(node) assert result == 4
def test_visit_BinOp_Add(self): node = BinOp(left=Num(Token('INTEGER', 3)), op=Token('ADD', '+'), right=Num(Token('INTEGER', 2))) interpreter = Interpreter(None) result = interpreter.visit_BinOp(node) assert result == 5
def test_visit_BinOp_divide_int(self): node = BinOp(left=Num(Token('INTEGER', 8)), op=Token('DIVIDE', '/'), right=Num(Token('INTEGER', 2))) interpreter = Interpreter(None) result = interpreter.visit_BinOp(node) assert result == 4 assert isinstance(result, int)
def test_visit_BinOp_divide_float(self): node = BinOp(left=Num(Token('FLOAT', 8.2)), op=Token('DIVIDE', '/'), right=Num(Token('FLOAT', 2.4))) interpreter = Interpreter(None) result = interpreter.visit_BinOp(node) assert result == (8.2 / 2.4) assert isinstance(result, float)
def test_interpret(self): lexer = Lexer('3 + 5') parser = Parser(lexer) interpreter = Interpreter(parser) result = interpreter.interpret() assert result == 8
def test_visit_Num(self): node = Num(Token('INTEGER', 3)) interpreter = Interpreter(None) result = interpreter.visit_Num(node) assert result == 3