From 1f57645d9550e486a5bc209a0652bfad7fb8872a Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 27 Oct 2024 21:57:02 +0200 Subject: add map --- tests/map.c | 33 +++++++++++++++++++++++++++++++++ tests/sptree.c | 37 +++++++++++++++++++++++++++++++++++++ tests/vec.c | 13 +++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 tests/map.c create mode 100644 tests/sptree.c (limited to 'tests') diff --git a/tests/map.c b/tests/map.c new file mode 100644 index 0000000..e9362ab --- /dev/null +++ b/tests/map.c @@ -0,0 +1,33 @@ +#include +#include + +#define MAP_KEY int +#define MAP_TYPE int +#define MAP_CMP(a, b) ((a) - (b)) +#define MAP_NAME ints +#include + +int main() +{ + struct ints ints = ints_create(); + for (int i = 0; i < 1000000; ++i) { + ints_insert(&ints, i, i); + } + assert(ints_len(&ints) == 1000000); + + for (int i = 0; i < 1000000; ++i) { + int *v = ints_find(&ints, i); + assert(v && *v == i); + } + + foreach(ints, iter, &ints) { + assert(iter->key == iter->data); + } + + for (int i = 0; i < 1000000; ++i) { + ints_remove(&ints, i); + } + + assert(ints_len(&ints) == 0); + ints_destroy(&ints); +} diff --git a/tests/sptree.c b/tests/sptree.c new file mode 100644 index 0000000..b8d1e5a --- /dev/null +++ b/tests/sptree.c @@ -0,0 +1,37 @@ +#include +#include + +#define SPTREE_TYPE int +#define SPTREE_CMP(a, b) ((b) - (a)) +#define SPTREE_NAME ints +#include + +int main() +{ + struct ints ints = ints_create(); + for (int i = 0; i < 1000000; ++i) { + ints_insert(&ints, i); + } + assert(ints_len(&ints) == 1000000); + + for (int i = 0; i < 1000000; ++i) { + int *v = ints_find(&ints, i); + assert(v && *v == i); + } + + int i = 0; + foreach(ints, iter, &ints) { + /* since my trees are ordered, this must hold, although you + * might consider it an implementation detail that shouldn't be + * relied on */ + assert(iter && *iter == i); + i++; + } + + for (int i = 0; i < 1000000; ++i) { + ints_remove(&ints, i); + } + + assert(ints_len(&ints) == 0); + ints_destroy(&ints); +} diff --git a/tests/vec.c b/tests/vec.c index 4bc06e7..a84096c 100644 --- a/tests/vec.c +++ b/tests/vec.c @@ -10,10 +10,23 @@ int main() for (int i = 0; i < 1000000; ++i) { ints_append(&ints, i); } + assert(ints_len(&ints) == 1000000); for (int i = 0; i < 1000000; ++i) { int *v = ints_at(&ints, i); assert(v && *v == i); } + + int i = 0; + foreach(ints, iter, &ints) { + assert(iter && *iter == i); + i++; + } + + for (int i = 1000000 - 1; i >= 0; --i) { + ints_remove(&ints, i); + } + assert(ints_len(&ints) == 0); + ints_destroy(&ints); } -- cgit v1.2.3