summaryrefslogtreecommitdiff
path: root/test/psych/test_serialize_subclasses.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/psych/test_serialize_subclasses.rb')
-rw-r--r--test/psych/test_serialize_subclasses.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/psych/test_serialize_subclasses.rb b/test/psych/test_serialize_subclasses.rb
new file mode 100644
index 0000000000..e198a66535
--- /dev/null
+++ b/test/psych/test_serialize_subclasses.rb
@@ -0,0 +1,38 @@
+require 'test/psych/helper'
+
+module Psych
+ class TestSerializeSubclasses < TestCase
+ class SomeObject
+ def initialize one, two
+ @one = one
+ @two = two
+ end
+
+ def == other
+ @one == other.instance_eval { @one } &&
+ @two == other.instance_eval { @two }
+ end
+ end
+
+ def test_some_object
+ so = SomeObject.new('foo', [1,2,3])
+ assert_equal so, Psych.load(Psych.dump(so))
+ end
+
+ class StructSubclass < Struct.new(:foo)
+ def initialize foo, bar
+ super(foo)
+ @bar = bar
+ end
+
+ def == other
+ super(other) && @bar == other.instance_eval{ @bar }
+ end
+ end
+
+ def test_struct_subclass
+ so = StructSubclass.new('foo', [1,2,3])
+ assert_equal so, Psych.load(Psych.dump(so))
+ end
+ end
+end