FUCK YEAH, it works, it was the is_valid thing fo slices that was inverted, did the test by brute force and damn, is the expected AST

This commit is contained in:
2026-03-25 10:22:54 -06:00
parent f24671bd19
commit 845673fb0e
4 changed files with 50 additions and 34 deletions

View File

@@ -46,7 +46,56 @@ static void test_parsing_basic_expression(void **state) {
assert_int_equal(node.data.integer, 789);
AST tree = parse(&tokens);
// Assert head is +
assert_int_equal(tree.head->type, NODE_BINARY_OP);
assert_int_equal(tree.head->data.binary.op, OP_ADD);
assert_int_equal(tree.head->data.binary.left->type, NODE_INTEGER);
assert_int_equal(tree.head->data.binary.left->data.integer, 2);
assert_int_equal(
tree.head->data.binary.right->type,
NODE_BINARY_OP
);
assert_int_equal(
tree.head->data.binary.right->data.binary.op,
OP_MUL
);
assert_int_equal(
tree.head->data.binary.right->data.binary.right->type,
NODE_INTEGER);
assert_int_equal(
tree.head->data.binary.right->data.binary.right->data.integer,
789);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->type,
NODE_BINARY_OP
);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->data.binary.op,
OP_DIV
);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->data.binary.right->type,
NODE_INTEGER
);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->data.binary.right->data.integer,
66
);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->data.binary.left->type,
NODE_INTEGER
);
assert_int_equal(
tree.head->data.binary.right->data.binary.left->data.binary.left->data.integer,
3
);
}
int main(void) {