From 16cf844396181e743403b046c06a21f1dca39426 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 9 Sep 2024 17:33:16 +0200 Subject: Added tableinfo --- test/090_tables_readwrite/00_table.in | 31 ++++++++ test/090_tables_readwrite/00_table.out | 31 ++++++++ test/090_tables_readwrite/tables_readwrite_tests.c | 84 ++++++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 test/090_tables_readwrite/00_table.in create mode 100644 test/090_tables_readwrite/00_table.out create mode 100644 test/090_tables_readwrite/tables_readwrite_tests.c (limited to 'test') diff --git a/test/090_tables_readwrite/00_table.in b/test/090_tables_readwrite/00_table.in new file mode 100644 index 0000000..1816242 --- /dev/null +++ b/test/090_tables_readwrite/00_table.in @@ -0,0 +1,31 @@ +Test solver + +512 +100000000000 +12345678912345 +399999999998 +2 +0 +20 + +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 diff --git a/test/090_tables_readwrite/00_table.out b/test/090_tables_readwrite/00_table.out new file mode 100644 index 0000000..1816242 --- /dev/null +++ b/test/090_tables_readwrite/00_table.out @@ -0,0 +1,31 @@ +Test solver + +512 +100000000000 +12345678912345 +399999999998 +2 +0 +20 + +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 diff --git a/test/090_tables_readwrite/tables_readwrite_tests.c b/test/090_tables_readwrite/tables_readwrite_tests.c new file mode 100644 index 0000000..97b8ab7 --- /dev/null +++ b/test/090_tables_readwrite/tables_readwrite_tests.c @@ -0,0 +1,84 @@ +#include "../test.h" + +#define INFOSIZE 512 +#define INFO_SOLVER_STRLEN 20 +#define INFO_DISTRIBUTION_LEN 21 + +typedef struct { + char solver[INFO_SOLVER_STRLEN]; + uint64_t infosize; + uint64_t fullsize; + uint64_t hash; + uint64_t entries; + uint8_t bits; + uint8_t base; + uint8_t maxvalue; + uint64_t distribution[INFO_DISTRIBUTION_LEN]; +} tableinfo_t; + +bool readtableinfo(const void *, tableinfo_t *); +bool writetableinfo(const tableinfo_t *, void *); + +uint64_t readn(void) { + char str[STRLENMAX]; + + fgets(str, STRLENMAX, stdin); + return atoll(str); +} + +tableinfo_t test_readinfo(void) { + int i; + tableinfo_t ret; + char emptyline[2]; + + fgets(ret.solver, INFO_SOLVER_STRLEN, stdin); + for (i = 0; i < INFO_SOLVER_STRLEN; i++) + if (ret.solver[i] == '\n') + ret.solver[i] = 0; + + fgets(emptyline, 2, stdin); + + ret.infosize = readn(); + ret.fullsize = readn(); + ret.hash = readn(); + ret.entries = readn(); + ret.bits = (uint8_t)readn(); + ret.base = (uint8_t)readn(); + ret.maxvalue = (uint8_t)readn(); + + fgets(emptyline, 2, stdin); + + for (i = 0; i < INFO_DISTRIBUTION_LEN; i++) + ret.distribution[i] = readn(); + + return ret; +} + +void test_writeinfo(tableinfo_t info) { + int i; + + printf("%s\n", info.solver); + printf("\n"); + + printf("%" PRIu64 "\n", info.infosize); + printf("%" PRIu64 "\n", info.fullsize); + printf("%" PRIu64 "\n", info.hash); + printf("%" PRIu64 "\n", info.entries); + printf("%" PRIu8 "\n", info.bits); + printf("%" PRIu8 "\n", info.base); + printf("%" PRIu8 "\n", info.maxvalue); + printf("\n"); + + for (i = 0; i < INFO_DISTRIBUTION_LEN; i++) + printf("%" PRIu64 "\n", info.distribution[i]); +} + +void run(void) { + char buf[INFOSIZE]; + tableinfo_t expected, actual; + + expected = test_readinfo(); + writetableinfo(&expected, buf); + readtableinfo(buf, &actual); + test_writeinfo(actual); +} -- cgit v1.3