require 'stringio' require 'zlib' describe "GzipReader#eof?" do before :each do @data = '{"a":1234}' @zip = "\037\213\b\000\000\000\000\000\000\003\253VJT\2622426\251\005\000\304\024v\325\n\000\000\000" @io = StringIO.new @zip end it "returns true when at EOF" do gz = Zlib::GzipReader.new @io gz.eof?.should be_false gz.read gz.eof?.should be_true end it "returns true when at EOF with the exact length of uncompressed data" do gz = Zlib::GzipReader.new @io gz.eof?.should be_false gz.read(10) gz.eof?.should be_true end it "returns true when at EOF with a length greater than the size of uncompressed data" do gz = Zlib::GzipReader.new @io gz.eof?.should be_false gz.read(11) gz.eof?.should be_true end it "returns false when at EOF when there's data left in the buffer to read" do gz = Zlib::GzipReader.new @io data = gz.read(9) gz.eof?.should be_false gz.read gz.eof?.should be_true end # This is especially important for JRuby, since eof? there # is more than just a simple accessor. it "does not affect the reading data" do gz = Zlib::GzipReader.new @io 0.upto(9) do |i| gz.eof?.should be_false gz.read(1).should == @data[i, 1] end gz.eof?.should be_true gz.read().should == "" gz.eof?.should be_true end end