From 937e0b46b7845f05473c8c29d8cf0f601305958c Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Mon, 24 Nov 2014 15:45:53 -0800 Subject: allow arbitrary Objects as keys i fixed Hashes/Arrays/true/false/nil, but forgot Object. --- spec/ffi_yajl/encoder_spec.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'spec') diff --git a/spec/ffi_yajl/encoder_spec.rb b/spec/ffi_yajl/encoder_spec.rb index 809f5b5..5c9e6b7 100644 --- a/spec/ffi_yajl/encoder_spec.rb +++ b/spec/ffi_yajl/encoder_spec.rb @@ -47,6 +47,23 @@ describe "FFI_Yajl::Encoder" do expect(encoder.encode(ruby)).to eq('{"12345678901234567890":2}') end + it "encodes objects in keys as strings" do + o = Object.new + ruby = { o => 2 } + expect(encoder.encode(ruby)).to eq(%Q{{"#{o.to_s}":2}}) + end + + it "encodes an object in a key which has a #to_json method as strings" do + class Thing + def to_json(*a) + "{}" + end + end + o = Thing.new + ruby = { o => 2 } + expect(encoder.encode(ruby)).to eq(%Q{{"#{o.to_s}":2}}) + end + # XXX: 127 == YAJL_MAX_DEPTH hardcodedness, zero control for us, it isn't even a twiddleable #define it "raises an exception for deeply nested arrays" do root = [] -- cgit v1.2.1