diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/psych/test_alias_and_anchor.rb |
Fresh start
Diffstat (limited to 'jni/ruby/test/psych/test_alias_and_anchor.rb')
-rw-r--r-- | jni/ruby/test/psych/test_alias_and_anchor.rb | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/jni/ruby/test/psych/test_alias_and_anchor.rb b/jni/ruby/test/psych/test_alias_and_anchor.rb new file mode 100644 index 0000000..9e2c240 --- /dev/null +++ b/jni/ruby/test/psych/test_alias_and_anchor.rb @@ -0,0 +1,96 @@ +require_relative 'helper' + +class ObjectWithInstanceVariables + attr_accessor :var1, :var2 +end + +class SubStringWithInstanceVariables < String + attr_accessor :var1 +end + +module Psych + class TestAliasAndAnchor < TestCase + def test_mri_compatibility + yaml = <<EOYAML +--- +- &id001 !ruby/object {} + +- *id001 +- *id001 +EOYAML + result = Psych.load yaml + 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] + + yaml = Psych.dump original + 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 |