1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/psych/visitors/test_emitter.rb
tenderlove 1c60db55ac * ext/psych/lib/psych.rb: calling yaml rather than to_yaml.
* ext/psych/lib/psych/nodes/node.rb: Rename `to_yaml` to just `yaml`
  in order to avoid YAML::ENGINE switching from replacing this method.
* test/psych/helper.rb: fix tests for method name change.
* test/psych/test_document.rb: ditto
* test/psych/visitors/test_emitter.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-03 21:31:43 +00:00

144 lines
3.6 KiB
Ruby

require 'psych/helper'
module Psych
module Visitors
class TestEmitter < TestCase
def setup
super
@io = StringIO.new
@visitor = Visitors::Emitter.new @io
end
def test_options
io = StringIO.new
visitor = Visitors::Emitter.new io, :indentation => 3
s = Nodes::Stream.new
doc = Nodes::Document.new
mapping = Nodes::Mapping.new
m2 = Nodes::Mapping.new
m2.children << Nodes::Scalar.new('a')
m2.children << Nodes::Scalar.new('b')
mapping.children << Nodes::Scalar.new('key')
mapping.children << m2
doc.children << mapping
s.children << doc
visitor.accept s
assert_match(/^[ ]{3}a/, io.string)
end
def test_stream
s = Nodes::Stream.new
@visitor.accept s
assert_equal '', @io.string
end
def test_document
s = Nodes::Stream.new
doc = Nodes::Document.new [1,1]
scalar = Nodes::Scalar.new 'hello world'
doc.children << scalar
s.children << doc
@visitor.accept s
assert_match(/1.1/, @io.string)
assert_equal @io.string, s.yaml
end
def test_document_implicit_end
s = Nodes::Stream.new
doc = Nodes::Document.new
mapping = Nodes::Mapping.new
mapping.children << Nodes::Scalar.new('key')
mapping.children << Nodes::Scalar.new('value')
doc.children << mapping
s.children << doc
@visitor.accept s
assert_match(/key: value/, @io.string)
assert_equal @io.string, s.yaml
assert(/\.\.\./ !~ s.yaml)
end
def test_scalar
s = Nodes::Stream.new
doc = Nodes::Document.new
scalar = Nodes::Scalar.new 'hello world'
doc.children << scalar
s.children << doc
@visitor.accept s
assert_match(/hello/, @io.string)
assert_equal @io.string, s.yaml
end
def test_scalar_with_tag
s = Nodes::Stream.new
doc = Nodes::Document.new
scalar = Nodes::Scalar.new 'hello world', nil, '!str', false, false, 5
doc.children << scalar
s.children << doc
@visitor.accept s
assert_match(/str/, @io.string)
assert_match(/hello/, @io.string)
assert_equal @io.string, s.yaml
end
def test_sequence
s = Nodes::Stream.new
doc = Nodes::Document.new
scalar = Nodes::Scalar.new 'hello world'
seq = Nodes::Sequence.new
seq.children << scalar
doc.children << seq
s.children << doc
@visitor.accept s
assert_match(/- hello/, @io.string)
assert_equal @io.string, s.yaml
end
def test_mapping
s = Nodes::Stream.new
doc = Nodes::Document.new
mapping = Nodes::Mapping.new
mapping.children << Nodes::Scalar.new('key')
mapping.children << Nodes::Scalar.new('value')
doc.children << mapping
s.children << doc
@visitor.accept s
assert_match(/key: value/, @io.string)
assert_equal @io.string, s.yaml
end
def test_alias
s = Nodes::Stream.new
doc = Nodes::Document.new
mapping = Nodes::Mapping.new
mapping.children << Nodes::Scalar.new('key', 'A')
mapping.children << Nodes::Alias.new('A')
doc.children << mapping
s.children << doc
@visitor.accept s
assert_match(/&A key: \*A/, @io.string)
assert_equal @io.string, s.yaml
end
end
end
end