1- import pytest
2- from lexers .javascript .javascriptlexer import JavaScriptLexer
3- from lexers .token import TokenType
1+ # import pytest
2+ # from lexers.javascript.javascriptlexer import JavaScriptLexer
3+ # from lexers.token import TokenType
44
5- # Helper function to compare token lists, ignoring EOF (similar to other lexer tests)
6- def assert_tokens_equal (actual_tokens , expected_tokens_data ):
7- if actual_tokens and actual_tokens [- 1 ].type == TokenType .EOF :
8- actual_tokens = actual_tokens [:- 1 ]
5+ # # Helper function to compare token lists, ignoring EOF (similar to other lexer tests)
6+ # def assert_tokens_equal(actual_tokens, expected_tokens_data):
7+ # if actual_tokens and actual_tokens[-1].type == TokenType.EOF:
8+ # actual_tokens = actual_tokens[:-1]
99
10- assert len (actual_tokens ) == len (expected_tokens_data ), \
11- f"Expected { len (expected_tokens_data )} tokens, but got { len (actual_tokens )} \n Actual: { actual_tokens } \n Expected data: { expected_tokens_data } "
10+ # assert len(actual_tokens) == len(expected_tokens_data), \
11+ # f"Expected {len(expected_tokens_data)} tokens, but got {len(actual_tokens)}\nActual: {actual_tokens}\nExpected data: {expected_tokens_data}"
1212
13- for i , (token_type , value ) in enumerate (expected_tokens_data ):
14- 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 } '"
13+ # for i, (token_type, value) in enumerate(expected_tokens_data):
14+ # 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}'"
1616
17- # --- Test Cases ---
17+ # # --- Test Cases ---
1818
19- def test_js_empty_input ():
20- lexer = JavaScriptLexer ("" )
21- tokens = lexer .tokenize ()
22- assert len (tokens ) == 1
23- assert tokens [0 ].type == TokenType .EOF
19+ # def test_js_empty_input():
20+ # lexer = JavaScriptLexer("")
21+ # tokens = lexer.tokenize()
22+ # assert len(tokens) == 1
23+ # assert tokens[0].type == TokenType.EOF
2424
25- def test_js_keywords ():
26- code = "function if else return let const var for while do break continue switch case default try catch throw new this class extends super import export typeof instanceof void delete in of yield await async true false null undefined"
27- lexer = JavaScriptLexer (code )
28- tokens = lexer .tokenize ()
29- expected = [
30- (TokenType .KEYWORD , "function" ), (TokenType .KEYWORD , "if" ), (TokenType .KEYWORD , "else" ), (TokenType .KEYWORD , "return" ),
31- (TokenType .KEYWORD , "let" ), (TokenType .KEYWORD , "const" ), (TokenType .KEYWORD , "var" ), (TokenType .KEYWORD , "for" ),
32- (TokenType .KEYWORD , "while" ), (TokenType .KEYWORD , "do" ), (TokenType .KEYWORD , "break" ), (TokenType .KEYWORD , "continue" ),
33- (TokenType .KEYWORD , "switch" ), (TokenType .KEYWORD , "case" ), (TokenType .KEYWORD , "default" ), (TokenType .KEYWORD , "try" ),
34- (TokenType .KEYWORD , "catch" ), (TokenType .KEYWORD , "throw" ), (TokenType .KEYWORD , "new" ), (TokenType .KEYWORD , "this" ),
35- (TokenType .KEYWORD , "class" ), (TokenType .KEYWORD , "extends" ), (TokenType .KEYWORD , "super" ), (TokenType .KEYWORD , "import" ),
36- (TokenType .KEYWORD , "export" ), (TokenType .KEYWORD , "typeof" ), (TokenType .KEYWORD , "instanceof" ), (TokenType .KEYWORD , "void" ),
37- (TokenType .KEYWORD , "delete" ), (TokenType .KEYWORD , "in" ), (TokenType .KEYWORD , "of" ), (TokenType .KEYWORD , "yield" ),
38- (TokenType .KEYWORD , "await" ), (TokenType .KEYWORD , "async" ), (TokenType .KEYWORD , "true" ), (TokenType .KEYWORD , "false" ),
39- (TokenType .KEYWORD , "null" ), (TokenType .KEYWORD , "undefined" )
40- ]
41- assert_tokens_equal (tokens , expected )
25+ # def test_js_keywords():
26+ # code = "function if else return let const var for while do break continue switch case default try catch throw new this class extends super import export typeof instanceof void delete in of yield await async true false null undefined"
27+ # lexer = JavaScriptLexer(code)
28+ # tokens = lexer.tokenize()
29+ # expected = [
30+ # (TokenType.KEYWORD, "function"), (TokenType.KEYWORD, "if"), (TokenType.KEYWORD, "else"), (TokenType.KEYWORD, "return"),
31+ # (TokenType.KEYWORD, "let"), (TokenType.KEYWORD, "const"), (TokenType.KEYWORD, "var"), (TokenType.KEYWORD, "for"),
32+ # (TokenType.KEYWORD, "while"), (TokenType.KEYWORD, "do"), (TokenType.KEYWORD, "break"), (TokenType.KEYWORD, "continue"),
33+ # (TokenType.KEYWORD, "switch"), (TokenType.KEYWORD, "case"), (TokenType.KEYWORD, "default"), (TokenType.KEYWORD, "try"),
34+ # (TokenType.KEYWORD, "catch"), (TokenType.KEYWORD, "throw"), (TokenType.KEYWORD, "new"), (TokenType.KEYWORD, "this"),
35+ # (TokenType.KEYWORD, "class"), (TokenType.KEYWORD, "extends"), (TokenType.KEYWORD, "super"), (TokenType.KEYWORD, "import"),
36+ # (TokenType.KEYWORD, "export"), (TokenType.KEYWORD, "typeof"), (TokenType.KEYWORD, "instanceof"), (TokenType.KEYWORD, "void"),
37+ # (TokenType.KEYWORD, "delete"), (TokenType.KEYWORD, "in"), (TokenType.KEYWORD, "of"), (TokenType.KEYWORD, "yield"),
38+ # (TokenType.KEYWORD, "await"), (TokenType.KEYWORD, "async"), (TokenType.KEYWORD, "true"), (TokenType.KEYWORD, "false"),
39+ # (TokenType.KEYWORD, "null"), (TokenType.KEYWORD, "undefined")
40+ # ]
41+ # assert_tokens_equal(tokens, expected)
4242
43- def test_js_identifiers ():
44- code = "myVar _anotherVar var123 $special _"
45- lexer = JavaScriptLexer (code )
46- tokens = lexer .tokenize ()
47- expected = [
48- (TokenType .IDENTIFIER , "myVar" ),
49- (TokenType .IDENTIFIER , "_anotherVar" ),
50- (TokenType .IDENTIFIER , "var123" ),
51- (TokenType .IDENTIFIER , "$special" ), # $ is allowed in JS identifiers
52- (TokenType .IDENTIFIER , "_" ),
53- ]
54- assert_tokens_equal (tokens , expected )
43+ # def test_js_identifiers():
44+ # code = "myVar _anotherVar var123 $special _"
45+ # lexer = JavaScriptLexer(code)
46+ # tokens = lexer.tokenize()
47+ # expected = [
48+ # (TokenType.IDENTIFIER, "myVar"),
49+ # (TokenType.IDENTIFIER, "_anotherVar"),
50+ # (TokenType.IDENTIFIER, "var123"),
51+ # (TokenType.IDENTIFIER, "$special"), # $ is allowed in JS identifiers
52+ # (TokenType.IDENTIFIER, "_"),
53+ # ]
54+ # assert_tokens_equal(tokens, expected)
5555
56- def test_js_numbers ():
57- code = "123 45.67 0.5 1e3 2.5e-2 99"
58- lexer = JavaScriptLexer (code )
59- tokens = lexer .tokenize ()
60- expected = [
61- (TokenType .NUMBER , "123" ),
62- (TokenType .NUMBER , "45.67" ),
63- (TokenType .NUMBER , "0.5" ),
64- (TokenType .NUMBER , "1e3" ),
65- (TokenType .NUMBER , "2.5e-2" ),
66- (TokenType .NUMBER , "99" ),
67- ]
68- assert_tokens_equal (tokens , expected )
56+ # def test_js_numbers():
57+ # code = "123 45.67 0.5 1e3 2.5e-2 99"
58+ # lexer = JavaScriptLexer(code)
59+ # tokens = lexer.tokenize()
60+ # expected = [
61+ # (TokenType.NUMBER, "123"),
62+ # (TokenType.NUMBER, "45.67"),
63+ # (TokenType.NUMBER, "0.5"),
64+ # (TokenType.NUMBER, "1e3"),
65+ # (TokenType.NUMBER, "2.5e-2"),
66+ # (TokenType.NUMBER, "99"),
67+ # ]
68+ # assert_tokens_equal(tokens, expected)
6969
70- def test_js_strings ():
71- code = "'hello' \" world\" \" with \\ \" escape\\ \" \" "
72- lexer = JavaScriptLexer (code )
73- tokens = lexer .tokenize ()
74- expected = [
75- (TokenType .STRING , "'hello'" ),
76- (TokenType .STRING , '"world"' ),
77- (TokenType .STRING , '"with \\ "escape\\ ""' ), # String includes escapes
78- ]
79- assert_tokens_equal (tokens , expected )
70+ # def test_js_strings():
71+ # code = "'hello' \"world\" \"with \\\"escape\\\"\""
72+ # lexer = JavaScriptLexer(code)
73+ # tokens = lexer.tokenize()
74+ # expected = [
75+ # (TokenType.STRING, "'hello'"),
76+ # (TokenType.STRING, '"world"'),
77+ # (TokenType.STRING, '"with \\"escape\\""'), # String includes escapes
78+ # ]
79+ # assert_tokens_equal(tokens, expected)
8080
81- def test_js_operators ():
82- code = "+ - * / % = == === != !== > < >= <= && || ! & | ^ ~ << >> >>> ++ -- += -= *= /= %= &= |= ^= <<= >>= >>>= => ? : ."
83- lexer = JavaScriptLexer (code )
84- tokens = lexer .tokenize ()
85- expected = [
86- (TokenType .OPERATOR , "+" ), (TokenType .OPERATOR , "-" ), (TokenType .OPERATOR , "*" ), (TokenType .OPERATOR , "/" ), (TokenType .OPERATOR , "%" ),
87- (TokenType .OPERATOR , "=" ), (TokenType .OPERATOR , "==" ), (TokenType .OPERATOR , "===" ), (TokenType .OPERATOR , "!=" ), (TokenType .OPERATOR , "!==" ),
88- (TokenType .OPERATOR , ">" ), (TokenType .OPERATOR , "<" ), (TokenType .OPERATOR , ">=" ), (TokenType .OPERATOR , "<=" ), (TokenType .OPERATOR , "&&" ),
89- (TokenType .OPERATOR , "||" ), (TokenType .OPERATOR , "!" ), (TokenType .OPERATOR , "&" ), (TokenType .OPERATOR , "|" ), (TokenType .OPERATOR , "^" ),
90- (TokenType .OPERATOR , "~" ), (TokenType .OPERATOR , "<<" ), (TokenType .OPERATOR , ">>" ), (TokenType .OPERATOR , ">>>" ), (TokenType .OPERATOR , "++" ),
91- (TokenType .OPERATOR , "--" ), (TokenType .OPERATOR , "+=" ), (TokenType .OPERATOR , "-=" ), (TokenType .OPERATOR , "*=" ), (TokenType .OPERATOR , "/=" ),
92- (TokenType .OPERATOR , "%=" ), (TokenType .OPERATOR , "&=" ), (TokenType .OPERATOR , "|=" ), (TokenType .OPERATOR , "^=" ), (TokenType .OPERATOR , "<<=" ),
93- (TokenType .OPERATOR , ">>=" ), (TokenType .OPERATOR , ">>>=" ), (TokenType .OPERATOR , "=>" ), (TokenType .OPERATOR , "?" ), (TokenType .OPERATOR , ":" ),
94- (TokenType .OPERATOR , "." )
95- ]
96- assert_tokens_equal (tokens , expected )
81+ # def test_js_operators():
82+ # code = "+ - * / % = == === != !== > < >= <= && || ! & | ^ ~ << >> >>> ++ -- += -= *= /= %= &= |= ^= <<= >>= >>>= => ? : ."
83+ # lexer = JavaScriptLexer(code)
84+ # tokens = lexer.tokenize()
85+ # expected = [
86+ # (TokenType.OPERATOR, "+"), (TokenType.OPERATOR, "-"), (TokenType.OPERATOR, "*"), (TokenType.OPERATOR, "/"), (TokenType.OPERATOR, "%"),
87+ # (TokenType.OPERATOR, "="), (TokenType.OPERATOR, "=="), (TokenType.OPERATOR, "==="), (TokenType.OPERATOR, "!="), (TokenType.OPERATOR, "!=="),
88+ # (TokenType.OPERATOR, ">"), (TokenType.OPERATOR, "<"), (TokenType.OPERATOR, ">="), (TokenType.OPERATOR, "<="), (TokenType.OPERATOR, "&&"),
89+ # (TokenType.OPERATOR, "||"), (TokenType.OPERATOR, "!"), (TokenType.OPERATOR, "&"), (TokenType.OPERATOR, "|"), (TokenType.OPERATOR, "^"),
90+ # (TokenType.OPERATOR, "~"), (TokenType.OPERATOR, "<<"), (TokenType.OPERATOR, ">>"), (TokenType.OPERATOR, ">>>"), (TokenType.OPERATOR, "++"),
91+ # (TokenType.OPERATOR, "--"), (TokenType.OPERATOR, "+="), (TokenType.OPERATOR, "-="), (TokenType.OPERATOR, "*="), (TokenType.OPERATOR, "/="),
92+ # (TokenType.OPERATOR, "%="), (TokenType.OPERATOR, "&="), (TokenType.OPERATOR, "|="), (TokenType.OPERATOR, "^="), (TokenType.OPERATOR, "<<="),
93+ # (TokenType.OPERATOR, ">>="), (TokenType.OPERATOR, ">>>="), (TokenType.OPERATOR, "=>"), (TokenType.OPERATOR, "?"), (TokenType.OPERATOR, ":"),
94+ # (TokenType.OPERATOR, ".")
95+ # ]
96+ # assert_tokens_equal(tokens, expected)
9797
98- def test_js_delimiters ():
99- code = "( ) { } [ ] ; , :"
100- lexer = JavaScriptLexer (code )
101- tokens = lexer .tokenize ()
102- expected = [
103- (TokenType .DELIMITER , "(" ), (TokenType .DELIMITER , ")" ),
104- (TokenType .DELIMITER , "{" ), (TokenType .DELIMITER , "}" ),
105- (TokenType .DELIMITER , "[" ), (TokenType .DELIMITER , "]" ),
106- (TokenType .DELIMITER , ";" ),
107- (TokenType .DELIMITER , "," ), # Assuming comma should be a delimiter in JS
108- (TokenType .DELIMITER , ":" ),
109- ]
110- assert_tokens_equal (tokens , expected )
98+ # def test_js_delimiters():
99+ # code = "( ) { } [ ] ; , :"
100+ # lexer = JavaScriptLexer(code)
101+ # tokens = lexer.tokenize()
102+ # expected = [
103+ # (TokenType.DELIMITER, "("), (TokenType.DELIMITER, ")"),
104+ # (TokenType.DELIMITER, "{"), (TokenType.DELIMITER, "}"),
105+ # (TokenType.DELIMITER, "["), (TokenType.DELIMITER, "]"),
106+ # (TokenType.DELIMITER, ";"),
107+ # (TokenType.DELIMITER, ","), # Assuming comma should be a delimiter in JS
108+ # (TokenType.DELIMITER, ":"),
109+ # ]
110+ # assert_tokens_equal(tokens, expected)
111111
112- def test_js_comments ():
113- code = "// Single line comment\n let x = 1; /* Multi-line\n comment */ var y = 2;"
114- lexer = JavaScriptLexer (code )
115- tokens = lexer .tokenize ()
116- expected = [
117- (TokenType .COMMENT , "// Single line comment" ), (TokenType .NEWLINE , "\\ n" ),
118- (TokenType .KEYWORD , "let" ), (TokenType .IDENTIFIER , "x" ), (TokenType .OPERATOR , "=" ), (TokenType .NUMBER , "1" ), (TokenType .DELIMITER , ";" ),
119- (TokenType .COMMENT , "/* Multi-line\n comment */" ),
120- (TokenType .KEYWORD , "var" ), (TokenType .IDENTIFIER , "y" ), (TokenType .OPERATOR , "=" ), (TokenType .NUMBER , "2" ), (TokenType .DELIMITER , ";" ),
121- ]
122- assert_tokens_equal (tokens , expected )
112+ # def test_js_comments():
113+ # code = "// Single line comment\nlet x = 1; /* Multi-line\n comment */ var y = 2;"
114+ # lexer = JavaScriptLexer(code)
115+ # tokens = lexer.tokenize()
116+ # expected = [
117+ # (TokenType.COMMENT, "// Single line comment"), (TokenType.NEWLINE, "\\n"),
118+ # (TokenType.KEYWORD, "let"), (TokenType.IDENTIFIER, "x"), (TokenType.OPERATOR, "="), (TokenType.NUMBER, "1"), (TokenType.DELIMITER, ";"),
119+ # (TokenType.COMMENT, "/* Multi-line\n comment */"),
120+ # (TokenType.KEYWORD, "var"), (TokenType.IDENTIFIER, "y"), (TokenType.OPERATOR, "="), (TokenType.NUMBER, "2"), (TokenType.DELIMITER, ";"),
121+ # ]
122+ # assert_tokens_equal(tokens, expected)
123123
124- def test_js_mixed_code ():
125- code = """
126- function calculate(x, y) {
127- // Calculate sum
128- const sum = x + y;
129- if (sum > 10) {
130- console.log(`Result: ${sum}`); // Log if large
131- }
132- return sum;
133- }
124+ # def test_js_mixed_code():
125+ # code = """
126+ # function calculate(x, y) {
127+ # // Calculate sum
128+ # const sum = x + y;
129+ # if (sum > 10) {
130+ # console.log(`Result: ${sum}`); // Log if large
131+ # }
132+ # return sum;
133+ # }
134134
135- calculate(5, 7);
136- """
137- lexer = JavaScriptLexer (code )
138- tokens = lexer .tokenize ()
139- expected = [
140- (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" ),
142- (TokenType .COMMENT , "// Calculate sum" ), (TokenType .NEWLINE , "\\ n" ),
143- (TokenType .KEYWORD , "const" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , "=" ), (TokenType .IDENTIFIER , "x" ), (TokenType .OPERATOR , "+" ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
144- (TokenType .KEYWORD , "if" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , ">" ), (TokenType .NUMBER , "10" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , "{" ), (TokenType .NEWLINE , "\\ n" ),
145- (TokenType .IDENTIFIER , "console" ), (TokenType .OPERATOR , "." ), (TokenType .IDENTIFIER , "log" ), (TokenType .DELIMITER , "(" ), (TokenType .STRING , "`Result: ${sum}`" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , ";" ), (TokenType .COMMENT , "// Log if large" ), (TokenType .NEWLINE , "\\ n" ),
146- (TokenType .DELIMITER , "}" ), (TokenType .NEWLINE , "\\ n" ),
147- (TokenType .KEYWORD , "return" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
148- (TokenType .DELIMITER , "}" ), (TokenType .NEWLINE , "\\ n" ),
149- (TokenType .NEWLINE , "\\ n" ),
150- (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .NUMBER , "5" ), (TokenType .DELIMITER , "," ), (TokenType .NUMBER , "7" ), (TokenType .DELIMITER , ")" ), (TokenType .DELIMITER , ";" ), (TokenType .NEWLINE , "\\ n" ),
151- ]
152- assert_tokens_equal (tokens , expected )
135+ # calculate(5, 7);
136+ # """
137+ # lexer = JavaScriptLexer(code)
138+ # tokens = lexer.tokenize()
139+ # expected = [
140+ # (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"),
142+ # (TokenType.COMMENT, "// Calculate sum"), (TokenType.NEWLINE, "\\n"),
143+ # (TokenType.KEYWORD, "const"), (TokenType.IDENTIFIER, "sum"), (TokenType.OPERATOR, "="), (TokenType.IDENTIFIER, "x"), (TokenType.OPERATOR, "+"), (TokenType.IDENTIFIER, "y"), (TokenType.DELIMITER, ";"), (TokenType.NEWLINE, "\\n"),
144+ # (TokenType.KEYWORD, "if"), (TokenType.DELIMITER, "("), (TokenType.IDENTIFIER, "sum"), (TokenType.OPERATOR, ">"), (TokenType.NUMBER, "10"), (TokenType.DELIMITER, ")"), (TokenType.DELIMITER, "{"), (TokenType.NEWLINE, "\\n"),
145+ # (TokenType.IDENTIFIER, "console"), (TokenType.OPERATOR, "."), (TokenType.IDENTIFIER, "log"), (TokenType.DELIMITER, "("), (TokenType.STRING, "`Result: ${sum}`"), (TokenType.DELIMITER, ")"), (TokenType.DELIMITER, ";"), (TokenType.COMMENT, "// Log if large"), (TokenType.NEWLINE, "\\n"),
146+ # (TokenType.DELIMITER, "}"), (TokenType.NEWLINE, "\\n"),
147+ # (TokenType.KEYWORD, "return"), (TokenType.IDENTIFIER, "sum"), (TokenType.DELIMITER, ";"), (TokenType.NEWLINE, "\\n"),
148+ # (TokenType.DELIMITER, "}"), (TokenType.NEWLINE, "\\n"),
149+ # (TokenType.NEWLINE, "\\n"),
150+ # (TokenType.IDENTIFIER, "calculate"), (TokenType.DELIMITER, "("), (TokenType.NUMBER, "5"), (TokenType.DELIMITER, ","), (TokenType.NUMBER, "7"), (TokenType.DELIMITER, ")"), (TokenType.DELIMITER, ";"), (TokenType.NEWLINE, "\\n"),
151+ # ]
152+ # assert_tokens_equal(tokens, expected)
153153
154- def test_js_error_character ():
155- code = "let a = @;"
156- lexer = JavaScriptLexer (code )
157- tokens = lexer .tokenize ()
158- expected = [
159- (TokenType .KEYWORD , "let" ),
160- (TokenType .IDENTIFIER , "a" ),
161- (TokenType .OPERATOR , "=" ),
162- (TokenType .ERROR , "@" ),
163- (TokenType .DELIMITER , ";" ),
164- ]
165- assert_tokens_equal (tokens , expected )
154+ # def test_js_error_character():
155+ # code = "let a = @;"
156+ # lexer = JavaScriptLexer(code)
157+ # tokens = lexer.tokenize()
158+ # expected = [
159+ # (TokenType.KEYWORD, "let"),
160+ # (TokenType.IDENTIFIER, "a"),
161+ # (TokenType.OPERATOR, "="),
162+ # (TokenType.ERROR, "@"),
163+ # (TokenType.DELIMITER, ";"),
164+ # ]
165+ # assert_tokens_equal(tokens, expected)
166166
167- def test_js_unterminated_string ():
168- code = "'unterminated string"
169- lexer = JavaScriptLexer (code )
170- tokens = lexer .tokenize ()
171- # The lexer currently returns the unterminated string as a STRING token
172- expected = [
173- (TokenType .STRING , "'unterminated string" ),
174- ]
175- assert_tokens_equal (tokens , expected )
167+ # def test_js_unterminated_string():
168+ # code = "'unterminated string"
169+ # lexer = JavaScriptLexer(code)
170+ # tokens = lexer.tokenize()
171+ # # The lexer currently returns the unterminated string as a STRING token
172+ # expected = [
173+ # (TokenType.STRING, "'unterminated string"),
174+ # ]
175+ # assert_tokens_equal(tokens, expected)
176176
177- def test_js_unterminated_comment ():
178- code = "/* Unterminated comment"
179- lexer = JavaScriptLexer (code )
180- tokens = lexer .tokenize ()
181- # The lexer currently returns an ERROR token for unterminated multi-line comments
182- assert len (tokens ) == 2 # ERROR token + EOF
183- assert tokens [0 ].type == TokenType .ERROR
184- assert "unterminated comment" in tokens [0 ].value .lower ()
177+ # def test_js_unterminated_comment():
178+ # code = "/* Unterminated comment"
179+ # lexer = JavaScriptLexer(code)
180+ # tokens = lexer.tokenize()
181+ # # The lexer currently returns an ERROR token for unterminated multi-line comments
182+ # assert len(tokens) == 2 # ERROR token + EOF
183+ # assert tokens[0].type == TokenType.ERROR
184+ # assert "unterminated comment" in tokens[0].value.lower()
0 commit comments