1
0
Fork 0
mirror of https://github.com/tailix/libkernaux.git synced 2025-07-07 18:51:58 -04:00

Add runtime assertions feature

This commit is contained in:
Alex Kotov 2021-12-15 01:37:11 +05:00
parent 089a16b02f
commit 690cfd32e3
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
10 changed files with 108 additions and 2 deletions

49
examples/assert.c Normal file
View file

@ -0,0 +1,49 @@
#include <kernaux/assert.h>
#include <assert.h>
#include <stddef.h>
#include <string.h>
static unsigned int count = 0;
static const char *last_file = NULL;
static int last_line = 0;
static const char *last_str = NULL;
static void assert_cb(
const char *const file,
const int line,
const char *const str
) {
++count;
last_file = file;
last_line = line;
last_str = str;
}
int main()
{
kernaux_assert_cb = assert_cb;
kernaux_assert(1 == 1);
assert(count == 0);
assert(last_file == NULL);
assert(last_line == 0);
assert(last_str == NULL);
kernaux_assert(1 != 1);
assert(count == 1);
assert(strcmp(last_file, __FILE__) == 0);
assert(last_line == __LINE__ - 4);
assert(strcmp(last_str, "1 != 1") == 0);
kernaux_assert(strcmp("qwe", "rty") == 0);
assert(count == 2);
assert(strcmp(last_file, __FILE__) == 0);
assert(last_line == __LINE__ - 4);
assert(strcmp(last_str, "strcmp(\"qwe\", \"rty\") == 0") == 0);
return 0;
}