From 2e94e558c1006bf9eb3721f37ba98e9e52aa5afb Mon Sep 17 00:00:00 2001 From: Snaipe Date: Fri, 21 Aug 2015 06:30:20 +0200 Subject: [PATCH] Added tests on ordered-set --- CMakeLists.txt | 1 + test/CMakeLists.txt | 12 ++++++++++++ test/ordered-set.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 test/CMakeLists.txt create mode 100644 test/ordered-set.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 04fcbfb..8dfa056 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,4 +133,5 @@ add_custom_target(uninstall enable_testing() add_subdirectory(samples) +add_subdirectory(test) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..e3d4704 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,12 @@ +set(CMAKE_C_FLAGS "-std=gnu99 -Wall -Wextra") + +include_directories(../include ../src) + +set(TEST_SOURCES + ordered-set.c +) + +add_executable(test_criterion ${TEST_SOURCES}) +target_link_libraries(test_criterion criterion) + +add_test(test_criterion test_criterion) diff --git a/test/ordered-set.c b/test/ordered-set.c new file mode 100644 index 0000000..c25e638 --- /dev/null +++ b/test/ordered-set.c @@ -0,0 +1,44 @@ +#include + +#include "criterion/criterion.h" +#include "criterion/ordered-set.h" + +int compare_gt(void *a, void *b) { + int *ia = a, *ib = b; + return *ia == *ib ? 0 : (*ia > *ib ? -1 : 1); +} + +int compare_lt(void *a, void *b) { + int *ia = a, *ib = b; + return *ia == *ib ? 0 : (*ia < *ib ? -1 : 1); +} + +Test(ordered_set, contract_lt) { + smart struct criterion_ordered_set *set = new_ordered_set(compare_lt, NULL); + + insert_ordered_set(set, &(int[1]) { 1 }, sizeof (int)); + insert_ordered_set(set, &(int[1]) { 8 }, sizeof (int)); + insert_ordered_set(set, &(int[1]) { 3 }, sizeof (int)); + + int *prev = NULL; + FOREACH_SET(int *e, set) { + if (prev) + cr_assert_lt(*prev, *e); + prev = e; + } +} + +Test(ordered_set, contract_gt) { + smart struct criterion_ordered_set *set = new_ordered_set(compare_gt, NULL); + + insert_ordered_set(set, &(int[1]) { 1 }, sizeof (int)); + insert_ordered_set(set, &(int[1]) { 8 }, sizeof (int)); + insert_ordered_set(set, &(int[1]) { 3 }, sizeof (int)); + + int *prev = NULL; + FOREACH_SET(int *e, set) { + if (prev) + cr_assert_gt(*prev, *e); + prev = e; + } +}