161 lines
5.1 KiB
Ruby
161 lines
5.1 KiB
Ruby
|
require 'test_helper'
|
||
|
|
||
|
class ZipInputStreamTest < MiniTest::Unit::TestCase
|
||
|
include AssertEntry
|
||
|
|
||
|
def test_new
|
||
|
zis = ::Zip::InputStream.new(TestZipFile::TEST_ZIP2.zip_name)
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
zis.close
|
||
|
end
|
||
|
|
||
|
def test_openWithBlock
|
||
|
::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name) {
|
||
|
|zis|
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def test_openWithoutBlock
|
||
|
zis = ::Zip::InputStream.open(File.new(TestZipFile::TEST_ZIP2.zip_name, "rb"))
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
end
|
||
|
|
||
|
def test_openBufferWithBlock
|
||
|
::Zip::InputStream.open(File.new(TestZipFile::TEST_ZIP2.zip_name, "rb")) do |zis|
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_open_string_io_without_block
|
||
|
string_io = ::StringIO.new(::File.read(TestZipFile::TEST_ZIP2.zip_name))
|
||
|
zis = ::Zip::InputStream.open(string_io)
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
end
|
||
|
|
||
|
def test_open_string_io_with_block
|
||
|
string_io = ::StringIO.new(::File.read(TestZipFile::TEST_ZIP2.zip_name))
|
||
|
::Zip::InputStream.open(string_io) do |zis|
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_openBufferWithoutBlock
|
||
|
zis = ::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name)
|
||
|
assert_stream_contents(zis, TestZipFile::TEST_ZIP2)
|
||
|
end
|
||
|
|
||
|
def test_incompleteReads
|
||
|
::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name) {
|
||
|
|zis|
|
||
|
entry = zis.get_next_entry # longAscii.txt
|
||
|
assert_equal(false, zis.eof?)
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[0], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
assert_equal(false, zis.eof?)
|
||
|
entry = zis.get_next_entry # empty.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[1], entry.name)
|
||
|
assert_equal(0, entry.size)
|
||
|
assert_equal(nil, zis.gets)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
entry = zis.get_next_entry # empty_chmod640.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[2], entry.name)
|
||
|
assert_equal(0, entry.size)
|
||
|
assert_equal(nil, zis.gets)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
entry = zis.get_next_entry # short.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[3], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
entry = zis.get_next_entry # longBinary.bin
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[4], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def test_incomplete_reads_from_string_io
|
||
|
string_io = ::StringIO.new(::File.read(TestZipFile::TEST_ZIP2.zip_name))
|
||
|
::Zip::InputStream.open(string_io) do |zis|
|
||
|
entry = zis.get_next_entry # longAscii.txt
|
||
|
assert_equal(false, zis.eof?)
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[0], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
assert_equal(false, zis.eof?)
|
||
|
entry = zis.get_next_entry # empty.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[1], entry.name)
|
||
|
assert_equal(0, entry.size)
|
||
|
assert_equal(nil, zis.gets)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
entry = zis.get_next_entry # empty_chmod640.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[2], entry.name)
|
||
|
assert_equal(0, entry.size)
|
||
|
assert_equal(nil, zis.gets)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
entry = zis.get_next_entry # short.txt
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[3], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
entry = zis.get_next_entry # longBinary.bin
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[4], entry.name)
|
||
|
assert zis.gets.length > 0
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_read_with_number_of_bytes_returns_nil_at_eof
|
||
|
::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name) do |zis|
|
||
|
entry = zis.get_next_entry # longAscii.txt
|
||
|
zis.read(entry.size)
|
||
|
assert_equal(true, zis.eof?)
|
||
|
assert_nil(zis.read(1))
|
||
|
assert_nil(zis.read(1))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_rewind
|
||
|
::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name) {
|
||
|
|zis|
|
||
|
e = zis.get_next_entry
|
||
|
assert_equal(TestZipFile::TEST_ZIP2.entry_names[0], e.name)
|
||
|
|
||
|
# Do a little reading
|
||
|
buf = ""
|
||
|
buf << zis.read(100)
|
||
|
assert_equal(100, zis.pos)
|
||
|
buf << (zis.gets || "")
|
||
|
buf << (zis.gets || "")
|
||
|
assert_equal(false, zis.eof?)
|
||
|
|
||
|
zis.rewind
|
||
|
|
||
|
buf2 = ""
|
||
|
buf2 << zis.read(100)
|
||
|
buf2 << (zis.gets || "")
|
||
|
buf2 << (zis.gets || "")
|
||
|
|
||
|
assert_equal(buf, buf2)
|
||
|
|
||
|
zis.rewind
|
||
|
assert_equal(false, zis.eof?)
|
||
|
assert_equal(0, zis.pos)
|
||
|
|
||
|
assert_entry(e.name, zis, e.name)
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def test_mix_read_and_gets
|
||
|
::Zip::InputStream.open(TestZipFile::TEST_ZIP2.zip_name) {
|
||
|
|zis|
|
||
|
zis.get_next_entry
|
||
|
assert_equal("#!/usr/bin/env ruby", zis.gets.chomp)
|
||
|
assert_equal(false, zis.eof?)
|
||
|
assert_equal("", zis.gets.chomp)
|
||
|
assert_equal(false, zis.eof?)
|
||
|
assert_equal("$VERBOSE =", zis.read(10))
|
||
|
assert_equal(false, zis.eof?)
|
||
|
}
|
||
|
end
|
||
|
|
||
|
end
|