#include #include #include #include #include #include #include #include #include #include #include #include #include #define GEN_VEC_ERR_BAD_ORDER 1 const char* gen_vec_error_t[] = { [GEN_VEC_ERR_BAD_ORDER] = "Returned items in bad order", }; int test_gen_vec() { char* a = malloc(2); char* b = malloc(2); char* c = malloc(2); char* d = malloc(2); memcpy(a, "A", 2); memcpy(b, "B", 2); memcpy(c, "C", 2); memcpy(d, "D", 2); // C A B D mcu_gen_vec_t vec = {0}; mcu_gen_vec_init(&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("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") 1 )) { return GEN_VEC_ERR_BAD_ORDER; } return 0; } mcu_test_case_t cases[] = { { .short_name="GEN_VEC", .test_fn=test_gen_vec, .error_types = (char**)gen_vec_error_t, } }; int main(void) { RUN_TEST_CASES(cases); return 0; }