diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-23 11:18:44 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-23 11:18:44 +0200 |
| commit | 359422c97cce93bbb27051f9df3efb45bd0b9052 (patch) | |
| tree | 2e352bb852a25390d40d45e199f835d218ad497f /libs/zip/test/test_data.c | |
| parent | 8ea59863c5d13e68e080cf7612047ea4c655292c (diff) | |
settings file writing
Diffstat (limited to 'libs/zip/test/test_data.c')
| -rw-r--r-- | libs/zip/test/test_data.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/libs/zip/test/test_data.c b/libs/zip/test/test_data.c new file mode 100644 index 0000000..e1cb207 --- /dev/null +++ b/libs/zip/test/test_data.c @@ -0,0 +1,85 @@ +#include <stdio.h> +#include <stdlib.h> + +#include <zip.h> + +#include "minunit.h" + +#if defined(_WIN32) || defined(_WIN64) +#include <io.h> + +#define MKTEMP _mktemp +#else +#define MKTEMP mkstemp +#endif + +#define L_TMPNAM 1024 + +static char DATANAME[L_TMPNAM + 1] = {0}; +static char ZIPNAME[L_TMPNAM + 1] = {0}; + +#define CRC32DATABIN 291367082 +#define SIZEDATABIN 409600 + +void test_setup(void) { + strncpy(ZIPNAME, "z-XXXXXX\0", L_TMPNAM); + MKTEMP(ZIPNAME); +} + +void test_teardown(void) { remove(ZIPNAME); } + +MU_TEST(test_entry) { + { + struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); + mu_check(zip != NULL); + { + mu_assert_int_eq(0, zip_entry_open(zip, DATANAME)); + { + mu_assert_int_eq(0, zip_entry_fwrite(zip, DATANAME)); + } + mu_assert_int_eq(0, zip_entry_close(zip)); + } + zip_close(zip); + } + + { + void *buf = NULL; + size_t bufsize = 0; + + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + mu_check(zip != NULL); + { + mu_assert_int_eq(0, zip_entry_open(zip, DATANAME)); + { + mu_assert_int_eq(SIZEDATABIN, zip_entry_size(zip)); + + mu_assert_int_eq(CRC32DATABIN, zip_entry_crc32(zip)); + + mu_assert_int_eq(SIZEDATABIN, zip_entry_read(zip, &buf, &bufsize)); + mu_assert_int_eq(SIZEDATABIN, bufsize); + } + mu_assert_int_eq(0, zip_entry_close(zip)); + } + zip_close(zip); + + free(buf); + } +} + +MU_TEST_SUITE(test_data) { + MU_SUITE_CONFIGURE(&test_setup, &test_teardown); + + MU_RUN_TEST(test_entry); +} + +#define UNUSED(x) (void)x + +int main(int argc, char *argv[]) { + if (argc > 1) { + strncpy(DATANAME, argv[1], L_TMPNAM); + MU_RUN_SUITE(test_data); + } + + MU_REPORT(); + return MU_EXIT_CODE; +} |
