mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/zlib/zlib.c: added Zlib.crc32_combine and Zlib.adler32_combine
* test/zlib/test_zlib.rb: corresponding tests [ruby-core:27551] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
77f3fc3054
commit
4395758903
3 changed files with 51 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
Tue Jan 19 09:03:37 2010 Aaron Patterson <tenderlove@ruby-lang.org>
|
||||
|
||||
* ext/zlib/zlib.c: added Zlib.crc32_combine and Zlib.adler32_combine
|
||||
|
||||
* test/zlib/test_zlib.rb: corresponding tests [ruby-core:27551]
|
||||
|
||||
|
||||
Tue Jan 19 02:02:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
|
||||
|
||||
* test/ruby/test_array.rb: add some tests (for coverage).
|
||||
|
|
|
@ -318,6 +318,21 @@ rb_zlib_adler32(int argc, VALUE *argv, VALUE klass)
|
|||
return do_checksum(argc, argv, adler32);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
|
@ -333,6 +348,21 @@ rb_zlib_crc32(int argc, VALUE *argv, VALUE klass)
|
|||
return do_checksum(argc, argv, crc32);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
@ -3468,7 +3498,9 @@ Init_zlib()
|
|||
|
||||
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));
|
||||
|
|
|
@ -662,6 +662,12 @@ if defined? Zlib
|
|||
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"))
|
||||
|
@ -669,6 +675,12 @@ if defined? Zlib
|
|||
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)
|
||||
|
|
Loading…
Add table
Reference in a new issue