aboutsummaryrefslogtreecommitdiffstats
path: root/unpack_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'unpack_test.c')
-rw-r--r--unpack_test.c96
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
};