#include #include #include #include #include "vec.h" int _test_vec_foreach_func(void* data, va_list args){ char* real_data = data; int* sum = va_arg(args, int*); *sum += *real_data; return 0; } int _test_vec_find_string(void* a, void* b){ return strcmp(a, b) == 0; } int test_vec_basic(){ vec test_vec; libds_result result = vec_init(&test_vec); vec_free(&test_vec); return result == SUCCESS; } int test_vec_add(){ vec test_vec; const char* test_string = "test"; int return_code; vec_init(&test_vec); vec_add(&test_vec, test_string); return_code = *((void**) test_vec.data) == test_string; vec_free(&test_vec); return return_code; } int test_vec_remove(){ vec test_vec; const char* test_string = "test"; int return_code; vec_init(&test_vec); vec_add(&test_vec, test_string); vec_remove(&test_vec, test_string); return_code = *((void**) test_vec.data) == NULL; vec_free(&test_vec); return return_code; } int test_vec_find(){ vec test_vec; const char* test_string = "test"; int return_code; vec_init(&test_vec); vec_add(&test_vec, test_string); return_code = vec_find(&test_vec, test_string, _test_vec_find_string) == test_string; vec_free(&test_vec); return return_code; } int test_vec_foreach(){ vec test_vec; int return_code; int sum = 0; char* test_strings[3] = { "1", "2", "3" }; vec_init(&test_vec); vec_add(&test_vec, test_strings[0]); vec_add(&test_vec, test_strings[1]); vec_add(&test_vec, test_strings[2]); vec_foreach(&test_vec, NULL, compare_always, _test_vec_foreach_func, &sum); return_code = test_strings[0][0] + test_strings[1][0] + test_strings[2][0] == sum; vec_free(&test_vec); return return_code; } int test_vec_index(){ vec test_vec; int return_code; char* test_strings[3] = { "1", "2", "3" }; vec_init(&test_vec); vec_add(&test_vec, test_strings[0]); vec_add(&test_vec, test_strings[1]); vec_add(&test_vec, test_strings[2]); return_code = vec_index(&test_vec, 1) == test_strings[1]; vec_free(&test_vec); return return_code; } void run_test(char* test_name, int (*test_func)()) { printf("Running test %-15s . . . ", test_name); printf("%s\n", test_func() ? "Passed" : "Failed"); } int main(int argc, char** argv){ run_test("vec_basic", test_vec_basic); run_test("vec_add", test_vec_add); run_test("vec_remove", test_vec_remove); run_test("vec_find", test_vec_find); run_test("vec_foreach", test_vec_foreach); run_test("vec_index", test_vec_index); return EXIT_SUCCESS; }