From b613a2c5ae03c425bc94771e4eced1b80e4e80d0 Mon Sep 17 00:00:00 2001 From: hsbt Date: Mon, 27 Nov 2017 03:11:18 +0000 Subject: Merge psych-3.0.0.beta4 from upstream. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/psych/test_parser.rb | 62 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) (limited to 'test/psych/test_parser.rb') diff --git a/test/psych/test_parser.rb b/test/psych/test_parser.rb index 6b554cedf0..e8225dabb6 100644 --- a/test/psych/test_parser.rb +++ b/test/psych/test_parser.rb @@ -87,13 +87,22 @@ module Psych assert_equal 0, @parser.mark.line @parser.parse "---\n- hello\n- world" line_calls = @handler.marks.map(&:line).zip(@handler.calls.map(&:first)) - assert_equal [[0, :start_stream], + assert_equal [ + [0, :event_location], + [0, :start_stream], + [0, :event_location], [0, :start_document], + [1, :event_location], [1, :start_sequence], + [2, :event_location], [2, :scalar], + [3, :event_location], [3, :scalar], + [3, :event_location], [3, :end_sequence], + [3, :event_location], [3, :end_document], + [3, :event_location], [3, :end_stream]], line_calls assert_equal 3, @parser.mark.line @@ -103,13 +112,22 @@ module Psych assert_equal 0, @parser.mark.column @parser.parse "---\n- hello\n- world" col_calls = @handler.marks.map(&:column).zip(@handler.calls.map(&:first)) - assert_equal [[0, :start_stream], + assert_equal [ + [0, :event_location], + [0, :start_stream], + [3, :event_location], [3, :start_document], + [1, :event_location], [1, :start_sequence], + [0, :event_location], [0, :scalar], + [0, :event_location], [0, :scalar], + [0, :event_location], [0, :end_sequence], + [0, :event_location], [0, :end_document], + [0, :event_location], [0, :end_stream]], col_calls assert_equal 0, @parser.mark.column @@ -119,13 +137,22 @@ module Psych assert_equal 0, @parser.mark.index @parser.parse "---\n- hello\n- world" idx_calls = @handler.marks.map(&:index).zip(@handler.calls.map(&:first)) - assert_equal [[0, :start_stream], + assert_equal [ + [0, :event_location], + [0, :start_stream], + [3, :event_location], [3, :start_document], + [5, :event_location], [5, :start_sequence], + [12, :event_location], [12, :scalar], + [19, :event_location], [19, :scalar], + [19, :event_location], [19, :end_sequence], + [19, :event_location], [19, :end_document], + [19, :event_location], [19, :end_stream]], idx_calls assert_equal 19, @parser.mark.index @@ -137,7 +164,7 @@ module Psych # BOM + text yml = "\uFEFF#{tadpole}".encode('UTF-16LE') @parser.parse yml - assert_equal tadpole, @parser.handler.calls[2][1].first + assert_equal tadpole, @parser.handler.calls.find { |method, args| method == :scalar }[1].first end def test_external_encoding @@ -145,7 +172,7 @@ module Psych @parser.external_encoding = Psych::Parser::UTF16LE @parser.parse tadpole.encode 'UTF-16LE' - assert_equal tadpole, @parser.handler.calls[2][1].first + assert_equal tadpole, @parser.handler.calls.find { |method, args| method == :scalar }[1].first end def test_bogus_io @@ -324,6 +351,31 @@ module Psych assert_called :start_document, [[], [['!yaml!', 'tag:yaml.org,2002']], false] end + def test_event_location + @parser.parse "foo:\n" \ + " barbaz: [1, 2]" + + events = @handler.calls.each_slice(2).map do |location, event| + [event[0], location[1]] + end + + assert_equal [ + [:start_stream, [0, 0, 0, 0]], + [:start_document, [0, 0, 0, 0]], + [:start_mapping, [0, 0, 0, 0]], + [:scalar, [0, 0, 0, 3]], + [:start_mapping, [1, 2, 1, 2]], + [:scalar, [1, 2, 1, 8]], + [:start_sequence, [1, 10, 1, 11]], + [:scalar, [1, 11, 1, 12]], + [:scalar, [1, 14, 1, 15]], + [:end_sequence, [1, 15, 1, 16]], + [:end_mapping, [2, 0, 2, 0]], + [:end_mapping, [2, 0, 2, 0]], + [:end_document, [2, 0, 2, 0]], + [:end_stream, [2, 0, 2, 0]]], events + end + def assert_called call, with = nil, parser = @parser if with call = parser.handler.calls.find { |x| -- cgit v1.2.3