From 13d33be824a0f6a3952045df7b97b35fc69520a8 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Fri, 22 Aug 2025 16:12:08 +0300 Subject: cover all functions + Not quite all lines due to sptree being dumb >:((((( --- tests/sptree.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests/sptree.c') diff --git a/tests/sptree.c b/tests/sptree.c index 6ab3d6a..9eff356 100644 --- a/tests/sptree.c +++ b/tests/sptree.c @@ -1,4 +1,5 @@ #include +#include #include #include "test.h" @@ -23,6 +24,11 @@ int main() #endif struct ints ints = ints_create(); + /* check that iterating an empty tree doesn't do anything */ + foreach(ints, iter, &ints) { + assert(false && "iterating empty tree"); + } + for (int i = 0; i < 1000000; ++i) { if (!ints_insert(&ints, i)) { fprintf(stderr, "failed inserting %d\n", i); @@ -37,6 +43,11 @@ int main() assert(v && *v == i); } + /* check that inserting duplicate returns the original */ + int *orig = ints_find(&ints, 0); + ints_insert(&ints, 0); + assert(ints_find(&ints, 0) == orig); + int i = 0; foreach(ints, iter, &ints) { /* since my trees are ordered, this must hold, although you @@ -51,5 +62,32 @@ int main() } assert(ints_len(&ints) == 0); + + /* check that removing nonexistant item (or empty tree) doesn't crash */ + ints_remove(&ints, 0); + + /* insert random integers to hopefully exercise the code a bit more */ + srand(0); + + int inserted[1000]; + for (int i = 0; i < 1000; ++i) { + inserted[i] = rand(); + + /* covsrv shouldn't fail anymore */ + assert(ints_insert(&ints, inserted[i])); + } + + for (int i = 0; i < 1000; ++i) { + int *v = ints_find(&ints, inserted[i]); + assert(v && *v == inserted[i]); + } + + for (int i = 0; i < 1000; ++i) { + ints_remove(&ints, inserted[i]); + } + + assert(ints_len(&ints) == 0); + + ints_destroy(&ints); } -- cgit v1.2.3