Ejemplo n.º 1
0
    def test_visit_number(self):
        log.info('Starting test...')
        next_token_val = Token('EOF', '')
        ast_result = ast.Number(Token('NUMBER', '100'))

        mocked_parser = self.get_mock_parser(next_token_val, ast_result)

        apl_interpreter = interpreter.Interpreter(mocked_parser)
        apl_interpreter.symbol_table = {}
        result = apl_interpreter.interpret()

        self.assertEqual(result, 100, 'Result value should be equal')
Ejemplo n.º 2
0
    def test_visit_var_init(self):
        log.info('Starting test...')
        # Mock return values
        next_token_return_val = Token(EOF, '')
        parse_return_val = ast.VarInit(Token(IDENTIFIER, 'expect_var_name'))
        expected_result = 'expect_var_name'

        mocked_parser = self.get_mock_parser(next_token_return_val,
                                             parse_return_val)

        apl_interpreter = interpreter.Interpreter(mocked_parser)
        result = apl_interpreter.interpret()

        self.assertEqual(result, expected_result)
Ejemplo n.º 3
0
    def test_visit_assignation(self):
        log.info('Starting test...')
        next_token_val = Token(EOF, '')
        ast_result = ast.Assignation(
            ast.VarInit(Token(IDENTIFIER, 'var_name')),
            ast.Number(Token(NUMBER, '0')))
        expected = {'var_name': 0}

        mocked_parser = self.get_mock_parser(next_token_val, ast_result)

        apl_interpreter = interpreter.Interpreter(mocked_parser)
        apl_interpreter.symbol_table = {}
        apl_interpreter.interpret()

        self.assertDictEqual(apl_interpreter.symbol_table, expected)
Ejemplo n.º 4
0
    def test_visit_binary_operator(self):
        log.info('Starting test...')
        next_token_val = Token(EOF, '')
        ast_result = ast.BinaryOperator(
            Token(PLUS, '+'), ast.Number(Token(NUMBER, '45')),
            ast.BinaryOperator(Token(MULT, '*'), ast.Number(Token(NUMBER,
                                                                  '3')),
                               ast.Number(Token(NUMBER, '3'))))

        mocked_parser = self.get_mock_parser(next_token_val, ast_result)

        apl_interpreter = interpreter.Interpreter(mocked_parser)
        apl_interpreter.symbol_table = {}
        result = apl_interpreter.interpret()

        self.assertEqual(result, 54, 'Test failed on BinOp visit')