Skip to content

Commit

Permalink
Add tests of preorder traversal
Browse files Browse the repository at this point in the history
  • Loading branch information
JacksonCampolattaro committed Jul 1, 2020
1 parent 638d283 commit 65bdd7d
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Octree/include/CGAL/Octree/Octree_node.h
Expand Up @@ -113,7 +113,7 @@ namespace CGAL {
private: // members :

//Node *m_children; /* pointer the the 8 possible child nodes. Leaf if NULL */
std::unique_ptr<ChildList> m_children; /* pointer the the 8 possible child nodes. Leaf if NULL */
std::unique_ptr <ChildList> m_children; /* pointer the the 8 possible child nodes. Leaf if NULL */

Node *m_parent; /* pointer the the single parent node. Root if NULL */
IntPoint m_location; /* integer location of current node (x,y,z) on the current depth grid */
Expand Down
81 changes: 79 additions & 2 deletions Octree/test/Octree/test_tree_walk.cpp
Expand Up @@ -14,7 +14,30 @@ typedef CGAL::Octree::Octree
<Point_set, typename Point_set::Point_map>
Octree;

int test_preorder() {
int test_preorder_1_node() {

// Define the dataset
Point_set points;
points.insert({-1, -1, -1});
auto point_map = points.point_map();

// Create the octree
Octree octree(points, point_map);
octree.refine(10, 1);

// Create the range
auto tree_walker = CGAL::Octree::Tree_walker::Preorder();
auto first = tree_walker.first(&octree.root());
auto nodes = octree.nodes(first, tree_walker);

// Check each item in the range
auto iter = nodes.begin();
assert(*iter == octree.root());

return 0;
}

int test_preorder_9_nodes() {

// Define the dataset
Point_set points;
Expand All @@ -31,6 +54,7 @@ int test_preorder() {
auto first = tree_walker.first(&octree.root());
auto nodes = octree.nodes(first, tree_walker);


// Check each item in the range
auto iter = nodes.begin();
assert(*iter == octree.root());
Expand All @@ -42,9 +66,62 @@ int test_preorder() {
return 0;
}

int test_preorder_25_nodes() {

// Define the dataset
Point_set points;
points.insert({1, 1, 1});
points.insert({1, 1, 2});
points.insert({1, 1, 3});
points.insert({1, 1, 4});
auto point_map = points.point_map();

// Create the octree
Octree octree(points, point_map);
octree.refine(10, 1);
std::cout << octree;

// Create the range
auto tree_walker = CGAL::Octree::Tree_walker::Preorder();
auto first = tree_walker.first(&octree.root());
auto nodes = octree.nodes(first, tree_walker);

// Check each item in the range
auto iter = nodes.begin();
assert(*iter == octree.root());
iter++;
assert(*iter == octree.root()[0]);
iter++;
assert(*iter == octree.root()[1]);
iter++;
assert(*iter == octree.root()[2]);
iter++;
assert(*iter == octree.root()[3]);
for (int i = 0; i < 8; ++i) {
iter++;
assert(*iter == octree.root()[3][i]);
}
iter++;
assert(*iter == octree.root()[4]);
iter++;
assert(*iter == octree.root()[5]);
iter++;
assert(*iter == octree.root()[6]);
iter++;
assert(*iter == octree.root()[7]);
for (int i = 0; i < 8; ++i) {
iter++;
assert(*iter == octree.root()[7][i]);
}

return 0;
}

int main(void) {

test_preorder();
test_preorder_1_node();
test_preorder_9_nodes();
test_preorder_25_nodes();
// test_preorder_print();
// test_postorder_print();
// test_leaves_print();
Expand Down

0 comments on commit 65bdd7d

Please sign in to comment.