1require 'psych/helper' 2 3module Psych 4 class TestObjectReferences < TestCase 5 def test_range_has_references 6 assert_reference_trip 1..2 7 end 8 9 def test_module_has_references 10 assert_reference_trip Psych 11 end 12 13 def test_class_has_references 14 assert_reference_trip TestObjectReferences 15 end 16 17 def test_rational_has_references 18 assert_reference_trip Rational('1.2') 19 end 20 21 def test_complex_has_references 22 assert_reference_trip Complex(1, 2) 23 end 24 25 def test_datetime_has_references 26 assert_reference_trip DateTime.now 27 end 28 29 def assert_reference_trip obj 30 yml = Psych.dump([obj, obj]) 31 assert_match(/\*-?\d+/, yml) 32 data = Psych.load yml 33 assert_equal data.first.object_id, data.last.object_id 34 end 35 36 def test_float_references 37 data = Psych.load <<-eoyml 38---\s 39- &name 1.2 40- *name 41 eoyml 42 assert_equal data.first, data.last 43 assert_equal data.first.object_id, data.last.object_id 44 end 45 46 def test_binary_references 47 data = Psych.load <<-eoyml 48--- 49- &name !binary |- 50 aGVsbG8gd29ybGQh 51- *name 52 eoyml 53 assert_equal data.first, data.last 54 assert_equal data.first.object_id, data.last.object_id 55 end 56 57 def test_regexp_references 58 data = Psych.load <<-eoyml 59---\s 60- &name !ruby/regexp /pattern/i 61- *name 62 eoyml 63 assert_equal data.first, data.last 64 assert_equal data.first.object_id, data.last.object_id 65 end 66 end 67end 68