libkernaux/tests/test_pfa_assert.c

100 lines
2.1 KiB
C
Raw Permalink Normal View History

2021-12-14 22:10:28 +00:00
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
2022-11-29 01:19:35 +00:00
#include <kernaux/macro.h>
2021-12-14 22:10:28 +00:00
#include <kernaux/pfa.h>
#include <kernaux/runtime.h>
2021-12-14 22:10:28 +00:00
#include <assert.h>
#include <setjmp.h>
2021-12-14 22:10:28 +00:00
#include <stddef.h>
#include <stdlib.h>
2021-12-14 22:10:28 +00:00
static unsigned int count = 0;
static jmp_buf jmpbuf;
2021-12-14 22:10:28 +00:00
static void assert_cb(
2022-11-29 01:19:35 +00:00
const char *const file KERNAUX_UNUSED,
const int line KERNAUX_UNUSED,
const char *const str KERNAUX_UNUSED
2021-12-14 22:10:28 +00:00
) {
++count;
longjmp(jmpbuf, 1);
2021-12-14 22:10:28 +00:00
}
2022-06-20 18:01:56 +00:00
void test_main()
2021-12-14 22:10:28 +00:00
{
if (setjmp(jmpbuf) != 0) abort();
2021-12-14 22:10:28 +00:00
kernaux_assert_cb = assert_cb;
2021-12-14 22:10:28 +00:00
struct KernAux_PFA pfa;
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_initialize(&pfa);
} else {
assert(count == 0);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_initialize(NULL);
} else {
assert(count == 1);
}
if (setjmp(jmpbuf) == 0) {
assert(!KernAux_PFA_is_available(NULL, KERNAUX_PFA_PAGE_SIZE));
} else {
assert(count == 2);
}
if (setjmp(jmpbuf) == 0) {
assert(!KernAux_PFA_is_available(&pfa, 123));
} else {
assert(count == 3);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_mark_available(NULL, 0, KERNAUX_PFA_PAGE_SIZE);
} else {
assert(count == 4);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_mark_available(&pfa, KERNAUX_PFA_PAGE_SIZE, 0);
} else {
assert(count == 5);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_mark_unavailable(NULL, 0, KERNAUX_PFA_PAGE_SIZE);
} else {
assert(count == 6);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_mark_unavailable(&pfa, KERNAUX_PFA_PAGE_SIZE, 0);
} else {
assert(count == 7);
}
if (setjmp(jmpbuf) == 0) {
assert(KernAux_PFA_alloc_pages(NULL, KERNAUX_PFA_PAGE_SIZE) == 0);
} else {
assert(count == 8);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_free_pages(NULL, KERNAUX_PFA_PAGE_SIZE, KERNAUX_PFA_PAGE_SIZE);
} else {
assert(count == 9);
}
if (setjmp(jmpbuf) == 0) {
KernAux_PFA_free_pages(&pfa, 123, KERNAUX_PFA_PAGE_SIZE);
} else {
assert(count == 10);
}
2021-12-14 22:10:28 +00:00
}