fork of https://github.com/rust-rocksdb/rust-rocksdb for nextgraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
4.1 KiB
104 lines
4.1 KiB
1 year ago
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <stdio.h>
|
||
|
#include <assert.h>
|
||
|
#include "lz4.h"
|
||
|
|
||
|
const char source[] =
|
||
|
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n"
|
||
|
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n"
|
||
|
"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n"
|
||
|
"commodo consequat. Duis aute irure dolor in reprehenderit in voluptate\n"
|
||
|
"velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n"
|
||
|
"cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id\n"
|
||
|
"est laborum.\n"
|
||
|
"\n"
|
||
|
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium\n"
|
||
|
"doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore\n"
|
||
|
"veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim\n"
|
||
|
"ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia\n"
|
||
|
"consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque\n"
|
||
|
"porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur,\n"
|
||
|
"adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore\n"
|
||
|
"et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis\n"
|
||
|
"nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid\n"
|
||
|
"ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea\n"
|
||
|
"voluptate velit esse quam nihil molestiae consequatur, vel illum qui\n"
|
||
|
"dolorem eum fugiat quo voluptas nulla pariatur?\n";
|
||
|
|
||
|
#define BUFFER_SIZE 2048
|
||
|
|
||
|
int main(void)
|
||
|
{
|
||
|
int srcLen = (int)strlen(source);
|
||
|
size_t const smallSize = 1024;
|
||
|
size_t const largeSize = 64 * 1024 - 1;
|
||
|
char cmpBuffer[BUFFER_SIZE];
|
||
|
char* const buffer = (char*)malloc(BUFFER_SIZE + largeSize);
|
||
|
char* outBuffer = buffer + largeSize;
|
||
|
char* const dict = (char*)malloc(largeSize);
|
||
|
char* const largeDict = dict;
|
||
|
char* const smallDict = dict + largeSize - smallSize;
|
||
|
int i;
|
||
|
int cmpSize;
|
||
|
|
||
|
printf("starting test decompress-partial-usingDict : \n");
|
||
|
assert(buffer != NULL);
|
||
|
assert(dict != NULL);
|
||
|
|
||
|
cmpSize = LZ4_compress_default(source, cmpBuffer, srcLen, BUFFER_SIZE);
|
||
|
|
||
|
for (i = cmpSize; i < cmpSize + 10; ++i) {
|
||
|
int result = LZ4_decompress_safe_partial_usingDict(cmpBuffer, outBuffer, i, srcLen, BUFFER_SIZE, NULL, 0);
|
||
|
if ( (result < 0)
|
||
|
|| (result != srcLen)
|
||
|
|| memcmp(source, outBuffer, (size_t)srcLen) ) {
|
||
|
printf("test decompress-partial-usingDict with no dict error \n");
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (i = cmpSize; i < cmpSize + 10; ++i) {
|
||
|
int result = LZ4_decompress_safe_partial_usingDict(cmpBuffer, outBuffer, i, srcLen, BUFFER_SIZE, outBuffer - smallSize, smallSize);
|
||
|
if ( (result < 0)
|
||
|
|| (result != srcLen)
|
||
|
|| memcmp(source, outBuffer, (size_t)srcLen) ) {
|
||
|
printf("test decompress-partial-usingDict with small prefix error \n");
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (i = cmpSize; i < cmpSize + 10; ++i) {
|
||
|
int result = LZ4_decompress_safe_partial_usingDict(cmpBuffer, outBuffer, i, srcLen, BUFFER_SIZE, buffer, largeSize);
|
||
|
if ( (result < 0)
|
||
|
|| (result != srcLen)
|
||
|
|| memcmp(source, outBuffer, (size_t)srcLen) ) {
|
||
|
printf("test decompress-partial-usingDict with large prefix error \n");
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (i = cmpSize; i < cmpSize + 10; ++i) {
|
||
|
int result = LZ4_decompress_safe_partial_usingDict(cmpBuffer, outBuffer, i, srcLen, BUFFER_SIZE, smallDict, smallSize);
|
||
|
if ( (result < 0)
|
||
|
|| (result != srcLen)
|
||
|
|| memcmp(source, outBuffer, (size_t)srcLen) ) {
|
||
|
printf("test decompress-partial-usingDict with small external dict error \n");
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (i = cmpSize; i < cmpSize + 10; ++i) {
|
||
|
int result = LZ4_decompress_safe_partial_usingDict(cmpBuffer, outBuffer, i, srcLen, BUFFER_SIZE, largeDict, largeSize);
|
||
|
if ( (result < 0)
|
||
|
|| (result != srcLen)
|
||
|
|| memcmp(source, outBuffer, (size_t)srcLen) ) {
|
||
|
printf("test decompress-partial-usingDict with large external dict error \n");
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
printf("test decompress-partial-usingDict OK \n");
|
||
|
return 0;
|
||
|
}
|