@@ -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
@@ -64,7 +64,9 @@ def test_ruby_numbers():
6464 ]
6565 assert_tokens_equal (tokens , expected )
6666
67- def test_ruby_strings () code = "\' hello\' \" world\" \" with \\ \" escape\\ \" \" \t \" interp #{var} end\" " lexer = RubyLexer (code )
67+ def test_ruby_strings ():
68+ code = "'hello' \" world\" \" with \\ \" escape\\ \" \" \" interp #{var} end\" "
69+ lexer = RubyLexer (code )
6870 tokens = lexer .tokenize ()
6971 expected = [
7072 (TokenType .STRING , "'hello'" ),
@@ -166,17 +168,18 @@ def calculate(x, y)
166168 lexer = RubyLexer (code )
167169 tokens = lexer .tokenize ()
168170 expected = [
169- (TokenType .KEYWORD , "def" ), (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "x" ), (TokenType .ERROR , "," ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ")" ), (TokenType .NEWLINE , "\\ n" ),
171+ (TokenType .NEWLINE , "\\ n" ),
172+ (TokenType .KEYWORD , "def" ), (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .IDENTIFIER , "x" ), (TokenType .OPERATOR , "," ), (TokenType .IDENTIFIER , "y" ), (TokenType .DELIMITER , ")" ), (TokenType .NEWLINE , "\\ n" ),
170173 (TokenType .COMMENT , "# Calculate sum" ), (TokenType .NEWLINE , "\\ n" ),
171174 (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , "=" ), (TokenType .IDENTIFIER , "x" ), (TokenType .OPERATOR , "+" ), (TokenType .IDENTIFIER , "y" ), (TokenType .NEWLINE , "\\ n" ),
172175 (TokenType .IDENTIFIER , "puts" ), (TokenType .STRING , '"Result: #{sum}"' ), (TokenType .KEYWORD , "if" ), (TokenType .GLOBAL_VAR , "$DEBUG" ), (TokenType .NEWLINE , "\\ n" ),
173- (TokenType .KEYWORD , "return" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , ">" ), (TokenType .NUMBER , "10" ), (TokenType .ERROR , "?" ), (TokenType .SYMBOL , ":large" ), (TokenType .ERROR , ":" ), (TokenType .SYMBOL , ":small" ), (TokenType .NEWLINE , "\\ n" ),
176+ (TokenType .KEYWORD , "return" ), (TokenType .IDENTIFIER , "sum" ), (TokenType .OPERATOR , ">" ), (TokenType .NUMBER , "10" ), (TokenType .OPERATOR , "?" ), (TokenType .SYMBOL , ":large" ), (TokenType .OPERATOR , ":" ), (TokenType .SYMBOL , ":small" ), (TokenType .NEWLINE , "\\ n" ),
174177 (TokenType .KEYWORD , "end" ), (TokenType .NEWLINE , "\\ n" ),
175178 (TokenType .NEWLINE , "\\ n" ),
176- (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .NUMBER , "5" ), (TokenType .ERROR , "," ), (TokenType .NUMBER , "7" ), (TokenType .DELIMITER , ")" ), (TokenType .NEWLINE , "\\ n" ),
179+ (TokenType .IDENTIFIER , "calculate" ), (TokenType .DELIMITER , "(" ), (TokenType .NUMBER , "5" ), (TokenType .OPERATOR , "," ), (TokenType .NUMBER , "7" ), (TokenType .DELIMITER , ")" ), (TokenType .NEWLINE , "\\ n" ),
177180 ]
178- # Note: The current Ruby lexer seems to have issues with commas and ternary operators, marking them as ERROR.
179- # These tests reflect the *current* behavior. Further refinement of the lexer might be needed.
181+ # Note: The expected tokens assume the lexer handles commas and ternary operators correctly
182+ # Adjust these expectations based on your actual lexer implementation
180183 assert_tokens_equal (tokens , expected )
181184
182185def test_ruby_error_character ():
@@ -198,6 +201,4 @@ def test_ruby_unterminated_string():
198201 tokens = lexer .tokenize ()
199202 assert len (tokens ) == 2 # ERROR token + EOF
200203 assert tokens [0 ].type == TokenType .ERROR
201- assert "Unclosed string" in tokens [0 ].value
202-
203-
204+ assert "Unclosed string" in tokens [0 ].value
0 commit comments