def test_get_next_token_returns_token_of_current_char(self): self.txt = "12" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) token = self.interpreter.current_token self.assertIsInstance(token, TokenEP) self.assertEqual(token.kind, INT) self.assertEqual(token.value, int(self.txt))
def test_get_next_token_tokenizes_expression(self): self.txt = "6/2" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) tkn1 = self.interpreter.current_token self.assertEqual(tkn1.value, 6) tkn2 = self.interpreter.lexer.get_next_token() self.assertEqual(tkn2.value, "/") tkn3 = self.interpreter.lexer.get_next_token() self.assertEqual(tkn3.value, 2)
def test_expr_evaluates_long_expression(self): self.txt = "160/2*30" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, eval(self.txt))
def test_expr_evaluates_simple_expression(self): self.txt = "6/2" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, eval(self.txt))
def test_expr_returns_single_int(self): self.txt = "12" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, int(self.txt))
def test_expr_multiplication(self): self.txt = "2 * 3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.expr(), eval(self.txt))
def test_can_create_interpreter(self): self.txt = "2*3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.lexer.text, self.txt)
class InterpreterFromScratchTestCase(unittest.TestCase): def test_can_create_interpreter(self): self.txt = "2*3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.lexer.text, self.txt) @unittest.skip def test_expr_returns_same_input_if_integer(self): self.txt = "3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.expr(), int(self.txt)) @unittest.skip def test_expr_multiplication(self): self.txt = "2 * 3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.expr(), eval(self.txt)) def test_get_next_token_returns_token_of_current_char(self): self.txt = "12" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) token = self.interpreter.current_token self.assertIsInstance(token, TokenEP) self.assertEqual(token.kind, INT) self.assertEqual(token.value, int(self.txt)) def test_get_next_token_tokenizes_expression(self): self.txt = "6/2" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) tkn1 = self.interpreter.current_token self.assertEqual(tkn1.value, 6) tkn2 = self.interpreter.lexer.get_next_token() self.assertEqual(tkn2.value, "/") tkn3 = self.interpreter.lexer.get_next_token() self.assertEqual(tkn3.value, 2) def test_expr_returns_single_int(self): self.txt = "12" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, int(self.txt)) def test_expr_evaluates_simple_expression(self): self.txt = "6/2" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, eval(self.txt)) def test_expr_evaluates_long_expression(self): self.txt = "160/2*30" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) result = self.interpreter.expr() self.assertEqual(result, eval(self.txt))
def test_expr_returns_same_input_if_integer(self): self.txt = "3" self.lexer = LexerEP(self.txt) self.interpreter = InterpreterEP(self.lexer) self.assertEqual(self.interpreter.expr(), int(self.txt))