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_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_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_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))
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))
 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)
 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))