Skip to content

Commit e104cd1

Browse files
committed
Add test_class_tokenize_string_with_escape
1 parent b096046 commit e104cd1

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

test/test_rdoc_ruby_lex.rb

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,101 @@ def test_class_tokenize_string
307307
assert_equal expected, tokens
308308
end
309309

310+
def test_class_tokenize_string_with_escape
311+
tokens = RDoc::RubyLex.tokenize <<'RUBY', nil
312+
[
313+
'\\',
314+
'\'',
315+
"'",
316+
"\'\"\`",
317+
"\#",
318+
"\#{}",
319+
"#",
320+
"#{}",
321+
/'"/,
322+
/\'\"/,
323+
/\//,
324+
/\\/,
325+
/\#/,
326+
/\#{}/,
327+
/#/,
328+
/#{}/
329+
]
330+
RUBY
331+
332+
expected = [
333+
@TK::TkLBRACK .new( 0, 1, 0, "["),
334+
@TK::TkNL .new( 1, 1, 1, "\n"),
335+
@TK::TkSPACE .new( 2, 2, 0, " "),
336+
@TK::TkSTRING .new( 4, 2, 2, "'\\\\'"),
337+
@TK::TkCOMMA .new( 8, 2, 6, ","),
338+
@TK::TkNL .new( 9, 2, 2, "\n"),
339+
@TK::TkSPACE .new( 10, 3, 0, " "),
340+
@TK::TkSTRING .new( 12, 3, 2, "'\\''"),
341+
@TK::TkCOMMA .new( 16, 3, 6, ","),
342+
@TK::TkNL .new( 17, 3, 10, "\n"),
343+
@TK::TkSPACE .new( 18, 4, 0, " "),
344+
@TK::TkSTRING .new( 20, 4, 2, "\"'\""),
345+
@TK::TkCOMMA .new( 23, 4, 5, ","),
346+
@TK::TkNL .new( 24, 4, 18, "\n"),
347+
@TK::TkSPACE .new( 25, 5, 0, " "),
348+
@TK::TkSTRING .new( 27, 5, 2, "\"\\'\\\"\\`\""),
349+
@TK::TkCOMMA .new( 35, 5, 10, ","),
350+
@TK::TkNL .new( 36, 5, 25, "\n"),
351+
@TK::TkSPACE .new( 37, 6, 0, " "),
352+
@TK::TkSTRING .new( 39, 6, 2, "\"\\#\""),
353+
@TK::TkCOMMA .new( 43, 6, 6, ","),
354+
@TK::TkNL .new( 44, 6, 37, "\n"),
355+
@TK::TkSPACE .new( 45, 7, 0, " "),
356+
@TK::TkSTRING .new( 47, 7, 2, "\"\\\#{}\""),
357+
@TK::TkCOMMA .new( 53, 7, 8, ","),
358+
@TK::TkNL .new( 54, 7, 45, "\n"),
359+
@TK::TkSPACE .new( 55, 8, 0, " "),
360+
@TK::TkSTRING .new( 57, 8, 2, "\"#\""),
361+
@TK::TkCOMMA .new( 60, 8, 5, ","),
362+
@TK::TkNL .new( 61, 8, 55, "\n"),
363+
@TK::TkSPACE .new( 62, 9, 0, " "),
364+
@TK::TkDSTRING.new( 64, 9, 2, "\"\#{}\""),
365+
@TK::TkCOMMA .new( 69, 9, 7, ","),
366+
@TK::TkNL .new( 70, 9, 62, "\n"),
367+
@TK::TkSPACE .new( 71, 10, 0, " "),
368+
@TK::TkREGEXP .new( 73, 10, 2, "/'\"/"),
369+
@TK::TkCOMMA .new( 77, 10, 6, ","),
370+
@TK::TkNL .new( 78, 10, 71, "\n"),
371+
@TK::TkSPACE .new( 79, 11, 0, " "),
372+
@TK::TkREGEXP .new( 81, 11, 2, "/\\'\\\"/"),
373+
@TK::TkCOMMA .new( 87, 11, 8, ","),
374+
@TK::TkNL .new( 88, 11, 79, "\n"),
375+
@TK::TkSPACE .new( 89, 12, 0, " "),
376+
@TK::TkREGEXP .new( 91, 12, 2, "/\\//"),
377+
@TK::TkCOMMA .new( 95, 12, 6, ","),
378+
@TK::TkNL .new( 96, 12, 89, "\n"),
379+
@TK::TkSPACE .new( 97, 13, 0, " "),
380+
@TK::TkREGEXP .new( 99, 13, 2, "/\\\\/"),
381+
@TK::TkCOMMA .new(103, 13, 6, ","),
382+
@TK::TkNL .new(104, 13, 97, "\n"),
383+
@TK::TkSPACE .new(105, 14, 0, " "),
384+
@TK::TkREGEXP .new(107, 14, 2, "/\\#/"),
385+
@TK::TkCOMMA .new(111, 14, 6, ","),
386+
@TK::TkNL .new(112, 14, 105, "\n"),
387+
@TK::TkSPACE .new(113, 15, 0, " "),
388+
@TK::TkREGEXP .new(115, 15, 2, "/\\\#{}/"),
389+
@TK::TkCOMMA .new(121, 15, 8, ","),
390+
@TK::TkNL .new(122, 15, 113, "\n"),
391+
@TK::TkSPACE .new(123, 16, 0, " "),
392+
@TK::TkREGEXP .new(125, 16, 2, "/#/"),
393+
@TK::TkCOMMA .new(128, 16, 5, ","),
394+
@TK::TkNL .new(129, 16, 123, "\n"),
395+
@TK::TkSPACE .new(130, 17, 0, " "),
396+
@TK::TkDREGEXP.new(132, 17, 2, "/\#{}/"),
397+
@TK::TkNL .new(137, 17, 7, "\n"),
398+
@TK::TkRBRACK .new(138, 18, 0, "]"),
399+
@TK::TkNL .new(139, 18, 138, "\n")
400+
]
401+
402+
assert_equal expected, tokens
403+
end
404+
310405
def test_class_tokenize_string_escape
311406
tokens = RDoc::RubyLex.tokenize '"\\n"', nil
312407
assert_equal @TK::TkSTRING.new( 0, 1, 0, "\"\\n\""), tokens.first

0 commit comments

Comments
 (0)