diff --git a/include/mcutil/test.h b/include/mcutil/test.h index 76bb8ac..076594a 100644 --- a/include/mcutil/test.h +++ b/include/mcutil/test.h @@ -14,14 +14,15 @@ typedef struct mcu_test_case_s { #define RUN_TEST_CASES(cases) \ for (size_t i = 0; i < sizeof(cases)/sizeof(mcu_test_case_t); i++) { \ mcu_test_case_t* test_case = &(cases)[i]; \ - printf("(%s): ", test_case->short_name); \ + const char* sn = test_case->short_name; \ + printf("Running test case: %s\n", test_case->short_name); \ int ret = (test_case->test_fn)(); \ - if (ret) { \ - printf("FAIL - Returned non zero (%d)\n", ret); \ - printf("REASON: %s\n", test_case->error_types[ret]); \ + if (ret) { \ + printf("(%s) FAIL - Returned non zero (%d)\n", sn, ret); \ + printf("(%s) REASON: %s\n", sn, test_case->error_types[ret]); \ exit(1); \ } else { \ - printf("PASS\n"); \ + printf("(%s) PASS\n", sn); \ } \ } diff --git a/src/collect/gen_vec.c b/src/collect/gen_vec.c index b2052a8..30bec39 100644 --- a/src/collect/gen_vec.c +++ b/src/collect/gen_vec.c @@ -43,7 +43,7 @@ MCU_API void mcu_gen_vec_insert_back(mcu_gen_vec_t* gv, void* data) { MCU_API void* mcu_gen_vec_remove_back(mcu_gen_vec_t *gv) { assert(gv && "Null ptr passed as mcu_gen_vec_t"); if (gv->count == 0) return NULL; - return gv->inner[gv->count--]; + return gv->inner[--gv->count]; } MCU_API void* mcu_gen_vec_remove_front(mcu_gen_vec_t *gv) { diff --git a/test.c b/test.c index 17b02cb..6cc442d 100644 --- a/test.c +++ b/test.c @@ -31,33 +31,76 @@ int test_gen_vec() { // C A B D mcu_gen_vec_t vec = {0}; mcu_gen_vec_init(&vec); - - mcu_gen_vec_insert_front(&vec, (void*)a); - mcu_gen_vec_insert_back(&vec, (void*)b); - mcu_gen_vec_insert_front(&vec, (void*)c); - mcu_gen_vec_insert_back(&vec, (void*)d); - - printf("\nAr: %s\n", (char*) vec.inner[0]); - printf("Br: %s\n", (char*) vec.inner[1]); - printf("Cr: %s\n", (char*) vec.inner[2]); - printf("Dr: %s\n", (char*) vec.inner[3]); - - char* res_d = mcu_gen_vec_remove_back(&vec); - char* res_c = mcu_gen_vec_remove_front(&vec); - char* res_b = mcu_gen_vec_remove_back(&vec); - char* res_a = mcu_gen_vec_remove_front(&vec); + + printf("Testing mcu_gen_vec_remove_front:\n"); + { + vec.inner[0] = c; + vec.inner[1] = a; + vec.inner[2] = b; + vec.inner[3] = d; + vec.count = 4; + printf("Inserted: ["); + printf("\"%s\", ", (char*) vec.inner[0]); + printf("\"%s\", ", (char*) vec.inner[1]); + printf("\"%s\", ", (char*) vec.inner[2]); + printf("\"%s\"]\n", (char*) vec.inner[3]); + + printf("Got: ["); + printf("\"%s\", ", (char*)mcu_gen_vec_remove_front(&vec)); + printf("\"%s\", ", (char*)mcu_gen_vec_remove_front(&vec)); + printf("\"%s\", ", (char*)mcu_gen_vec_remove_front(&vec)); + printf("\"%s\"]\n", (char*)mcu_gen_vec_remove_front(&vec)); + } + printf("Testing mcu_gen_vec_remove_back:\n"); + { + vec.inner[0] = c; + vec.inner[1] = a; + vec.inner[2] = b; + vec.inner[3] = d; + vec.count = 4; + printf("Inserted: ["); + printf("\"%s\", ", (char*) vec.inner[0]); + printf("\"%s\", ", (char*) vec.inner[1]); + printf("\"%s\", ", (char*) vec.inner[2]); + printf("\"%s\"]\n", (char*) vec.inner[3]); + + char* v1 = (char*)mcu_gen_vec_remove_back(&vec); + char* v2 = (char*)mcu_gen_vec_remove_back(&vec); + char* v3 = (char*)mcu_gen_vec_remove_back(&vec); + char* v4 = (char*)mcu_gen_vec_remove_back(&vec); - printf("A: %s\n", res_a); - printf("B: %s\n", res_b); - printf("C: %s\n", res_c); - printf("D: %s\n", res_d); + printf("Got: ["); + printf("\"%s\", ", v4); + printf("\"%s\", ", v3); + printf("\"%s\", ", v2); + printf("\"%s\"]\n", v1); + } + printf("Testing mcu_gen_vec_insert_front:\n"); + { + mcu_gen_vec_insert_front(&vec, d); + mcu_gen_vec_insert_front(&vec, c); + mcu_gen_vec_insert_front(&vec, b); + mcu_gen_vec_insert_front(&vec, a); + printf("Expected: [\"A\", \"B\", \"C\", \"D\"]\n"); + printf("Got: ["); + printf("\"%s\", ", (char*) vec.inner[0]); + printf("\"%s\", ", (char*) vec.inner[1]); + printf("\"%s\", ", (char*) vec.inner[2]); + printf("\"%s\"]\n", (char*) vec.inner[3]); + } + + //printf("A: %s\n", res_a); + //printf("B: %s\n", res_b); + //printf("C: %s\n", res_c); + //printf("D: %s\n", res_d); if (( - strcmp(res_a, "A") || - strcmp(res_b, "B") || - strcmp(res_c, "C") || - strcmp(res_d, "D") + //strcmp(res_a, "A") || + //strcmp(res_b, "B") || + //strcmp(res_c, "C") || + //strcmp(res_d, "D") + 1 )) { return GEN_VEC_ERR_BAD_ORDER; }