From 251090406a642d968e314db3aa1d5240db00598a Mon Sep 17 00:00:00 2001 From: frsyuki Date: Thu, 3 Jun 2010 21:52:01 +0900 Subject: [PATCH] ruby: adds a test case for buffering --- ruby/test/test_pack_unpack.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ruby/test/test_pack_unpack.rb b/ruby/test/test_pack_unpack.rb index e22bab3e..9dff44f1 100644 --- a/ruby/test/test_pack_unpack.rb +++ b/ruby/test/test_pack_unpack.rb @@ -203,6 +203,37 @@ class MessagePackTestPackUnpack < Test::Unit::TestCase # #check_map 5, (1<<32)-1 # memory error # end + it "buffer" do + str = "a"*32*1024*4 + raw = str.to_msgpack + pac = MessagePack::Unpacker.new + + len = 0 + parsed = false + + n = 655 + time = raw.size / n + time += 1 unless raw.size % n == 0 + off = 0 + + time.times do + assert(!parsed) + + fe = raw[off, n] + assert(fe.length > 0) + off += fe.length + + pac.feed fe + pac.each {|obj| + assert(!parsed) + assert_equal(obj, str) + parsed = true + } + end + + assert(parsed) + end + it "gc mark" do obj = [{["a","b"]=>["c","d"]}, ["e","f"], "d"] num = 4