#include "sllist.h" #include "common.h" static inline int test_create() { sl_list *a = sllist_create(); _assertNotNull(a); _assertEqual(sllist_count(a), 0); _assertEqual(sllist_count(sllist_clear(a)), 0); sllist_destroy(a); return 0; } static inline int add1_fnc(void **_i, void *nullable) { (void) nullable; int * i = (int *)_i; (*i)++; return 1; } static inline int test_add() { intptr_t i; sl_list *a = sllist_create(); _assertNotNull(a); _assertEqual(sllist_count(a), 0); sllist_pushback(a, (void *)3); _assertEqual(sllist_count(a), 1); _assertEqual(sllist_at(a, 0), 3); sllist_pushback(a, (void *)2); _assertEqual(sllist_count(a), 2); _assertEqual(sllist_at(a, 0), 3); _assertEqual(sllist_at(a, 1), 2); _assertEqual(sllist_popback(a), 2); _assertEqual(sllist_count(a), 1); _assertEqual(sllist_at(a, 0), 3); sllist_clear(a); _assertEqual(sllist_count(a), 0); for (i=0; i < 1024; ++i) sllist_pushback(a, (void *)(i * 2)); _assertEqual(sllist_count(a), 1024); _assertEqual(sllist_at(a, 0), 0); _assertEqual(sllist_at(a, 1023), 2046); _assertEqual(sllist_at(a, 1024), 0); i = 0; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 0); i = 2; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1); i = 2046; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1023); i = 2048; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), -1); sllist_foreach(a, add1_fnc, NULL); _assertEqual(sllist_count(a), 1024); _assertEqual(sllist_at(a, 0), 1); _assertEqual(sllist_at(a, 1023), 2047); _assertEqual(sllist_at(a, 1024), 0); i = 1; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 0); i = 3; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1); i = 2047; _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1023); _assertEqual(sllist_remove(a, sllist_cmp_int, (void*)i), 1); _assertEqual(sllist_count(a), 1023); _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), -1); _assertEqual(sllist_removeat(a, 0), 1) _assertEqual(sllist_count(a), 1022); while (sllist_count(a)) sllist_popback(a); for (i=0; i < 1024; ++i) sllist_pushback(a, (void *)(i * 2)); _assertEqual(sllist_count(a), 1024); _assertEqual(sllist_at(a, 0), 0); _assertEqual(sllist_at(a, 1023), 2046); _assertEqual(sllist_at(a, 1024), 0); sllist_destroy(a); return 0; } int main() { int success = 1; success &= !test_create(); success &= !test_add(); exit(success ? EXIT_SUCCESS: EXIT_FAILURE); }