1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
# frozen_string_literal: true
require_relative 'test_helper'
require_relative 'helpers/crc_tests'
class DeflaterTest < Minitest::Test
include CrcTests
DEFLATER_TEST_FILE = 'test/data/generated/deflatertest.bin'
BEST_COMP_FILE = 'test/data/generated/compressiontest_best_compression.bin'
DEFAULT_COMP_FILE = 'test/data/generated/compressiontest_default_compression.bin'
NO_COMP_FILE = 'test/data/generated/compressiontest_no_compression.bin'
def teardown
Zip.reset!
end
# Remove this test when JRuby#3962 is fixed.
def test_deflate_strategy
if defined?(JRUBY_VERSION)
assert_equal(Zlib::SYNC_FLUSH, Zip::ZLIB_FLUSHING_STRATEGY)
else
assert_equal(Zlib::NO_FLUSH, Zip::ZLIB_FLUSHING_STRATEGY)
end
end
def test_output_operator
txt = load_file('test/data/file2.txt')
deflate(txt, DEFLATER_TEST_FILE)
inflated_txt = inflate(DEFLATER_TEST_FILE)
assert_equal(txt, inflated_txt)
end
def test_default_compression
txt = load_file('test/data/file2.txt')
Zip.default_compression = ::Zlib::BEST_COMPRESSION
deflate(txt, BEST_COMP_FILE)
Zip.default_compression = ::Zlib::DEFAULT_COMPRESSION
deflate(txt, DEFAULT_COMP_FILE)
Zip.default_compression = ::Zlib::NO_COMPRESSION
deflate(txt, NO_COMP_FILE)
best = File.size(BEST_COMP_FILE)
default = File.size(DEFAULT_COMP_FILE)
no = File.size(NO_COMP_FILE)
assert(best < default)
assert(best < no)
assert(default < no)
end
def test_data_error
assert_raises(::Zip::DecompressionError) do
inflate('test/data/file1.txt.corrupt.deflatedData')
end
end
private
def load_file(filename)
File.binread(filename)
end
def deflate(data, filename)
File.open(filename, 'wb') do |file|
deflater = ::Zip::Deflater.new(file)
deflater << data
deflater.finish
assert_equal(deflater.size, data.size)
file << 'trailing data for zlib with -MAX_WBITS'
end
end
def inflate(filename)
File.open(filename, 'rb') do |file|
inflater = ::Zip::Inflater.new(file)
inflater.read
end
end
def test_crc
run_crc_test(::Zip::Deflater)
end
end
|