mccu/test.c
2025-02-04 15:03:27 +02:00

83 lines
1.9 KiB
C

#include <stdio.h>
#include <stdlib.h>
#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>
#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);
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("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")
)) {
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;
}