diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-04-09 10:21:21 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-04-09 10:21:21 -0700 |
commit | 774977e39b4a31b32f7ea607b2af223507e59f59 (patch) | |
tree | 3b3f42e40d81e4e03f8ffdb4c39aede70ae7aa51 /test | |
parent | 6faec131cb140948003fff0a89064f737e3b1b4d (diff) | |
download | psych-774977e39b4a31b32f7ea607b2af223507e59f59.zip |
implementing some deprecated api methods
Diffstat (limited to 'test')
-rw-r--r-- | test/psych/test_deprecated.rb | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/test/psych/test_deprecated.rb b/test/psych/test_deprecated.rb new file mode 100644 index 0000000..7e36daa --- /dev/null +++ b/test/psych/test_deprecated.rb @@ -0,0 +1,135 @@ +require_relative 'helper' + +module Psych + class TestDeprecated < TestCase + class QuickEmitter + attr_reader :name + attr_reader :value + + def initialize + @name = 'hello!!' + @value = 'Friday!' + end + + def to_yaml opts = {} + Psych.quick_emit object_id, opts do |out| + out.map taguri, to_yaml_style do |map| + map.add 'name', @name + map.add 'value', nil + end + end + end + end + + def setup + @qe = QuickEmitter.new + end + + def test_quick_emit + qe2 = Psych.load @qe.to_yaml + assert_equal @qe.name, qe2.name + assert_instance_of QuickEmitter, qe2 + assert_nil qe2.value + end + + def test_recursive_quick_emit + hash = { :qe => @qe } + hash2 = Psych.load Psych.dump hash + qe = hash2[:qe] + + assert_equal @qe.name, qe.name + assert_instance_of QuickEmitter, qe + assert_nil qe.value + end + + class QuickEmitterEncodeWith + attr_reader :name + attr_reader :value + + def initialize + @name = 'hello!!' + @value = 'Friday!' + end + + def encode_with coder + coder.map do |map| + map.add 'name', @name + map.add 'value', nil + end + end + + def to_yaml opts = {} + raise + end + end + + ### + # An object that defines both to_yaml and encode_with should only call + # encode_with. + def test_recursive_quick_emit_encode_with + qeew = QuickEmitterEncodeWith.new + hash = { :qe => qeew } + hash2 = Psych.load Psych.dump hash + qe = hash2[:qe] + + assert_equal qeew.name, qe.name + assert_instance_of QuickEmitterEncodeWith, qe + assert_nil qe.value + end + + class YamlInit + attr_reader :name + attr_reader :value + + def initialize + @name = 'hello!!' + @value = 'Friday!' + end + + def yaml_initialize tag, vals + vals.each { |ivar, val| instance_variable_set "@#{ivar}", 'TGIF!' } + end + end + + def test_yaml_initialize + hash = { :yi => YamlInit.new } + hash2 = Psych.load Psych.dump hash + yi = hash2[:yi] + + assert_equal 'TGIF!', yi.name + assert_equal 'TGIF!', yi.value + assert_instance_of YamlInit, yi + end + + class YamlInitAndInitWith + attr_reader :name + attr_reader :value + + def initialize + @name = 'shaners' + @value = 'Friday!' + end + + def init_with coder + coder.map.each { |ivar, val| instance_variable_set "@#{ivar}", 'TGIF!' } + end + + def yaml_initialize tag, vals + raise + end + end + + ### + # An object that implements both yaml_initialize and init_with should not + # receive the yaml_initialize call. + def test_yaml_initialize_and_init_with + hash = { :yi => YamlInitAndInitWith.new } + hash2 = Psych.load Psych.dump hash + yi = hash2[:yi] + + assert_equal 'TGIF!', yi.name + assert_equal 'TGIF!', yi.value + assert_instance_of YamlInitAndInitWith, yi + end + end +end |