c-md/tests/transpile/test_transpile_code.c
2026-01-12 10:18:47 +01:00

103 lines
2 KiB
C

#include <criterion/criterion.h>
#include <stdio.h>
#include "internal/transpile_internal.h"
/*
** TESTS: transpile/code.c - Handle code lines
*/
Test(transpile_code, handle_single_line)
{
t_state s;
FILE *out;
t_map map;
char buffer[256];
int8_t ret;
out = fopen("/tmp/test_code_out.c", "w");
map_init(&map);
state_init(&s, NULL, out, "c", &map);
ret = handle_code_line(&s, "int x = 42;\n");
cr_assert_eq(ret, 0);
cr_assert_eq(s.dst_line, 1);
fclose(out);
out = fopen("/tmp/test_code_out.c", "r");
fgets(buffer, sizeof(buffer), out);
cr_assert_str_eq(buffer, "int x = 42;\n");
fclose(out);
map_free(&map);
remove("/tmp/test_code_out.c");
}
Test(transpile_code, handle_multiple_lines)
{
t_state s;
FILE *out;
t_map map;
char buffer[256];
int8_t ret;
out = fopen("/tmp/test_code_multi.c", "w");
map_init(&map);
state_init(&s, NULL, out, "c", &map);
ret = handle_code_line(&s, "int main() {\n");
cr_assert_eq(ret, 0);
cr_assert_eq(s.dst_line, 1);
ret = handle_code_line(&s, " return 0;\n");
cr_assert_eq(ret, 0);
cr_assert_eq(s.dst_line, 2);
ret = handle_code_line(&s, "}\n");
cr_assert_eq(ret, 0);
cr_assert_eq(s.dst_line, 3);
fclose(out);
out = fopen("/tmp/test_code_multi.c", "r");
fgets(buffer, sizeof(buffer), out);
cr_assert_str_eq(buffer, "int main() {\n");
fgets(buffer, sizeof(buffer), out);
cr_assert_str_eq(buffer, " return 0;\n");
fgets(buffer, sizeof(buffer), out);
cr_assert_str_eq(buffer, "}\n");
fclose(out);
map_free(&map);
remove("/tmp/test_code_multi.c");
}
Test(transpile_code, handle_empty_line)
{
t_state s;
FILE *out;
t_map map;
char buffer[256];
int8_t ret;
out = fopen("/tmp/test_code_empty.c", "w");
map_init(&map);
state_init(&s, NULL, out, "c", &map);
ret = handle_code_line(&s, "\n");
cr_assert_eq(ret, 0);
cr_assert_eq(s.dst_line, 1);
fclose(out);
out = fopen("/tmp/test_code_empty.c", "r");
fgets(buffer, sizeof(buffer), out);
cr_assert_str_eq(buffer, "\n");
fclose(out);
map_free(&map);
remove("/tmp/test_code_empty.c");
}