Files
metadesk/tests/code_sanity.c
T

45 lines
1.4 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!\n");
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))
{
String8 entry = elem->string;
if (str8_find_needle(entry, 0, str8_lit("\n"), 0) < entry.size) {
printf("%*s", (int)entry.size, entry.str);
}
else {
printf("%*s\n", (int)entry.size, entry.str);
}
}
deinit(& ctx);
}