mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 0b396d5880
			
		
	
	
		0b396d5880
		
	
	
	
	
		
			
			* Rely on encoding tags to determine if string should be dumped as binary.
    8949a47b8c
  * Specify "frozen_string_literal: true".
  * Support to binary release for mingw32 platform.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
	
			
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1,003 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1,003 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| require_relative 'helper'
 | |
| 
 | |
| class PsychStructWithIvar < Struct.new(:foo)
 | |
|   attr_reader :bar
 | |
|   def initialize *args
 | |
|     super
 | |
|     @bar = 'hello'
 | |
|   end
 | |
| end
 | |
| 
 | |
| module Psych
 | |
|   class TestStruct < TestCase
 | |
|     class StructSubclass < Struct.new(:foo)
 | |
|       def initialize foo, bar
 | |
|         super(foo)
 | |
|         @bar = bar
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def test_self_referential_struct
 | |
|       ss = StructSubclass.new(nil, 'foo')
 | |
|       ss.foo = ss
 | |
| 
 | |
|       loaded = Psych.load(Psych.dump(ss))
 | |
|       assert_instance_of(StructSubclass, loaded.foo)
 | |
| 
 | |
|       assert_equal(ss, loaded)
 | |
|     end
 | |
| 
 | |
|     def test_roundtrip
 | |
|       thing = PsychStructWithIvar.new('bar')
 | |
|       struct = Psych.load(Psych.dump(thing))
 | |
| 
 | |
|       assert_equal 'hello', struct.bar
 | |
|       assert_equal 'bar', struct.foo
 | |
|     end
 | |
| 
 | |
|     def test_load
 | |
|       obj = Psych.load(<<-eoyml)
 | |
| --- !ruby/struct:PsychStructWithIvar
 | |
| :foo: bar
 | |
| :@bar: hello
 | |
|       eoyml
 | |
| 
 | |
|       assert_equal 'hello', obj.bar
 | |
|       assert_equal 'bar', obj.foo
 | |
|     end
 | |
|   end
 | |
| end
 |