From 960720ef4fd9662d94bbc25d5a6cfcaa313450a3 Mon Sep 17 00:00:00 2001 From: tenderlove Date: Fri, 21 Jan 2011 19:11:53 +0000 Subject: * ext/psych/lib/psych/nodes/node.rb: Make Psych::Nodes::Node enumerable. * ext/psych/lib/psych/visitors/depth_first.rb: Add a depth-first visitor to enumerate over a YAML AST in a depth-first fashion * test/psych/nodes/test_enumerable.rb: test for enumerating nodes * test/psych/visitors/test_depth_first.rb: test for depth-first visitor git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30624 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/psych/visitors/test_depth_first.rb | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 test/psych/visitors/test_depth_first.rb (limited to 'test/psych/visitors') 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 -- cgit v1.2.3