summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-12-31 09:48:10 -0600
committerLamont Granquist <lamont@scriptkiddie.org>2013-12-31 09:48:10 -0600
commitc0c7eb261ba293eea162b504138428e0ae66b9ef (patch)
tree78cd738b2da4a4f1dbaec5b6b47b2acc0248b425 /spec
parentca66f3c744f035290ae98ac2157c687765ac9e17 (diff)
downloadffi-yajl-c0c7eb261ba293eea162b504138428e0ae66b9ef.tar.gz
add test for deeply nested array/hashes
- currently explodes on the c extension
Diffstat (limited to 'spec')
-rw-r--r--spec/ffi_yajl/encoder_spec.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/ffi_yajl/encoder_spec.rb b/spec/ffi_yajl/encoder_spec.rb
index f2c96b6..2a7b102 100644
--- a/spec/ffi_yajl/encoder_spec.rb
+++ b/spec/ffi_yajl/encoder_spec.rb
@@ -20,5 +20,20 @@ describe "FFI_Yajl::Encoder" do
ruby = {12345678901234567890 => 2}
expect(encoder.encode(ruby)).to eq('{"12345678901234567890":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 = []
+ a = root
+ 127.times { |_| a << []; a = a[0] }
+ expect{ encoder.encode(root) }.to raise_error(FFI_Yajl::EncodeError)
+ end
+
+ it "raises an exception for deeply nested hashes" do
+ root = {}
+ a = root
+ 127.times {|_| a["a"] = {}; a = a["a"] }
+ expect{ encoder.encode(root) }.to raise_error(FFI_Yajl::EncodeError)
+ end
end