1- $LOAD_PATH . unshift File . expand_path ( '../../lib' , __FILE__ )
1+ # frozen_string_literal: false
22require 'irb'
3- require 'rubygems'
43
54require_relative "helper"
65
76module TestIRB
8- class TestNestingParser < TestCase
7+ class NestingParserTest < TestCase
98 def setup
109 save_encodings
1110 end
@@ -18,7 +17,7 @@ def parse_by_line(code)
1817 IRB ::NestingParser . parse_by_line ( RubyLex . ripper_lex_without_warning ( code ) )
1918 end
2019
21- def test_scan
20+ def test_open_tokens
2221 code = <<~'EOS'
2322 class A
2423 def f
@@ -78,7 +77,11 @@ def f() = 1
7877 end
7978 EOS
8079 line_results = parse_by_line ( code )
81- line_results [ 1 ...-1 ] . each { |result | assert_equal ( [ 'class' ] , result [ 2 ] . map ( &:tok ) ) }
80+ assert_equal ( code . lines . size , line_results . size )
81+ class_open , *inner_line_results , class_close = line_results
82+ assert_equal ( [ 'class' ] , class_open [ 2 ] . map ( &:tok ) )
83+ inner_line_results . each { |result | assert_equal ( [ 'class' ] , result [ 2 ] . map ( &:tok ) ) }
84+ assert_equal ( [ ] , class_close [ 2 ] . map ( &:tok ) )
8285 end
8386
8487 def test_multiline_string
@@ -93,13 +96,14 @@ def test_multiline_string
9396 A
9497 EOS
9598 line_results = parse_by_line ( code )
99+ assert_equal ( code . lines . size , line_results . size )
96100 string_content_line , string_opens = line_results [ 1 ]
97- assert_equal ( "\n aaa\n bbb\n " , string_content_line . map ( & : first) . map ( & :tok ) . join )
98- assert_equal ( "aaa\n " , string_content_line . map ( & :last ) . join )
101+ assert_equal ( "\n aaa\n bbb\n " , string_content_line . first . first . tok )
102+ assert_equal ( "aaa\n " , string_content_line . first . last )
99103 assert_equal ( [ '"' ] , string_opens . map ( &:tok ) )
100104 heredoc_content_line , heredoc_opens = line_results [ 6 ]
101- assert_equal ( "aaa\n bbb\n " , heredoc_content_line . map ( & : first) . map ( & :tok ) . join )
102- assert_equal ( "bbb\n " , heredoc_content_line . map ( & :last ) . join )
105+ assert_equal ( "aaa\n bbb\n " , heredoc_content_line . first . first . tok )
106+ assert_equal ( "bbb\n " , heredoc_content_line . first . last )
103107 assert_equal ( [ '<<A' ] , heredoc_opens . map ( &:tok ) )
104108 _line , _prev_opens , next_opens , _min_depth = line_results . last
105109 assert_equal ( [ ] , next_opens )
@@ -230,7 +234,7 @@ def test_for_in
230234 here
231235 end
232236 EOS
233- line_results = parse_by_line ( code ) . select { |tokens , | tokens . map ( &:last ) . include? 'here' }
237+ line_results = parse_by_line ( code ) . select { |tokens , | tokens . map ( &:last ) . include? ( 'here' ) }
234238 assert_equal ( 7 , line_results . size )
235239 line_results . each do |_tokens , _prev_opens , next_opens , _min_depth |
236240 assert_equal ( [ 'for' ] , next_opens . map ( &:tok ) )
@@ -268,7 +272,7 @@ def test_while_until
268272 EOS
269273 %w[ while until ] . each do |keyword |
270274 code = base_code . gsub ( 'while_or_until' , keyword )
271- line_results = parse_by_line ( code ) . select { |tokens , | tokens . map ( &:last ) . include? 'here' }
275+ line_results = parse_by_line ( code ) . select { |tokens , | tokens . map ( &:last ) . include? ( 'here' ) }
272276 assert_equal ( 7 , line_results . size )
273277 line_results . each do |_tokens , _prev_opens , next_opens , _min_depth |
274278 assert_equal ( [ keyword ] , next_opens . map ( &:tok ) )
0 commit comments