mariadb/ft/tests/compress-test.c
Leif Walsh 3719bf2c2f [t:4901] merging brt->ft rename to main
git-svn-id: file:///svn/toku/tokudb@43686 c7de825b-a66e-492c-adef-691d508d4ae1
2013-04-17 00:00:35 -04:00

56 lines
1.6 KiB
C

/* -*- mode: C; c-basic-offset: 4 -*- */
// Test quicklz.
// Compare to compress-test which tests the toku compression (which is a composite of quicklz and zlib).
#ident "Copyright (c) 2010 Tokutek Inc. All rights reserved."
#ident "$Id$"
#include "test.h"
#include "compress.h"
static void test_compress_buf_method (unsigned char *buf, int i, enum toku_compression_method m) {
int bound = toku_compress_bound(m, i);
unsigned char *MALLOC_N(bound, cb);
uLongf actual_clen = bound;
toku_compress(m, cb, &actual_clen, buf, i);
unsigned char *MALLOC_N(i, ubuf);
toku_decompress(ubuf, i, cb, actual_clen);
assert(0==memcmp(ubuf, buf, i));
toku_free(ubuf);
toku_free(cb);
}
static void test_compress_buf (unsigned char *buf, int i) {
test_compress_buf_method(buf, i, TOKU_ZLIB_METHOD);
test_compress_buf_method(buf, i, TOKU_QUICKLZ_METHOD);
test_compress_buf_method(buf, i, TOKU_LZMA_METHOD);
}
static void test_compress_i (int i) {
unsigned char *MALLOC_N(i, b);
for (int j=0; j<i; j++) b[j] = random()%256;
test_compress_buf (b, i);
for (int j=0; j<i; j++) b[j] = 0;
test_compress_buf (b, i);
for (int j=0; j<i; j++) b[j] = 0xFF;
test_compress_buf (b, i);
toku_free(b);
}
static void test_compress (void) {
// unlike quicklz, we can handle length 0.
for (int i=0; i<100; i++) {
test_compress_i(i);
}
test_compress_i(1024);
test_compress_i(1024*1024*4);
test_compress_i(1024*1024*4 - 123); // just some random lengths
}
int test_main (int argc, const char *argv[]) {
default_parse_args(argc, argv);
test_compress();
return 0;
}