aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_world.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_world.c')
-rw-r--r--test/test_world.c24
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;