예제 #1
0
 def test_code_generation_3(self):
     self.maxDiff = None
     scanner = Scanner(self.valid_input_3)
     Parser(scanner, DEBUG=False, OUTPUT=False)
     with open('output/output.txt', 'r') as output_file:
         output = output_file.read()
     self.assertEqual(output, self.expected_output_3)
예제 #2
0
    def test_token_column(self):
        scanner = Scanner(self.valid_input, OUTPUT=False)

        expected_columns = [
            0, 4, 6, 8, 9,
            0, 2, 4, 6, 8, 9,
            0, 3, 5, 8, 9
        ]

        for expected_column in expected_columns:
            current_token = scanner()
            self.assertEqual(current_token.get_column(), expected_column)
예제 #3
0
    def test_token_row(self):
        scanner = Scanner(self.valid_input, OUTPUT=False)

        expected_rows = [
            1, 1, 1, 1, 1,
            2, 2, 2, 2, 2, 2,
            4, 4, 4, 4, 4
        ]

        for expected_row in expected_rows:
            current_token = scanner()
            self.assertEqual(current_token.get_row(), expected_row)
예제 #4
0
    def test_token_lexeme(self):
        scanner = Scanner(self.valid_input, OUTPUT=False)

        expected_lexemes = [
            'int', 'a', '=', '0', ';',
            'a', '=', '2', '+', '2', ';',
            'if', 'a', '==', '0', ';'
        ]

        for expected_lexeme in expected_lexemes:
            current_token = scanner()
            self.assertEqual(current_token.get_lexeme(), expected_lexeme)
예제 #5
0
    def test_invalid_input_lexeme(self):
        scanner = Scanner(self.invalid_input, OUTPUT=False)

        expected_lexemes = [
            'if', '(', 'b', '==', ')', '{',
            'a', '=', '3', ';',
            'e', '=', '7', ';',
            '}',
            'else'
        ]

        for expected_lexeme in expected_lexemes:
            current_token = scanner()
            self.assertEqual(current_token.get_lexeme(), expected_lexeme)
예제 #6
0
    def test_invalid_input_types(self):
        scanner = Scanner(self.invalid_input, OUTPUT=False)

        expected_tokens = [
            TokenType.KEYWORD, TokenType.SYMBOL, TokenType.ID, TokenType.SYMBOL, TokenType.SYMBOL, TokenType.SYMBOL,
            TokenType.ID, TokenType.SYMBOL, TokenType.NUM, TokenType.SYMBOL,
            TokenType.ID, TokenType.SYMBOL, TokenType.NUM, TokenType.SYMBOL,
            TokenType.SYMBOL,
            TokenType.KEYWORD
        ]

        for expected_token in expected_tokens:
            current_token = scanner()
            self.assertEqual(current_token.get_type(), expected_token)
예제 #7
0
 def test_parse_tree(self, mocked_analyzer):
     self.maxDiff = None
     scanner = Scanner(self.valid_input, OUTPUT=False)
     parser = Parser(scanner, OUTPUT=False)
     parse_tree = parser.get_parse_tree()
     self.assertEqual(parse_tree, expected_parse_tree)