1.3.49
 
Loading...
Searching...
No Matches
selfTest.cpp
1#include "CanopyGenerator.h"
2
3#define DOCTEST_CONFIG_IMPLEMENT
4#include <doctest.h>
5#include "doctest_utils.h"
6
7using namespace helios;
8
9DOCTEST_TEST_CASE("CanopyGenerator Homogeneous Canopy Generation") {
10 Context context_test;
11 CanopyGenerator canopygenerator_0(&context_test);
12 canopygenerator_0.disableMessages();
13
15 DOCTEST_CHECK_NOTHROW(canopygenerator_0.buildCanopy(params_0));
16
17 // Verify canopy was created
18 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
19 DOCTEST_CHECK(!all_UUIDs.empty());
20
21 context_test.deletePrimitive(context_test.getAllUUIDs());
22}
23
24DOCTEST_TEST_CASE("CanopyGenerator Spherical Crowns Canopy Generation") {
25 Context context_test;
26 CanopyGenerator canopygenerator_1(&context_test);
27 canopygenerator_1.disableMessages();
28
30 DOCTEST_CHECK_NOTHROW(canopygenerator_1.buildCanopy(params_1));
31
32 // Verify canopy was created
33 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
34 DOCTEST_CHECK(!all_UUIDs.empty());
35
36 context_test.deletePrimitive(context_test.getAllUUIDs());
37}
38
39DOCTEST_TEST_CASE("CanopyGenerator VSP Grapevine Canopy Generation") {
40 Context context_test;
41 CanopyGenerator canopygenerator_2(&context_test);
42 canopygenerator_2.disableMessages();
43
45 params_2.grape_radius = 0;
46 DOCTEST_CHECK_NOTHROW(canopygenerator_2.buildCanopy(params_2));
47
48 // Verify canopy was created
49 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
50 DOCTEST_CHECK(!all_UUIDs.empty());
51
52 context_test.deletePrimitive(context_test.getAllUUIDs());
53}
54
55DOCTEST_TEST_CASE("CanopyGenerator Split Trellis Grapevine Canopy Generation") {
56 Context context_test;
57 CanopyGenerator canopygenerator_3(&context_test);
58 canopygenerator_3.disableMessages();
59
61 params_3.grape_radius = 0;
62 DOCTEST_CHECK_NOTHROW(canopygenerator_3.buildCanopy(params_3));
63
64 // Verify canopy was created
65 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
66 DOCTEST_CHECK(!all_UUIDs.empty());
67
68 context_test.deletePrimitive(context_test.getAllUUIDs());
69}
70
71DOCTEST_TEST_CASE("CanopyGenerator Unilateral Trellis Grapevine Canopy Generation") {
72 Context context_test;
73 CanopyGenerator canopygenerator_4(&context_test);
74 canopygenerator_4.disableMessages();
75
77 params_4.grape_radius = 0;
78 DOCTEST_CHECK_NOTHROW(canopygenerator_4.buildCanopy(params_4));
79
80 // Verify canopy was created
81 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
82 DOCTEST_CHECK(!all_UUIDs.empty());
83
84 context_test.deletePrimitive(context_test.getAllUUIDs());
85}
86
87DOCTEST_TEST_CASE("CanopyGenerator Goblet Trellis Grapevine Canopy Generation") {
88 Context context_test;
89 CanopyGenerator canopygenerator_5(&context_test);
90 canopygenerator_5.disableMessages();
91
93 params_5.grape_radius = 0;
94 DOCTEST_CHECK_NOTHROW(canopygenerator_5.buildCanopy(params_5));
95
96 // Verify canopy was created
97 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
98 DOCTEST_CHECK(!all_UUIDs.empty());
99
100 context_test.deletePrimitive(context_test.getAllUUIDs());
101}
102
103DOCTEST_TEST_CASE("CanopyGenerator Strawberry Canopy Generation") {
104 Context context_test;
105 CanopyGenerator canopygenerator_7(&context_test);
106 canopygenerator_7.disableMessages();
107
108 StrawberryParameters params_7;
109 DOCTEST_CHECK_NOTHROW(canopygenerator_7.buildCanopy(params_7));
110
111 // Verify canopy was created
112 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
113 DOCTEST_CHECK(!all_UUIDs.empty());
114
115 context_test.deletePrimitive(context_test.getAllUUIDs());
116}
117
118DOCTEST_TEST_CASE("CanopyGenerator Walnut Tree Canopy Generation") {
119 Context context_test;
120 CanopyGenerator canopygenerator_8(&context_test);
121 canopygenerator_8.disableMessages();
122
123 WalnutCanopyParameters params_8;
124 params_8.fruit_radius = 0.f;
125 DOCTEST_CHECK_NOTHROW(canopygenerator_8.buildCanopy(params_8));
126
127 // Verify canopy was created
128 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
129 DOCTEST_CHECK(!all_UUIDs.empty());
130
131 context_test.deletePrimitive(context_test.getAllUUIDs());
132}
133
134DOCTEST_TEST_CASE("CanopyGenerator Sorghum Plant Canopy Generation") {
135 Context context_test;
136 CanopyGenerator canopygenerator_9(&context_test);
137 canopygenerator_9.disableMessages();
138
140 DOCTEST_CHECK_NOTHROW(canopygenerator_9.buildCanopy(params_9));
141
142 // Verify canopy was created
143 std::vector<uint> all_UUIDs = context_test.getAllUUIDs();
144 DOCTEST_CHECK(!all_UUIDs.empty());
145
146 context_test.deletePrimitive(context_test.getAllUUIDs());
147}
148
149DOCTEST_TEST_CASE("CanopyGenerator Primitive Deletion Test") {
150 Context context_test;
151 CanopyGenerator canopygenerator_6(&context_test);
152 canopygenerator_6.disableMessages();
153
155 DOCTEST_CHECK_NOTHROW(canopygenerator_6.buildCanopy(params_6));
156
157 std::vector<uint> UUIDs_leaves = flatten(canopygenerator_6.getLeafUUIDs(0));
158 DOCTEST_CHECK(UUIDs_leaves.size() > 23);
159
160 // Delete some primitives
161 DOCTEST_CHECK_NOTHROW(context_test.deletePrimitive(UUIDs_leaves.at(0)));
162 DOCTEST_CHECK_NOTHROW(context_test.deletePrimitive(UUIDs_leaves.at(11)));
163 DOCTEST_CHECK_NOTHROW(context_test.deletePrimitive(UUIDs_leaves.at(23)));
164 DOCTEST_CHECK_NOTHROW(context_test.deletePrimitive(UUIDs_leaves.back()));
165
166 // Update UUIDs after deletion
167 UUIDs_leaves = flatten(canopygenerator_6.getLeafUUIDs(0));
168
169 // Verify all remaining UUIDs exist
170 for (uint UUID: UUIDs_leaves) {
171 DOCTEST_CHECK(context_test.doesPrimitiveExist(UUID));
172 }
173
174 std::vector<uint> UUIDs_all = canopygenerator_6.getAllUUIDs(0);
175
176 // Verify all remaining primitives exist
177 for (uint p: UUIDs_all) {
178 DOCTEST_CHECK(context_test.doesPrimitiveExist(p));
179 }
180
181 context_test.deletePrimitive(context_test.getAllUUIDs());
182}
183
184int CanopyGenerator::selfTest(int argc, char **argv) {
185 return helios::runDoctestWithValidation(argc, argv);
186}