From b924fc2f66d46ee10aa3b800a6521d3940919f9f Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Fri, 17 Apr 2020 21:02:35 -0400 Subject: nserver/ -> ./ --- tests/darray_algos_tests.c | 102 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 tests/darray_algos_tests.c (limited to 'tests/darray_algos_tests.c') diff --git a/tests/darray_algos_tests.c b/tests/darray_algos_tests.c new file mode 100644 index 0000000..01ef471 --- /dev/null +++ b/tests/darray_algos_tests.c @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Copyright © 2010, Zed A. Shaw. + * Copyright © 2020 rsiddharth + */ + +#include "minunit.h" +#include + +int testcmp(char **a, char **b) +{ + return strcmp(*a, *b); +} + +DArray *create_words() +{ + DArray *result = DArray_create(0, 5); + char *words[] = { "asdfasfd", + "werwar", "13234", "asdfasfd", "oioj" }; + int i = 0; + + for (i = 0; i < 5; i++) { + DArray_push(result, words[i]); + } + + return result; +} + +int is_sorted(DArray *array) +{ + int i = 0; + + for (i = 0; i < DArray_count(array) -1; i++) { + if (strcmp(DArray_get(array, i), DArray_get(array, i + 1)) > 0) { + return 0; + } + } + + return 1; +} + +char *run_sort_test(int (*func) (DArray *, DArray_compare), + const char *name) +{ + DArray *words = create_words(); + mu_assert(!is_sorted(words), "Words should start not sorted."); + + debug("--- Testing %s sorting algorithm", name); + int rc = func(words, (DArray_compare) testcmp); + mu_assert(rc == 0, "sort failed"); + mu_assert(is_sorted(words), "didn't sort it"); + + DArray_destroy(words); + + return NULL; +} + +char *test_qsort() +{ + return run_sort_test(DArray_qsort, "qsort"); +} + +char *test_fucked_qsort() +{ + return run_sort_test(DArray_fucked_qsort, "fucked qsort"); +} + +char *test_heapsort() +{ + return run_sort_test(DArray_heapsort, "heapsort"); +} + +char *test_fucked_heapsort() +{ + return run_sort_test(DArray_fucked_heapsort, "fucked heapsort"); +} + +char *test_mergesort() +{ + return run_sort_test(DArray_mergesort, "mergesort"); +} + +char *test_fucked_mergesort() +{ + return run_sort_test(DArray_fucked_mergesort, "fucked mergesort"); +} + +char *all_tests() +{ + mu_suite_start(); + + mu_run_test(test_qsort); + mu_run_test(test_fucked_qsort); + mu_run_test(test_heapsort); + mu_run_test(test_fucked_heapsort); + mu_run_test(test_mergesort); + mu_run_test(test_fucked_mergesort); + + return NULL; +} + +RUN_TESTS(all_tests); -- cgit v1.2.3