1 # frozen_string_literal: true
2 require_relative 'helper'
5 class TestObjectReferences < TestCase
6 def test_range_has_references
7 assert_reference_trip 1..2
10 def test_module_has_references
11 assert_reference_trip Psych
14 def test_class_has_references
15 assert_reference_trip TestObjectReferences
18 def test_rational_has_references
19 assert_reference_trip Rational('1.2')
22 def test_complex_has_references
23 assert_reference_trip Complex(1, 2)
26 def test_datetime_has_references
27 assert_reference_trip DateTime.now
30 def test_struct_has_references
31 assert_reference_trip Struct.new(:foo).new(1)
34 def assert_reference_trip obj
35 yml = Psych.dump([obj, obj])
36 assert_match(/\*-?\d+/, yml)
39 rescue Psych::DisallowedClass
40 data = Psych.unsafe_load yml
42 assert_equal data.first.object_id, data.last.object_id
45 def test_float_references
46 data = Psych.unsafe_load <<-eoyml
51 assert_equal data.first, data.last
52 assert_equal data.first.object_id, data.last.object_id
55 def test_binary_references
56 data = Psych.unsafe_load <<-eoyml
62 assert_equal data.first, data.last
63 assert_equal data.first.object_id, data.last.object_id
66 def test_regexp_references
67 data = Psych.unsafe_load <<-eoyml
69 - &name !ruby/regexp /pattern/i
72 assert_equal data.first, data.last
73 assert_equal data.first.object_id, data.last.object_id