aboutsummaryrefslogtreecommitdiff
path: root/include/testing.h
blob: 754733b7cfdd15e61951c0ed439c0afdb1ddab7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

#pragma once
#include <stdio.h>
#include <string.h>

#define t_assert_equal(a, b)                                                   \
    if (!(a == b)) {                                                           \
        fprintf(stderr,                                                        \
                "Assertion failed: %d (%s) != %d (%s) at %s:%d in %s()\n",     \
                (i32)a, #a, (i32)b, #b, __FILE__, __LINE__, __func__);         \
        return 1;                                                              \
    }

#define t_assert_fequal(a, b)                                                  \
    if ((a - b) > 1e-6 || (b - a) > 1e-6) {                                    \
        fprintf(stderr,                                                        \
                "Assertion failed: %f (%s) != %f (%s) at %s:%d in %s()\n", a,  \
                #a, b, #b, __FILE__, __LINE__, __func__);                      \
        return 1;                                                              \
    }

#define t_assert_strequal(a, b)                                                \
    if ((a.len != b.len) || (a.len && memcmp(a.data, b.data, a.len))) {        \
        fprintf(stderr,                                                        \
                "Assertion failed: %.*s (%s) != %.*s (%s) at %s:%d in %s()\n", \
                (i32)a.len, a.data, #a, (i32)b.len, b.data, #b, __FILE__,      \
                __LINE__, __func__);                                           \
        return 1;                                                              \
    }