diff options
Diffstat (limited to 'unpack_test.c')
-rw-r--r-- | unpack_test.c | 96 |
1 files changed, 19 insertions, 77 deletions
diff --git a/unpack_test.c b/unpack_test.c index 1dbc4ac..f89cd62 100644 --- a/unpack_test.c +++ b/unpack_test.c @@ -2,6 +2,8 @@ * Copyright (C) 2020 Tomasz Kramkowski <tk@the-tk.com> * SPDX-License-Identifier: MIT */ +#include <stdint.h> +#include <inttypes.h> #include <stdio.h> #include <stdbool.h> @@ -21,91 +23,31 @@ struct test { #define CHECK(test) if (!(test)) { puts("! " #test); return false; } #define CHECK_UNPACK(data, fmt, ...) do { \ - enum pack_status s = unpack(data, fmt, __VA_ARGS__); \ - if (s != PACK_OK) { \ - printf(__FILE__ ":%d unpack(" #data ", " #fmt ", ...) -> %s (%d)\n", __LINE__, pack_strerror(s), s); \ + enum pack_status CHECK_UNPACK_s = unpack(data, fmt, __VA_ARGS__); \ + if (CHECK_UNPACK_s != PACK_OK) { \ + printf(__FILE__ ":%d unpack(" #data ", " #fmt ", ...) -> %s (%d)\n", __LINE__, pack_strerror(CHECK_UNPACK_s), CHECK_UNPACK_s); \ return false; \ } \ } while (0) -#define CHECK_EQUAL(a, b) if (a != b) { printf(__FILE__ ":%d %d != %d\n", __LINE__, a, b); return false; } +#define CHECK_EQUAL(f, a, b) if (a != b) { printf(__FILE__ ":%d %"f" != %"f"\n", __LINE__, a, b); return false; } -TEST(schar) -{ - signed char c = __LINE__; - fprintf(stderr, "Address of c: %p\n", (void *)&c); - CHECK_UNPACK(DATA(0), "b", &c); - CHECK_EQUAL(c, 0); - CHECK_UNPACK(DATA(1), "b", &c); - CHECK_EQUAL(c, 1); - CHECK_UNPACK(DATA(127), "b", &c); - CHECK_EQUAL(c, 127); - CHECK_UNPACK(DATA(255), "b", &c); - CHECK_EQUAL(c, -1); - CHECK_UNPACK(DATA(128), "b", &c); - CHECK_EQUAL(c, -128); - return true; -} - -TEST(uchar) -{ - unsigned char c = __LINE__; - fprintf(stderr, "Address of c: %p\n", (void *)&c); - CHECK_UNPACK(DATA(0), "B", &c); - CHECK_EQUAL(c, 0); - CHECK_UNPACK(DATA(1), "B", &c); - CHECK_EQUAL(c, 1); - CHECK_UNPACK(DATA(255), "B", &c); - CHECK_EQUAL(c, 255); - return true; -} - -TEST(sshort) -{ - short s = __LINE__; - fprintf(stderr, "Address of s: %p\n", (void *)&s); - CHECK_UNPACK(DATA(0, 0), "h", &s); - CHECK_EQUAL(s, 0); - CHECK_UNPACK(DATA(0, 0), ">h", &s); - CHECK_EQUAL(s, 0); - CHECK_UNPACK(DATA(0, 0), "<h", &s); - CHECK_EQUAL(s, 0); - CHECK_UNPACK(DATA(0, 1), "h", &s); - CHECK_EQUAL(s, 1); - CHECK_UNPACK(DATA(0, 1), ">h", &s); - CHECK_EQUAL(s, 1); - CHECK_UNPACK(DATA(1, 0), "<h", &s); - CHECK_EQUAL(s, 1); - CHECK_UNPACK(DATA(0x7f, 0xff), "h", &s); - CHECK_EQUAL(s, 32767); - CHECK_UNPACK(DATA(0x7f, 0xff), ">h", &s); - CHECK_EQUAL(s, 32767); - CHECK_UNPACK(DATA(0xff, 0x7f), "<h", &s); - CHECK_EQUAL(s, 32767); - CHECK_UNPACK(DATA(0xff, 0xff), "h", &s); - CHECK_EQUAL(s, -1); - CHECK_UNPACK(DATA(0xff, 0xff), ">h", &s); - CHECK_EQUAL(s, -1); - CHECK_UNPACK(DATA(0xff, 0xff), "<h", &s); - CHECK_EQUAL(s, -1); - CHECK_UNPACK(DATA(0x80, 0x00), "h", &s); - CHECK_EQUAL(s, -32768); - CHECK_UNPACK(DATA(0x80, 0x00), ">h", &s); - CHECK_EQUAL(s, -32768); - CHECK_UNPACK(DATA(0x00, 0x80), "<h", &s); - CHECK_EQUAL(s, -32768); -} - -TEST(ushort) -{ - unsigned short s; -} +#include "unpack_test.inc" int main(void) { + pack_trace = PACK_TRACE_OFF; + struct test tests[] = { - TEST_ENTRY(schar, "schar unpacking"), - TEST_ENTRY(uchar, "uchar unpacking"), - TEST_ENTRY(sshort, "sshort unpacking"), + TEST_ENTRY(signed_char, "signed char unpacking"), + TEST_ENTRY(unsigned_char, "unsigned char unpacking"), + TEST_ENTRY(signed_short, "signed short unpacking"), + TEST_ENTRY(unsigned_short, "unsigned short unpacking"), + TEST_ENTRY(signed_int, "signed int unpacking"), + TEST_ENTRY(unsigned_int, "unsigned int unpacking"), + TEST_ENTRY(signed_long, "signed long unpacking"), + TEST_ENTRY(unsigned_long, "unsigned long unpacking"), + TEST_ENTRY(signed_long_long, "signed long long unpacking"), + TEST_ENTRY(unsigned_long_long, "unsigned long long unpacking"), TEST_ENTRY_END }; |