From a6ac2867c1b6fe6a7481c6ad45831bdff0fa7f04 Mon Sep 17 00:00:00 2001 From: yuqing Date: Tue, 29 Dec 2015 12:23:59 +0800 Subject: [PATCH] add tests/test_multi_skiplist.c --- src/tests/test_multi_skiplist.c | 214 ++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 src/tests/test_multi_skiplist.c diff --git a/src/tests/test_multi_skiplist.c b/src/tests/test_multi_skiplist.c new file mode 100644 index 0000000..a0dbf85 --- /dev/null +++ b/src/tests/test_multi_skiplist.c @@ -0,0 +1,214 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "multi_skiplist.h" +#include "logger.h" +#include "shared_func.h" + +#define COUNT 1280000 +#define LEVEL_COUNT 18 +#define MIN_ALLOC_ONCE 32 +#define LAST_INDEX (COUNT - 1) + +static int *numbers; +static MultiSkiplist sl; +static MultiSkiplistIterator iterator; + +static int compare_func(const void *p1, const void *p2) +{ + return *((int *)p1) - *((int *)p2); +} + +static int test_insert() +{ + int i; + int result; + int64_t start_time; + int64_t end_time; + void *value; + + start_time = get_current_time_ms(); + for (i=0; ikey - ((Record *)p2)->key; +} + +static int test_stable_sort() +{ +#define RECORDS 20 + int i; + int result; + int index1; + int index2; + MultiSkiplist sl; + MultiSkiplistIterator iterator; + Record records[RECORDS]; + Record *record; + void *value; + + result = multi_skiplist_init_ex(&sl, 12, compare_record, 128); + if (result != 0) { + return result; + } + + for (i=0; ikey == records[i].key); + } + + i = 0; + multi_skiplist_iterator(&sl, &iterator); + while ((value=multi_skiplist_next(&iterator)) != NULL) { + i++; + record = (Record *)value; + printf("%d => #%d\n", record->key, record->line); + } + assert(i==RECORDS); + + multi_skiplist_destroy(&sl); + return 0; +} + +int main(int argc, char *argv[]) +{ + int i; + int tmp; + int index1; + int index2; + int result; + + log_init(); + numbers = (int *)malloc(sizeof(int) * COUNT); + srand(time(NULL)); + for (i=0; i