diff options
author | Kevin Newton <[email protected]> | 2024-05-29 10:12:51 -0400 |
---|---|---|
committer | Kevin Newton <[email protected]> | 2024-05-30 15:18:20 -0400 |
commit | 72452f43871b8034bfa718ed823bc62b5b81d6f9 (patch) | |
tree | 1bd87295dfcf10d20bce7f6d18184644bb079387 /test/prism/api/parse_stream_test.rb | |
parent | 1ab7c412d2e3880a7ad233c32e93961888f8145c (diff) |
[ruby/prism] Tests overhaul
https://github.com/ruby/prism/commit/6f886be0a4
Diffstat (limited to 'test/prism/api/parse_stream_test.rb')
-rw-r--r-- | test/prism/api/parse_stream_test.rb | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/test/prism/api/parse_stream_test.rb b/test/prism/api/parse_stream_test.rb new file mode 100644 index 0000000000..0edee74cc2 --- /dev/null +++ b/test/prism/api/parse_stream_test.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require_relative "../test_helper" + +module Prism + class ParseStreamTest < TestCase + def test_single_line + io = StringIO.new("1 + 2") + result = Prism.parse_stream(io) + + assert result.success? + assert_kind_of Prism::CallNode, result.statement + end + + def test_multi_line + io = StringIO.new("1 + 2\n3 + 4") + result = Prism.parse_stream(io) + + assert result.success? + assert_kind_of Prism::CallNode, result.statement + assert_kind_of Prism::CallNode, result.statement + end + + def test_multi_read + io = StringIO.new("a" * 4096 * 4) + result = Prism.parse_stream(io) + + assert result.success? + assert_kind_of Prism::CallNode, result.statement + end + + def test___END__ + io = StringIO.new("1 + 2\n3 + 4\n__END__\n5 + 6") + result = Prism.parse_stream(io) + + assert result.success? + assert_equal 2, result.value.statements.body.length + assert_equal "5 + 6", io.read + end + + def test_false___END___in_string + io = StringIO.new("1 + 2\n3 + 4\n\"\n__END__\n\"\n5 + 6") + result = Prism.parse_stream(io) + + assert result.success? + assert_equal 4, result.value.statements.body.length + end + + def test_false___END___in_regexp + io = StringIO.new("1 + 2\n3 + 4\n/\n__END__\n/\n5 + 6") + result = Prism.parse_stream(io) + + assert result.success? + assert_equal 4, result.value.statements.body.length + end + + def test_false___END___in_list + io = StringIO.new("1 + 2\n3 + 4\n%w[\n__END__\n]\n5 + 6") + result = Prism.parse_stream(io) + + assert result.success? + assert_equal 4, result.value.statements.body.length + end + + def test_false___END___in_heredoc + io = StringIO.new("1 + 2\n3 + 4\n<<-EOF\n__END__\nEOF\n5 + 6") + result = Prism.parse_stream(io) + + assert result.success? + assert_equal 4, result.value.statements.body.length + end + end +end |