diff options
Diffstat (limited to 'test/psych')
-rw-r--r-- | test/psych/nodes/test_enumerable.rb | 43 | ||||
-rw-r--r-- | test/psych/visitors/test_depth_first.rb | 49 |
2 files changed, 92 insertions, 0 deletions
diff --git a/test/psych/nodes/test_enumerable.rb b/test/psych/nodes/test_enumerable.rb new file mode 100644 index 0000000000..57d4e895b4 --- /dev/null +++ b/test/psych/nodes/test_enumerable.rb @@ -0,0 +1,43 @@ +require_relative '../helper' + +module Psych + module Nodes + class TestEnumerable < TestCase + def test_includes_enumerable + yaml = '--- hello' + assert_equal 3, Psych.parse_stream(yaml).to_a.length + end + + def test_returns_enumerator + yaml = '--- hello' + assert_equal 3, Psych.parse_stream(yaml).each.map { |x| x }.length + end + + def test_scalar + assert_equal 3, calls('--- hello').length + end + + def test_sequence + assert_equal 4, calls("---\n- hello").length + end + + def test_mapping + assert_equal 5, calls("---\nhello: world").length + end + + def test_alias + assert_equal 5, calls("--- &yay\n- foo\n- *yay\n").length + end + + private + + def calls yaml + calls = [] + Psych.parse_stream(yaml).each do |node| + calls << node + end + calls + end + end + end +end diff --git a/test/psych/visitors/test_depth_first.rb b/test/psych/visitors/test_depth_first.rb new file mode 100644 index 0000000000..a84f5b6a04 --- /dev/null +++ b/test/psych/visitors/test_depth_first.rb @@ -0,0 +1,49 @@ +require_relative '../helper' + +module Psych + module Visitors + class TestDepthFirst < TestCase + class Collector < Struct.new(:calls) + def initialize(calls = []) + super + end + + def call obj + calls << obj + end + end + + def test_scalar + collector = Collector.new + visitor = Visitors::DepthFirst.new collector + visitor.accept Psych.parse_stream '--- hello' + + assert_equal 3, collector.calls.length + end + + def test_sequence + collector = Collector.new + visitor = Visitors::DepthFirst.new collector + visitor.accept Psych.parse_stream "---\n- hello" + + assert_equal 4, collector.calls.length + end + + def test_mapping + collector = Collector.new + visitor = Visitors::DepthFirst.new collector + visitor.accept Psych.parse_stream "---\nhello: world" + + assert_equal 5, collector.calls.length + end + + def test_alias + collector = Collector.new + visitor = Visitors::DepthFirst.new collector + visitor.accept Psych.parse_stream "--- &yay\n- foo\n- *yay\n" + + assert_equal 5, collector.calls.length + end + end + end +end |