Start work on removing parent pointers
Co-Authored-By: Rick Winfrey <rewinfrey@github.com>
This commit is contained in:
parent
8300f24fec
commit
973e4a44f0
14 changed files with 410 additions and 324 deletions
|
|
@ -71,6 +71,7 @@ describe("Node", [&]() {
|
|||
document = ts_document_new();
|
||||
ts_document_set_language(document, load_real_language("json"));
|
||||
ts_document_set_input_string(document, json_string.c_str());
|
||||
// ts_document_print_debugging_graphs(document, true);
|
||||
ts_document_parse(document);
|
||||
root_node = ts_node_child(ts_document_root_node(document), 0);
|
||||
});
|
||||
|
|
@ -157,7 +158,7 @@ describe("Node", [&]() {
|
|||
AssertThat(ts_node_parent(number_node), Equals(root_node));
|
||||
AssertThat(ts_node_parent(false_node), Equals(root_node));
|
||||
AssertThat(ts_node_parent(object_node), Equals(root_node));
|
||||
AssertThat(ts_node_parent(ts_document_root_node(document)).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_parent(ts_document_root_node(document)).subtree, Equals<void *>(nullptr));
|
||||
});
|
||||
|
||||
it("works correctly when the node contains aliased children and extras", [&]() {
|
||||
|
|
@ -239,19 +240,7 @@ describe("Node", [&]() {
|
|||
child = ts_node_first_named_child_for_byte(root_node, object_index + 1);
|
||||
AssertThat(ts_node_type(child, document), Equals("object"));
|
||||
child = ts_node_first_named_child_for_byte(root_node, object_end_index);
|
||||
AssertThat(child.data, Equals<void *>(nullptr));
|
||||
});
|
||||
});
|
||||
|
||||
describe("child_index()", [&]() {
|
||||
it("returns the index of the node within its parent", [&]() {
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 0)), Equals(0u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 1)), Equals(1u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 2)), Equals(2u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 3)), Equals(3u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 4)), Equals(4u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 5)), Equals(5u));
|
||||
AssertThat(ts_node_child_index(ts_node_child(root_node, 6)), Equals(6u));
|
||||
AssertThat(child.subtree, Equals<void *>(nullptr));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -335,7 +324,7 @@ describe("Node", [&]() {
|
|||
AssertThat(ts_node_parent(child5), Equals(root_node));
|
||||
AssertThat(ts_node_parent(child6), Equals(root_node));
|
||||
AssertThat(ts_node_parent(child7), Equals(root_node));
|
||||
AssertThat(ts_node_parent(ts_document_root_node(document)).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_parent(ts_document_root_node(document)).subtree, Equals<void *>(nullptr));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -355,15 +344,16 @@ describe("Node", [&]() {
|
|||
TSNode brace_node2 = ts_node_child(object_node, 2);
|
||||
TSNode bracket_node2 = ts_node_child(root_node, 6);
|
||||
|
||||
AssertThat(ts_node_parent(bracket_node1), Equals(root_node));
|
||||
AssertThat(ts_node_next_sibling(bracket_node1), Equals(number_node));
|
||||
AssertThat(ts_node_next_sibling(number_node), Equals(array_comma_node1));
|
||||
AssertThat(ts_node_next_sibling(array_comma_node1), Equals(false_node));
|
||||
AssertThat(ts_node_next_sibling(false_node), Equals(array_comma_node2));
|
||||
AssertThat(ts_node_next_sibling(array_comma_node2), Equals(object_node));
|
||||
AssertThat(ts_node_next_sibling(object_node), Equals(bracket_node2));
|
||||
AssertThat(ts_node_next_sibling(bracket_node2).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_next_sibling(bracket_node2).subtree, Equals<void *>(nullptr));
|
||||
|
||||
AssertThat(ts_node_prev_sibling(bracket_node1).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(bracket_node1).subtree, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(number_node), Equals(bracket_node1));
|
||||
AssertThat(ts_node_prev_sibling(array_comma_node1), Equals(number_node));
|
||||
AssertThat(ts_node_prev_sibling(false_node), Equals(array_comma_node1));
|
||||
|
|
@ -373,24 +363,24 @@ describe("Node", [&]() {
|
|||
|
||||
AssertThat(ts_node_next_sibling(brace_node1), Equals(pair_node));
|
||||
AssertThat(ts_node_next_sibling(pair_node), Equals(brace_node2));
|
||||
AssertThat(ts_node_next_sibling(brace_node2).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_next_sibling(brace_node2).subtree, Equals<void *>(nullptr));
|
||||
|
||||
AssertThat(ts_node_prev_sibling(brace_node1).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(brace_node1).subtree, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(pair_node), Equals(brace_node1));
|
||||
AssertThat(ts_node_prev_sibling(brace_node2), Equals(pair_node));
|
||||
|
||||
AssertThat(ts_node_next_sibling(string_node), Equals(colon_node));
|
||||
AssertThat(ts_node_next_sibling(colon_node), Equals(null_node));
|
||||
AssertThat(ts_node_next_sibling(null_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_next_sibling(null_node).subtree, Equals<void *>(nullptr));
|
||||
|
||||
AssertThat(ts_node_prev_sibling(string_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(string_node).subtree, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_sibling(colon_node), Equals(string_node));
|
||||
AssertThat(ts_node_prev_sibling(null_node), Equals(colon_node));
|
||||
});
|
||||
|
||||
it("returns null when the node has no parent", [&]() {
|
||||
AssertThat(ts_node_next_named_sibling(root_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_named_sibling(root_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_next_named_sibling(root_node).subtree, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_named_sibling(root_node).subtree, Equals<void *>(nullptr));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -412,8 +402,8 @@ describe("Node", [&]() {
|
|||
});
|
||||
|
||||
it("returns null when the node has no parent", [&]() {
|
||||
AssertThat(ts_node_next_named_sibling(root_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_named_sibling(root_node).data, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_next_named_sibling(root_node).subtree, Equals<void *>(nullptr));
|
||||
AssertThat(ts_node_prev_named_sibling(root_node).subtree, Equals<void *>(nullptr));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue