diff options
Diffstat (limited to 'test/test_world.c')
-rw-r--r-- | test/test_world.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/test_world.c b/test/test_world.c index 3f7f6ea6..7ff20143 100644 --- a/test/test_world.c +++ b/test/test_world.c @@ -3,6 +3,8 @@ #undef NDEBUG +#include "failing_allocator.h" + #include "serd/node.h" #include "serd/world.h" @@ -11,9 +13,28 @@ #include <string.h> static void +test_new_failed_alloc(void) +{ + SerdFailingAllocator allocator = serd_failing_allocator(); + + // Successfully allocate a world to count the number of allocations + SerdWorld* const world = serd_world_new(&allocator.base); + assert(world); + + // Test that each allocation failing is handled gracefully + const size_t n_new_allocs = allocator.n_allocations; + for (size_t i = 0; i < n_new_allocs; ++i) { + allocator.n_remaining = i; + assert(!serd_world_new(&allocator.base)); + } + + serd_world_free(world); +} + +static void test_get_blank(void) { - SerdWorld* world = serd_world_new(); + SerdWorld* world = serd_world_new(NULL); char expected[12]; for (unsigned i = 0; i < 32; ++i) { @@ -29,6 +50,7 @@ test_get_blank(void) int main(void) { + test_new_failed_alloc(); test_get_blank(); return 0; |