test: page_insert and page_get
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
static void
|
||||
test_create_returns_non_null(void)
|
||||
@@ -28,12 +29,60 @@ test_insert_returns_slot_id(void)
|
||||
printf(" OK: Insert\n");
|
||||
}
|
||||
|
||||
static void
|
||||
test_insert_and_get(void)
|
||||
{
|
||||
Page * p = page_create(1);
|
||||
|
||||
int slot = page_insert(p, "ABAP", 4);
|
||||
assert(slot == 0);
|
||||
|
||||
size_t len = 0;
|
||||
void * result = page_get(p, 0, &len);
|
||||
assert(result != NULL);
|
||||
assert(len == 4);
|
||||
assert(memcmp(result, "ABAP", 4) == 0);
|
||||
|
||||
page_free(p);
|
||||
printf(" OK: insert + get roundtrip\n");
|
||||
}
|
||||
|
||||
static void
|
||||
test_multiple_inserts(void)
|
||||
{
|
||||
Page * p = page_create(2);
|
||||
|
||||
assert(page_insert(p, "ABAP", 4) == 0);
|
||||
assert(page_insert(p, "HANA", 4) == 1);
|
||||
assert(page_insert(p, "CDS", 3) == 2);
|
||||
|
||||
size_t len = 0;
|
||||
assert(memcmp(page_get(p, 0, &len), "ABAP", 4) == 0);
|
||||
assert(memcmp(page_get(p, 1, &len), "HANA", 4) == 0);
|
||||
assert(memcmp(page_get(p, 2, &len), "CDS", 3) == 0);
|
||||
|
||||
page_free(p);
|
||||
printf(" OK: multiple inserts\n");
|
||||
}
|
||||
|
||||
static void
|
||||
test_invalid_slot_returns_null(void)
|
||||
{
|
||||
Page * p = page_create(3);
|
||||
assert(page_get(p, 99, NULL) == NULL);
|
||||
page_free(p);
|
||||
printf(" OK: invalid slot returns NULL\n");
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
printf("=== test_page ===\n");
|
||||
test_create_returns_non_null();
|
||||
test_insert_returns_slot_id();
|
||||
test_insert_and_get();
|
||||
test_multiple_inserts();
|
||||
test_invalid_slot_returns_null();
|
||||
printf("All tests passed.\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user