Files
metadesk/tests/code_sanity.c
T
2025-02-10 13:43:38 -05:00

41 lines
1.3 KiB
C

// This is test strictly for the granular (non-generated) version of the library to make sure it operates correctly
// #define MD_LINKED_LIST_PURE_MACRO 1
// #define MD_DONT_MAP_ANREA_TO_ALLOCATOR_IMPL 1
#include "metadesk.c"
// This program expects to be run from the build directory (where it would be after being built)
#define path_examples "../examples"
#define path_intro path_examples "/intro"
#define path_hello_world_mdesk path_intro "/hello_world.mdesk"
#define text str8_lit
int main()
{
Context ctx = {0};
ctx.os_ctx.enable_large_pages = true;
init(& ctx);
printf("metadesk: got past init!");
Arena* arena = arena_alloc();
String8 hello_world_mdesk = os_data_from_file_path(arena, text(path_hello_world_mdesk));
TokenizeResult lexed = tokenize_from_text (arena, hello_world_mdesk);
ParseResult parsed = parse_from_text_tokens(arena, text(path_hello_world_mdesk), hello_world_mdesk, lexed.tokens);
#define str8_list_iter(list, elem) list.first; elem; elem = elem->next
String8List debug_list = debug_string_list_from_tree(arena, parsed.root);
printf("Parsed listing:\n");
// for (String8Node* elem = str8_list_iter(debug_list, elem))
for (String8Node* elem = debug_list.first; elem; elem = elem->next)
{
String8 entry = elem->string;
printf("\tentry: %*s\n", (int)entry.size, entry.str);
}
deinit(& ctx);
}