aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index d54e7a5..20eb42e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,8 +1,47 @@
#include "include/main.h"
#include "include/doer.h"
+#include "../test/include/test.h"
+
+void test_tree_cpy() {
+ tree_t* tree_block = tree_init(TREE_TYPE_BLOCK, NULL);
+ tree_t* tree_lstr = tree_block->data.block.val = tree_init(TREE_TYPE_LSTR, tree_block);
+ char* char_lstr = tree_lstr->data.lstr.val = calloc(12, sizeof(char));
+ strcpy(char_lstr, "hello world");
+ tree_lstr->data.lstr.len = 11;
+ tree_t* tree_block2 = tree_block->data.block.nxt = tree_init(TREE_TYPE_BLOCK, tree_block);
+ tree_t* tree_def = tree_block2->data.block.val = tree_init(TREE_TYPE_DEF, tree_block2);
+ tree_t* tree_tag = tree_def->data.def.tag = tree_init(TREE_TYPE_TAG, tree_def);
+ char* char_tag = tree_tag->data.tag.val = calloc(4, sizeof(char));
+ strcpy(char_tag, "int");
+ tree_tag->data.tag.nxt = NULL;
+ tree_t* tree_darg = tree_def->data.def.arg = tree_init(TREE_TYPE_DARG, tree_def);
+ tree_t* tree_tag2 = tree_darg->data.darg.tag = tree_init(TREE_TYPE_TAG, tree_darg);
+ char* char_tag2 = tree_tag2->data.tag.val = calloc(4, sizeof(char));
+ strcpy(char_tag2, "int");
+ tree_tag2->data.tag.nxt = NULL;
+ tree_darg->data.darg.nxt = NULL;
+ tree_t* tree_lint = tree_def->data.def.val = tree_init(TREE_TYPE_LINT, tree_def);
+ tree_lint->data.lint.val = 42;
+ tree_block2->data.block.nxt = NULL;
+
+ tree_t* t2 = malloc(sizeof(tree_t));
+
+ tree_cpy(&t2, tree_block);
+
+ printf(tree_cmp(tree_block, t2)?"yes":"no");
+
+ tree_print(tree_block, 0);
+ tree_print(t2, 0);
+
+
+ printf(&t2 != &tree_block ?"yes":"no");
+}
+
/* FIXME: Segfaults ~30% of the time. No idea why. Thx future self <3. */
int main(int argc, char* argv[]) {
+ test_tree_cpy();
+ return 0;
char* src;
pp_t* pp;
lexer_t* lexer;