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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user