test/test_object.rb in oj-2.8.1 vs test/test_object.rb in oj-2.9.0

- old
+ new

@@ -100,10 +100,52 @@ def inspect() return super + '(' + @safe + ')' end end +class AutoStrung < String + attr_accessor :safe + + def initialize(str, safe) + super(str) + @safe = safe + end + + def eql?(o) + self.class == o.class && super(o) && @safe == o.safe + end + alias == eql? +end + +class AutoArray < Array + attr_accessor :safe + + def initialize(a, safe) + super(a) + @safe = safe + end + + def eql?(o) + self.class == o.class && super(o) && @safe == o.safe + end + alias == eql? +end + +class AutoHash < Hash + attr_accessor :safe + + def initialize(h, safe) + super(h) + @safe = safe + end + + def eql?(o) + self.class == o.class && super(o) && @safe == o.safe + end + alias == eql? +end + def hash_eql(h1, h2) return false if h1.size != h2.size h1.keys.each do |k| return false unless h1[k] == h2[k] end @@ -416,10 +458,27 @@ end def test_odd_string Oj.register_odd(Strung, Strung, :create, :to_s, 'safe?') s = Strung.new("Pete", true) - dump_and_load(Strung.new("Pete", true), false) + dump_and_load(s, false) + end + + def test_auto_string + s = AutoStrung.new("Pete", true) + dump_and_load(s, false) + end + + def test_auto_array + a = AutoArray.new([1, 'abc', nil], true) + dump_and_load(a, false) + end + + def test_auto_hash + h = AutoHash.new(nil, true) + h['a'] = 1 + h['b'] = 2 + dump_and_load(h, false) end def dump_and_load(obj, trace=false) json = Oj.dump(obj, :indent => 2, :mode => :object) puts json if trace