diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-01-17 17:45:07 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-01-17 17:45:07 -0800 |
commit | 59ecddb311265d4dc9e2ddec7122509c8526afc6 (patch) | |
tree | fda19857dce7329d9843df7cd870596a43b2c2d2 /test | |
parent | 33ce8650bac29190dde937b1b7d3e21fd06926e7 (diff) | |
download | psych-59ecddb311265d4dc9e2ddec7122509c8526afc6.zip |
syncing with ruby trunk
Diffstat (limited to 'test')
-rw-r--r-- | test/psych/test_array.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/psych/test_array.rb b/test/psych/test_array.rb index ec6a1aa..9eedbb4 100644 --- a/test/psych/test_array.rb +++ b/test/psych/test_array.rb @@ -2,11 +2,39 @@ require 'psych/helper' module Psych class TestArray < TestCase + class X < Array + end + + class Y < Array + attr_accessor :val + end + def setup super @list = [{ :a => 'b' }, 'foo'] end + def test_subclass + yaml = Psych.dump X.new + assert_match X.name, yaml + + list = X.new + list << 1 + assert_equal X, list.class + assert_equal 1, list.first + end + + def test_subclass_with_attributes + y = Psych.load Psych.dump Y.new.tap {|y| y.val = 1} + assert_equal Y, y.class + assert_equal 1, y.val + end + + def test_backwards_with_syck + x = Psych.load "--- !seq:#{X.name} []\n\n" + assert_equal X, x.class + end + def test_self_referential @list << @list assert_cycle(@list) |