1 #include "testlib/testlib_test.h"
2 //:
3 // \file
4 // Copyright 2006-2009 Brad King, Chuck Stewart
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file rgtl_license_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8
9 #include <rgtl/rgtl_compact_tree.hxx>
10 #include <rgtl/rgtl_compact_tree_data_fixed.h>
11
12
13 typedef rgtl_compact_tree_data_fixed<3> tt0;
14
15 template class rgtl_compact_tree_data_fixed<3>;
16
17 template class rgtl_compact_tree<tt0::derived_arg0,
18 tt0::derived_arg1,
19 tt0::derived_arg2>;
20
21 typedef rgtl_compact_tree_data_fixed<3, int, float> tt1;
22 template class rgtl_compact_tree_data_fixed<3, int, float>;
23 template class rgtl_compact_tree<tt1::derived_arg0,
24 tt1::derived_arg1,
25 tt1::derived_arg2>;
26
27 static void
test_data_empty()28 test_data_empty()
29 {
30 typedef rgtl_compact_tree_data_fixed<3> tree_type;
31
32 testlib_test_begin("empty data construct");
33 tree_type tree;
34 testlib_test_perform(true);
35
36 testlib_test_begin("empty data subdivide");
37 tree_type::child_index_type c0;
38 tree_type::cell_index_type root;
39 tree.subdivide(root);
40 tree.subdivide(tree.get_child(root, c0));
41 testlib_test_perform(tree.has_children(root) &&
42 tree.has_children(tree.get_child(root, c0)));
43
44 testlib_test_begin("empty data collapse");
45 tree.collapse(tree.get_child(root, c0));
46 tree.collapse(root);
47 testlib_test_perform(!tree.has_children(root));
48 }
49
50 static void
test_data_fixed()51 test_data_fixed()
52 {
53 typedef rgtl_compact_tree_data_fixed<3, int, float> tree_type;
54 testlib_test_begin("fixed data construct");
55 tree_type tree;
56 testlib_test_perform(true);
57
58 testlib_test_begin("fixed data subdivide");
59 tree_type::child_index_type c0;
60 tree_type::cell_index_type root;
61 tree.subdivide(root);
62 tree_type::cell_index_type child0 = tree.get_child(root, c0);
63 tree.subdivide(child0);
64 tree_type::cell_index_type grandchild0 = tree.get_child(child0, c0);
65 testlib_test_perform(tree.has_children(root) &&
66 tree.has_children(child0));
67
68 testlib_test_begin("fixed data parents");
69 testlib_test_perform(!tree.get_parent(root) &&
70 root == tree.get_parent(child0) &&
71 child0 == tree.get_parent(grandchild0));
72
73 testlib_test_begin("fixed data store node");
74 float nd = 1.2f;
75 tree.set_node_data(child0, &nd);
76 testlib_test_perform(true);
77
78 testlib_test_begin("fixed data store leaf");
79 int ld = 1;
80 tree.set_leaf_data(grandchild0, &ld);
81 testlib_test_perform(true);
82
83 testlib_test_begin("fixed data read node");
84 float const* pnd = tree.get_node_data(child0);
85 testlib_test_perform(pnd && *pnd == nd);
86
87 testlib_test_begin("fixed data read leaf");
88 int const* pld = tree.get_leaf_data(grandchild0);
89 testlib_test_perform(pld && *pld == ld);
90
91 testlib_test_begin("fixed data clear leaf");
92 tree.set_leaf_data(grandchild0, 0);
93 testlib_test_perform(true);
94
95 testlib_test_begin("fixed data clear node");
96 tree.set_node_data(child0, 0);
97 testlib_test_perform(true);
98
99 testlib_test_begin("fixed data collapse");
100 tree.collapse(child0);
101 tree.collapse(root);
102 testlib_test_perform(!tree.has_children(root));
103 }
104
test_compact_tree_data_fixed()105 static void test_compact_tree_data_fixed()
106 {
107 test_data_empty();
108 test_data_fixed();
109 }
110
111 TESTMAIN(test_compact_tree_data_fixed);
112