aboutsummaryrefslogtreecommitdiff
path: root/tests/libxfrm/pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libxfrm/pack.c')
-rw-r--r--tests/libxfrm/pack.c165
1 files changed, 0 insertions, 165 deletions
diff --git a/tests/libxfrm/pack.c b/tests/libxfrm/pack.c
deleted file mode 100644
index c297005..0000000
--- a/tests/libxfrm/pack.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* SPDX-License-Identifier: GPL-3.0-or-later */
-/*
- * compress.c
- *
- * Copyright (C) 2022 David Oberhollenzer <goliath@infraroot.at>
- */
-#include "xfrm/compress.h"
-#include "xfrm/stream.h"
-#include "util/test.h"
-
-static const char text[] =
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n"
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n"
-"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n"
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n"
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n"
-"proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n";
-
-static sqfs_u8 buffer_cmp[1024];
-static sqfs_u8 buffer_plain[1024];
-static sqfs_u8 ref_cmp[1024];
-static size_t ref_size;
-
-#if defined(DO_BZIP2)
-#define mkdecompressor decompressor_stream_bzip2_create
-#define mkcompressor compressor_stream_bzip2_create
-
-static sqfs_u8 magic[3] = "BZh";
-static int comp_id = XFRM_COMPRESSOR_BZIP2;
-static const char *comp_name = "bzip2";
-#elif defined(DO_XZ)
-#define mkdecompressor decompressor_stream_xz_create
-#define mkcompressor compressor_stream_xz_create
-
-static sqfs_u8 magic[6] = "\xFD" "7zXZ";
-static int comp_id = XFRM_COMPRESSOR_XZ;
-static const char *comp_name = "xz";
-#elif defined(DO_GZIP)
-#define mkdecompressor decompressor_stream_gzip_create
-#define mkcompressor compressor_stream_gzip_create
-
-static sqfs_u8 magic[3] = "\x1F\x8B\x08";
-static int comp_id = XFRM_COMPRESSOR_GZIP;
-static const char *comp_name = "gzip";
-#elif defined(DO_ZSTD)
-#define mkdecompressor decompressor_stream_zstd_create
-#define mkcompressor compressor_stream_zstd_create
-
-static sqfs_u8 magic[4] = "\x28\xB5\x2F\xFD";
-static int comp_id = XFRM_COMPRESSOR_ZSTD;
-static const char *comp_name = "zstd";
-#else
-#error build configuration broken
-#endif
-
-int main(int argc, char **argv)
-{
- sqfs_u32 in_diff = 0, out_diff = 0;
- xfrm_stream_t *xfrm;
- const char *str;
- size_t size;
- int ret;
- (void)argc; (void)argv;
-
- /* generic name/ID API */
- ret = xfrm_compressor_id_from_name(comp_name);
- TEST_EQUAL_I(ret, comp_id);
-
- str = xfrm_compressor_name_from_id(ret);
- TEST_STR_EQUAL(str, comp_name);
-
- /* compress the original text */
- xfrm = mkcompressor(NULL);
- TEST_NOT_NULL(xfrm);
- TEST_EQUAL_UI(((sqfs_object_t *)xfrm)->refcount, 1);
-
- ret = xfrm->process_data(xfrm, text, sizeof(text),
- buffer_cmp, sizeof(buffer_cmp),
- &in_diff, &out_diff, XFRM_STREAM_FLUSH_FULL);
- TEST_EQUAL_I(ret, XFRM_STREAM_END);
-
- TEST_EQUAL_UI(in_diff, sizeof(text));
- TEST_ASSERT(out_diff > 0);
- TEST_ASSERT(out_diff < sizeof(text));
-
- sqfs_drop(xfrm);
-
- size = out_diff;
- in_diff = out_diff = 0;
-
- memcpy(ref_cmp, buffer_cmp, size);
- ref_size = size;
-
- /* check if it has the expected magic number */
- TEST_ASSERT(size >= sizeof(magic));
- ret = memcmp(buffer_cmp, magic, sizeof(magic));
- TEST_EQUAL_I(ret, 0);
-
- /* check if the auto detection correctly identifies it */
- ret = xfrm_compressor_id_from_magic(buffer_cmp, size);
- TEST_EQUAL_I(ret, comp_id);
-
- ret = xfrm_compressor_id_from_magic(text, sizeof(text));
- TEST_EQUAL_I(ret, -1);
-
- /* unpack the compressed text and compare to the original */
- xfrm = mkdecompressor();
- TEST_NOT_NULL(xfrm);
- TEST_EQUAL_UI(((sqfs_object_t *)xfrm)->refcount, 1);
-
- ret = xfrm->process_data(xfrm, buffer_cmp, size,
- buffer_plain, sizeof(buffer_plain),
- &in_diff, &out_diff, 0);
- TEST_ASSERT(ret == XFRM_STREAM_END || ret == XFRM_STREAM_OK);
-
- TEST_EQUAL_UI(in_diff, size);
- TEST_EQUAL_UI(out_diff, sizeof(text));
- ret = memcmp(buffer_plain, text, out_diff);
- TEST_EQUAL_I(ret, 0);
-
- sqfs_drop(xfrm);
- in_diff = out_diff = 0;
-
- /* retry packing but create the compressor using the ID */
- memset(buffer_cmp, 0, sizeof(buffer_cmp));
- memset(buffer_plain, 0, sizeof(buffer_plain));
-
- xfrm = compressor_stream_create(comp_id, NULL);
- TEST_NOT_NULL(xfrm);
- TEST_EQUAL_UI(((sqfs_object_t *)xfrm)->refcount, 1);
-
- ret = xfrm->process_data(xfrm, text, sizeof(text),
- buffer_cmp, sizeof(buffer_cmp),
- &in_diff, &out_diff, XFRM_STREAM_FLUSH_FULL);
- TEST_EQUAL_I(ret, XFRM_STREAM_END);
-
- TEST_EQUAL_UI(in_diff, sizeof(text));
- TEST_EQUAL_UI(out_diff, ref_size);
-
- sqfs_drop(xfrm);
- size = out_diff;
- in_diff = out_diff = 0;
-
- /* make sure we got an identical result */
- ret = memcmp(ref_cmp, buffer_cmp, size);
- TEST_EQUAL_I(ret, 0);
-
- /* decompress it using ID */
- xfrm = decompressor_stream_create(comp_id);
- TEST_NOT_NULL(xfrm);
- TEST_EQUAL_UI(((sqfs_object_t *)xfrm)->refcount, 1);
-
- ret = xfrm->process_data(xfrm, buffer_cmp, size,
- buffer_plain, sizeof(buffer_plain),
- &in_diff, &out_diff, 0);
- TEST_ASSERT(ret == XFRM_STREAM_END || ret == XFRM_STREAM_OK);
-
- TEST_EQUAL_UI(in_diff, size);
- TEST_EQUAL_UI(out_diff, sizeof(text));
- ret = memcmp(buffer_plain, text, out_diff);
- TEST_EQUAL_I(ret, 0);
-
- sqfs_drop(xfrm);
- return EXIT_SUCCESS;
-}