Feature #2595 ยป zlib.patch
ext/zlib/zlib.c | ||
---|---|---|
}
|
||
/*
|
||
* call-seq: Zlib.adler32_combine(adler1, adler2, len2)
|
||
*
|
||
* Combine two Adler-32 check values in to one. +alder1+ is the first Adler-32
|
||
* value, +adler2+ is the second Adler-32 value. +len2+ is the length of the
|
||
* string used to generate +adler2+.
|
||
*
|
||
*/
|
||
static VALUE
|
||
rb_zlib_adler32_combine(VALUE klass, VALUE adler1, VALUE adler2, VALUE len2)
|
||
{
|
||
return ULONG2NUM(
|
||
adler32_combine(NUM2ULONG(adler1), NUM2ULONG(adler2), NUM2LONG(len2)));
|
||
}
|
||
/*
|
||
* call-seq: Zlib.crc32(string, adler)
|
||
*
|
||
* Calculates CRC checksum for +string+, and returns updated value of +crc+. If
|
||
... | ... | |
}
|
||
/*
|
||
* call-seq: Zlib.crc32_combine(crc1, crc2, len2)
|
||
*
|
||
* Combine two CRC-32 check values in to one. +crc1+ is the first CRC-32
|
||
* value, +crc2+ is the second CRC-32 value. +len2+ is the length of the
|
||
* string used to generate +crc2+.
|
||
*
|
||
*/
|
||
static VALUE
|
||
rb_zlib_crc32_combine(VALUE klass, VALUE crc1, VALUE crc2, VALUE len2)
|
||
{
|
||
return ULONG2NUM(
|
||
crc32_combine(NUM2ULONG(crc1), NUM2ULONG(crc2), NUM2LONG(len2)));
|
||
}
|
||
/*
|
||
* Returns the table for calculating CRC checksum as an array.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
rb_define_module_function(mZlib, "zlib_version", rb_zlib_version, 0);
|
||
rb_define_module_function(mZlib, "adler32", rb_zlib_adler32, -1);
|
||
rb_define_module_function(mZlib, "adler32_combine", rb_zlib_adler32_combine, 3);
|
||
rb_define_module_function(mZlib, "crc32", rb_zlib_crc32, -1);
|
||
rb_define_module_function(mZlib, "crc32_combine", rb_zlib_crc32_combine, 3);
|
||
rb_define_module_function(mZlib, "crc_table", rb_zlib_crc_table, 0);
|
||
rb_define_const(mZlib, "VERSION", rb_str_new2(RUBY_ZLIB_VERSION));
|
test/zlib/test_zlib.rb | ||
---|---|---|
assert_equal(0x8a62c964, Zlib.adler32("abc\x01\x02\x03" * 10000))
|
||
end
|
||
def test_adler32_combine
|
||
one = Zlib.adler32("fo")
|
||
two = Zlib.adler32("o")
|
||
assert_equal(0x02820145, Zlib.adler32_combine(one, two, 1))
|
||
end
|
||
def test_crc32
|
||
assert_equal(0x00000000, Zlib.crc32)
|
||
assert_equal(0x8c736521, Zlib.crc32("foo"))
|
||
... | ... | |
assert_equal(0x07f0d68f, Zlib.crc32("abc\x01\x02\x03" * 10000))
|
||
end
|
||
def test_crc32_combine
|
||
one = Zlib.crc32("fo")
|
||
two = Zlib.crc32("o")
|
||
assert_equal(0x8c736521, Zlib.crc32_combine(one, two, 1))
|
||
end
|
||
def test_crc_table
|
||
t = Zlib.crc_table
|
||
assert_instance_of(Array, t)
|