feat!: many work useles with hemar

This commit is contained in:
2025-05-10 11:00:36 +00:00
parent 4db5cc171b
commit 5f52fc42af
10 changed files with 503 additions and 127 deletions

View File

@@ -53,7 +53,7 @@ static void test_get_object_items(Arena *arena) {
static void test_print_json_object(Arena *arena) {
const char *json = "{\"key\":\"value\", \"num\":3.14}";
Json *root = json_parse(arena, &json);
char *printed = json_to_string(arena, root);
char *printed = JSON_TO_STR(arena, root);
assert(strstr(printed, "\"key\":") != NULL);
assert(strstr(printed, "\"value\"") != NULL);
assert(strstr(printed, "\"num\":") != NULL);
@@ -64,7 +64,7 @@ static void test_print_json_object(Arena *arena) {
static void test_print_json_number(Arena *arena) {
const char *json = "123.456";
Json *root = json_parse(arena, &json);
char *printed = json_to_string(arena, root);
char *printed = JSON_TO_STR(arena, root);
double val = atof(printed);
assert(val == 123.456);
}
@@ -73,7 +73,7 @@ static void test_print_json_number(Arena *arena) {
static void test_print_json_string(Arena *arena) {
const char *json = "\"test string\"";
Json *root = json_parse(arena, &json);
char *printed = json_to_string(arena, root);
char *printed = JSON_TO_STR(arena, root);
assert(strcmp(printed, "\"test string\"") == 0);
}
@@ -99,12 +99,12 @@ static void test_nested_json_object(Arena *arena) {
static void test_arena_reset_reuse(Arena *arena) {
const char *json1 = "{\"key\":\"value\"}";
Json *root1 = json_parse(arena, &json1);
char *printed1 = json_to_string(arena, root1);
char *printed1 = JSON_TO_STR(arena, root1);
assert(strcmp(printed1, "{\"key\":\"value\"}") == 0);
arena_reset(arena);
const char *json2 = "\"another test\"";
Json *root2 = json_parse(arena, &json2);
char *printed2 = json_to_string(arena, root2);
char *printed2 = JSON_TO_STR(arena, root2);
assert(strcmp(printed2, "\"another test\"") == 0);
}

View File

@@ -233,12 +233,87 @@ static void simplest_separator_test_template_parse(Arena *arena, TemplateConfig
TemplateNode node = RESULT_SOME_VALUE(template_result);
char *result_str = TEMPLATE_NODE_PRETTY_JSON(node, arena);
char *expected_result_str = arena_strdup(arena,
"[\n"
" {\n"
" \"type\": \"SECTION\",\n"
" \"content\": {\n"
" \"iterator\": \"item\",\n"
" \"collection\": \"items\"\n"
" },\n"
" \"body\": [\n"
" {\n"
" \"type\": \"INTERPOLATE\",\n"
" \"content\": {\n"
" \"key\": \"name\"\n"
" }\n"
" },\n"
" {\n"
" \"type\": \"TEXT\",\n"
" \"content\": {\n"
" \"content\": \" \"\n"
" }\n"
" },\n"
" {\n"
" \"type\": \"INTERPOLATE\",\n"
" \"content\": {\n"
" \"key\": \"item.name\"\n"
" }\n"
" },\n"
" {\n"
" \"type\": \"TEXT\",\n"
" \"content\": {\n"
" \"content\": \" \"\n"
" }\n"
" }\n"
" ]\n"
" },\n"
" {\n"
" \"type\": \"TEXT\",\n"
" \"content\": {\n"
" \"content\": \" \"\n"
" }\n"
" },\n"
" {\n"
" \"type\": \"INTERPOLATE\",\n"
" \"content\": {\n"
" \"key\": \"name2\"\n"
" }\n"
" }\n"
"]");
raise_log("result_str: \n%s", result_str);
assert(strcmp(result_str, expected_result_str) == 0);
}
static void simplest_execute_test_template_parse(Arena *arena, TemplateConfig *config) {
const char *template_str =
"{% %}"
"{% execute RETURN 'aaaaaa' %}"
"{% name %}"
"{% name2 %}"
"{% name3 %}";
TemplateResult template_result = template_parse(arena, &template_str, config);
if (IS_RESULT_ERROR(template_result)) {
raise_exception("template_parse failed");
return;
}
TemplateNode node = RESULT_SOME_VALUE(template_result);
//char *result_str;
{ // some debug output
Arena *debug_arena = DISPOSABLE_ARENA;
const char *json_str = TEMPLATE_NODE_TO_JSON_STR(debug_arena, &node);
raise_log("json_str: \n%s", json_str);
Json *json = json_parse(debug_arena, &json_str);
raise_notice("json_str: \n%s", JSON_TO_PRETTY_STR(debug_arena, json));
//result_str = arena_strdup(arena, JSON_TO_PRETTY_STR(debug_arena, json));
}
}
@@ -274,9 +349,13 @@ int main(void) {
printf("%sTest 4: simplest_separator_test_template_parse passed%s\n", OPTIONAL_COLOR(COLOR_GREEN), OPTIONAL_COLOR(COLOR_RESET));
arena_reset(&arena);
simplest_execute_test_template_parse(&arena, &config);
printf("%sTest 5: simplest_execute_test_template_parse passed%s\n", OPTIONAL_COLOR(COLOR_GREEN), OPTIONAL_COLOR(COLOR_RESET));
arena_reset(&arena);
logger_free();
arena_free(&config_arena);
arena_free(&arena);
printf("%sall tests passed %s%s%s\n", OPTIONAL_COLOR(COLOR_GREEN), OPTIONAL_COLOR(COLOR_CYAN), __FILE__, OPTIONAL_COLOR(COLOR_RESET));
return 0;
}
}