diff options
author | Joe Rafaniello <jrafanie@gmail.com> | 2012-07-13 13:14:10 -0400 |
---|---|---|
committer | Joe Rafaniello <jrafanie@gmail.com> | 2012-07-13 18:07:40 -0400 |
commit | 4027c6ddd0fc91d301dc80814884a220be774a0a (patch) | |
tree | 757add21f1dcd48f13958184b20c43d1a5eb9c6a /test | |
parent | 81ff3dedbb72bfc0dccbb60b7ed079a1f9068de1 (diff) | |
download | psych-4027c6ddd0fc91d301dc80814884a220be774a0a.zip |
From yaml, register a newly created String with aliases. To yaml, register Strings containing ivars with aliases.
Diffstat (limited to 'test')
-rw-r--r-- | test/psych/test_alias_and_anchor.rb | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/test/psych/test_alias_and_anchor.rb b/test/psych/test_alias_and_anchor.rb index 48771d6..aa4773b 100644 --- a/test/psych/test_alias_and_anchor.rb +++ b/test/psych/test_alias_and_anchor.rb @@ -1,5 +1,13 @@ require 'psych/helper' +class ObjectWithInstanceVariables + attr_accessor :var1, :var2 +end + +class SubStringWithInstanceVariables < String + attr_accessor :var1 +end + module Psych class TestAliasAndAnchor < TestCase def test_mri_compatibility @@ -14,6 +22,40 @@ EOYAML result.each {|el| assert_same(result[0], el) } end + def test_mri_compatibility_object_with_ivars + yaml = <<EOYAML +--- +- &id001 !ruby/object:ObjectWithInstanceVariables + var1: test1 + var2: test2 +- *id001 +- *id001 +EOYAML + + result = Psych.load yaml + result.each do |el| + assert_same(result[0], el) + assert_equal('test1', el.var1) + assert_equal('test2', el.var2) + end + end + + def test_mri_compatibility_substring_with_ivars + yaml = <<EOYAML +--- +- &id001 !str:SubStringWithInstanceVariables + str: test + "@var1": test +- *id001 +- *id001 +EOYAML + result = Psych.load yaml + result.each do |el| + assert_same(result[0], el) + assert_equal('test', el.var1) + end + end + def test_anchor_alias_round_trip o = Object.new original = [o,o,o] @@ -22,5 +64,33 @@ EOYAML result = Psych.load yaml result.each {|el| assert_same(result[0], el) } end + + def test_anchor_alias_round_trip_object_with_ivars + o = ObjectWithInstanceVariables.new + o.var1 = 'test1' + o.var2 = 'test2' + original = [o,o,o] + + yaml = Psych.dump original + result = Psych.load yaml + result.each do |el| + assert_same(result[0], el) + assert_equal('test1', el.var1) + assert_equal('test2', el.var2) + end + end + + def test_anchor_alias_round_trip_substring_with_ivars + o = SubStringWithInstanceVariables.new + o.var1 = 'test' + original = [o,o,o] + + yaml = Psych.dump original + result = Psych.load yaml + result.each do |el| + assert_same(result[0], el) + assert_equal('test', el.var1) + end + end end end |