diff options
author | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-21 19:11:53 +0000 |
---|---|---|
committer | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-21 19:11:53 +0000 |
commit | 960720ef4fd9662d94bbc25d5a6cfcaa313450a3 (patch) | |
tree | c9cdafb9fb990ac2189e6c167f4c70c9b5d5c09f /test/psych/nodes | |
parent | 5f710e22cc5d2d1ddab2d3a6abea5715b6b23b69 (diff) | |
download | ruby-960720ef4fd9662d94bbc25d5a6cfcaa313450a3.tar.gz |
* 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
Diffstat (limited to 'test/psych/nodes')
-rw-r--r-- | test/psych/nodes/test_enumerable.rb | 43 |
1 files changed, 43 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 |