mccu/test.c

126 lines
3.4 KiB
C
Raw Normal View History

2025-01-28 21:42:26 +00:00
#include <stdio.h>
#include <stdlib.h>
2025-02-04 13:03:27 +00:00
#include <mcutil/test.h>
#include <mcutil/iter.h>
#include <mcutil/lambda.h>
#include <mcutil/result.h>
#include <mcutil/hash/md5.h>
#include <mcutil/collect/str.h>
#include <mcutil/collect/gen_vec.h>
#include <mcutil/collect/gen_hash_map.h>
#include <mcutil/collect/typed_vec.h>
#include <mcutil/collect/typed_hash_map.h>
#include <string.h>
2025-01-28 21:42:26 +00:00
2025-02-04 13:03:27 +00:00
#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);
2025-02-04 13:32:09 +00:00
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]);
}
2025-02-04 13:03:27 +00:00
2025-02-04 13:32:09 +00:00
//printf("A: %s\n", res_a);
//printf("B: %s\n", res_b);
//printf("C: %s\n", res_c);
//printf("D: %s\n", res_d);
2025-02-04 13:03:27 +00:00
if ((
2025-02-04 13:32:09 +00:00
//strcmp(res_a, "A") ||
//strcmp(res_b, "B") ||
//strcmp(res_c, "C") ||
//strcmp(res_d, "D")
1
2025-02-04 13:03:27 +00:00
)) {
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);
2025-01-28 21:42:26 +00:00
return 0;
}