Some more

This commit is contained in:
Gvidas Juknevičius 2025-02-04 15:32:09 +02:00
parent 049b901278
commit 61c25ffcb9
Signed by: MCorange
GPG Key ID: 12B1346D720B7FBB
3 changed files with 73 additions and 29 deletions

View File

@ -14,14 +14,15 @@ typedef struct mcu_test_case_s {
#define RUN_TEST_CASES(cases) \ #define RUN_TEST_CASES(cases) \
for (size_t i = 0; i < sizeof(cases)/sizeof(mcu_test_case_t); i++) { \ for (size_t i = 0; i < sizeof(cases)/sizeof(mcu_test_case_t); i++) { \
mcu_test_case_t* test_case = &(cases)[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)(); \ int ret = (test_case->test_fn)(); \
if (ret) { \ if (ret) { \
printf("FAIL - Returned non zero (%d)\n", ret); \ printf("(%s) FAIL - Returned non zero (%d)\n", sn, ret); \
printf("REASON: %s\n", test_case->error_types[ret]); \ printf("(%s) REASON: %s\n", sn, test_case->error_types[ret]); \
exit(1); \ exit(1); \
} else { \ } else { \
printf("PASS\n"); \ printf("(%s) PASS\n", sn); \
} \ } \
} }

View File

@ -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) { MCU_API void* mcu_gen_vec_remove_back(mcu_gen_vec_t *gv) {
assert(gv && "Null ptr passed as mcu_gen_vec_t"); assert(gv && "Null ptr passed as mcu_gen_vec_t");
if (gv->count == 0) return NULL; 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) { MCU_API void* mcu_gen_vec_remove_front(mcu_gen_vec_t *gv) {

83
test.c
View File

@ -32,32 +32,75 @@ int test_gen_vec() {
mcu_gen_vec_t vec = {0}; mcu_gen_vec_t vec = {0};
mcu_gen_vec_init(&vec); 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("Testing mcu_gen_vec_remove_front:\n");
printf("Br: %s\n", (char*) vec.inner[1]); {
printf("Cr: %s\n", (char*) vec.inner[2]); vec.inner[0] = c;
printf("Dr: %s\n", (char*) vec.inner[3]); 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* res_d = mcu_gen_vec_remove_back(&vec); printf("Got: [");
char* res_c = mcu_gen_vec_remove_front(&vec); printf("\"%s\", ", (char*)mcu_gen_vec_remove_front(&vec));
char* res_b = mcu_gen_vec_remove_back(&vec); printf("\"%s\", ", (char*)mcu_gen_vec_remove_front(&vec));
char* res_a = 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("Got: [");
printf("B: %s\n", res_b); printf("\"%s\", ", v4);
printf("C: %s\n", res_c); printf("\"%s\", ", v3);
printf("D: %s\n", res_d); 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 (( if ((
strcmp(res_a, "A") || //strcmp(res_a, "A") ||
strcmp(res_b, "B") || //strcmp(res_b, "B") ||
strcmp(res_c, "C") || //strcmp(res_c, "C") ||
strcmp(res_d, "D") //strcmp(res_d, "D")
1
)) { )) {
return GEN_VEC_ERR_BAD_ORDER; return GEN_VEC_ERR_BAD_ORDER;
} }