1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 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
|