@@ -12,7 +12,7 @@ def assert_tokens_equal(actual_tokens, expected_tokens_data):
1212
1313 for i , (token_type , value ) in enumerate (expected_tokens_data ):
1414 assert actual_tokens [i ].type == token_type , f"Token { i } type mismatch: Expected { token_type } , got { actual_tokens [i ].type } ({ actual_tokens [i ].value } )"
15- assert actual_tokens [i ].value == value , f"Token { i } value mismatch: Expected { value } , got { actual_tokens [i ].value } "
15+ assert actual_tokens [i ].value == value , f"Token { i } value mismatch: Expected ' { value } ' , got ' { actual_tokens [i ].value } ' "
1616
1717# --- Test Cases ---
1818
@@ -67,13 +67,14 @@ def test_js_numbers():
6767 ]
6868 assert_tokens_equal (tokens , expected )
6969
70- def test_js_strings () code = "\\ 'hello\\ ' \" world\" \" with \\ \" escape\\ \" \" "
70+ def test_js_strings ():
71+ code = "'hello' \" world\" \" with \\ \" escape\\ \" \" "
7172 lexer = JavaScriptLexer (code )
7273 tokens = lexer .tokenize ()
7374 expected = [
74- (TokenType .STRING , "\ ' hello\ ' " ),
75- (TokenType .STRING , '\ " world\ " ' ),
76- (TokenType .STRING , '\ " with \\ "escape\\ "\ " ' ), # String includes escapes
75+ (TokenType .STRING , "'hello'" ),
76+ (TokenType .STRING , '"world"' ),
77+ (TokenType .STRING , '"with \\ "escape\\ ""' ), # String includes escapes
7778 ]
7879 assert_tokens_equal (tokens , expected )
7980
@@ -103,10 +104,9 @@ def test_js_delimiters():
103104 (TokenType .DELIMITER , "{" ), (TokenType .DELIMITER , "}" ),
104105 (TokenType .DELIMITER , "[" ), (TokenType .DELIMITER , "]" ),
105106 (TokenType .DELIMITER , ";" ),
106- (TokenType .ERROR , "," ), # Comma is not listed as a delimiter in the lexer
107+ (TokenType .DELIMITER , "," ), # Assuming comma should be a delimiter in JS
107108 (TokenType .DELIMITER , ":" ),
108109 ]
109- # Note: Comma is currently marked as ERROR. Adjust test if lexer is updated.
110110 assert_tokens_equal (tokens , expected )
111111
112112def test_js_comments ():
@@ -138,7 +138,7 @@ def test_js_mixed_code():
138138 tokens = lexer .tokenize ()
139139 expected = [
140140 (TokenType .NEWLINE , "\\ n" ),
141- (TokenType .KEYWORD , "function" ), (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "x" ), (TokenType .ERROR , "," ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , "{" ), (TokenType .NEWLINE , "\\ n" ),
141+ (TokenType .KEYWORD , "function" ), (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "x" ), (TokenType .DELIMITER , "," ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , "{" ), (TokenType .NEWLINE , "\\ n" ),
142142 (TokenType .COMMENT , "// Calculate sum" ), (TokenType .NEWLINE , "\\ n" ),
143143 (TokenType .KEYWORD , "const" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , "=" ), (TokenType .IDENTIFIER , "x" ), (TokenType .OPERATOR , "+" ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
144144 (TokenType .KEYWORD , "if" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , ">" ), (TokenType .NUMBER , "10" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , "{" ), (TokenType .NEWLINE , "\\ n" ),
@@ -147,9 +147,8 @@ def test_js_mixed_code():
147147 (TokenType .KEYWORD , "return" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
148148 (TokenType .DELIMITER , "}" ), (TokenType .NEWLINE , "\\ n" ),
149149 (TokenType .NEWLINE , "\\ n" ),
150- (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .NUMBER , "5" ), (TokenType .ERROR , "," ), (TokenType .NUMBER , "7" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
150+ (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .NUMBER , "5" ), (TokenType .DELIMITER , "," ), (TokenType .NUMBER , "7" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
151151 ]
152- # Note: Comma is currently marked as ERROR. Template literals are treated as simple strings.
153152 assert_tokens_equal (tokens , expected )
154153
155154def test_js_error_character ():
@@ -166,12 +165,12 @@ def test_js_error_character():
166165 assert_tokens_equal (tokens , expected )
167166
168167def test_js_unterminated_string ():
169- code = "\ ' unterminated string"
168+ code = "'unterminated string"
170169 lexer = JavaScriptLexer (code )
171170 tokens = lexer .tokenize ()
172171 # The lexer currently returns the unterminated string as a STRING token
173172 expected = [
174- (TokenType .STRING , "\ ' unterminated string" ),
173+ (TokenType .STRING , "'unterminated string" ),
175174 ]
176175 assert_tokens_equal (tokens , expected )
177176
@@ -182,6 +181,4 @@ def test_js_unterminated_comment():
182181 # The lexer currently returns an ERROR token for unterminated multi-line comments
183182 assert len (tokens ) == 2 # ERROR token + EOF
184183 assert tokens [0 ].type == TokenType .ERROR
185- assert "comentário não fechado" in tokens [0 ].value
186-
187-
184+ assert "unterminated comment" in tokens [0 ].value .lower ()
0 commit comments