Skip to content

Commit bcb1cee

Browse files
committed
Split the DBSCAN tests for better understanding the failure
1 parent 6a35318 commit bcb1cee

File tree

1 file changed

+98
-79
lines changed

1 file changed

+98
-79
lines changed

test/tstDBSCAN.cpp

+98-79
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,20 @@ void dbscan_verifier_f()
152152
}
153153
}
154154

155+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_verifier_float, DeviceType,
156+
ARBORX_DEVICE_TYPES)
157+
{
158+
dbscan_verifier_f<DeviceType, float>();
159+
}
160+
161+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_verifier_double, DeviceType,
162+
ARBORX_DEVICE_TYPES)
163+
{
164+
dbscan_verifier_f<DeviceType, double>();
165+
}
166+
155167
template <typename DeviceType, typename Coordinate>
156-
void dbscan_f()
168+
void dbscan_f(ArborX::DBSCAN::Implementation impl)
157169
{
158170
using ExecutionSpace = typename DeviceType::execution_space;
159171
using ArborX::dbscan;
@@ -162,78 +174,75 @@ void dbscan_f()
162174

163175
ExecutionSpace space;
164176

165-
for (auto impl : {ArborX::DBSCAN::Implementation::FDBSCAN,
166-
ArborX::DBSCAN::Implementation::FDBSCAN_DenseBox})
177+
ArborX::DBSCAN::Parameters params;
178+
params.setImplementation(impl);
179+
167180
{
168-
ArborX::DBSCAN::Parameters params;
169-
params.setImplementation(impl);
170-
{
171-
auto points = toView<DeviceType, Point>({{{0, 0, 0}}, {{1, 1, 1}}});
172-
173-
Coordinate r = std::sqrt(3.1);
174-
175-
BOOST_TEST(
176-
verifyDBSCAN(space, points, r - (Coordinate)0.1, 2,
177-
dbscan(space, points, r - (Coordinate)0.1, 2, params)));
178-
BOOST_TEST(verifyDBSCAN(space, points, r, 2,
179-
dbscan(space, points, r, 2, params)));
180-
BOOST_TEST(verifyDBSCAN(space, points, r, 3,
181-
dbscan(space, points, r, 3, params)));
182-
183-
// Test non-View primitives
184-
HiddenView<decltype(points)> hidden_points{points};
185-
BOOST_TEST(verifyDBSCAN(
186-
space, hidden_points, r - (Coordinate)0.1, 2,
187-
dbscan(space, hidden_points, r - (Coordinate)0.1, 2, params)));
188-
BOOST_TEST(verifyDBSCAN(space, hidden_points, r, 2,
189-
dbscan(space, hidden_points, r, 2, params)));
190-
BOOST_TEST(verifyDBSCAN(space, hidden_points, r, 3,
191-
dbscan(space, hidden_points, r, 3, params)));
192-
}
193-
194-
{
195-
auto points = toView<DeviceType, Point>(
196-
{{{0, 0, 0}}, {{1, 1, 1}}, {{3, 3, 3}}, {{6, 6, 6}}});
197-
198-
Coordinate r = std::sqrt(3.1);
199-
200-
BOOST_TEST(verifyDBSCAN(space, points, r, 2,
201-
dbscan(space, points, r, 2, params)));
202-
BOOST_TEST(verifyDBSCAN(space, points, r, 3,
203-
dbscan(space, points, r, 3, params)));
204-
205-
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 2,
206-
dbscan(space, points, 2 * r, 2, params)));
207-
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 3,
208-
dbscan(space, points, 2 * r, 3, params)));
209-
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 4,
210-
dbscan(space, points, 2 * r, 4, params)));
211-
212-
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 2,
213-
dbscan(space, points, 3 * r, 2, params)));
214-
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 3,
215-
dbscan(space, points, 3 * r, 3, params)));
216-
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 4,
217-
dbscan(space, points, 3 * r, 4, params)));
218-
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 5,
219-
dbscan(space, points, 3 * r, 5, params)));
220-
}
221-
222-
{
223-
// check for bridging effect
224-
auto points = toView<DeviceType, Point>({{-1, 0.5, 0},
225-
{-1, -0.5, 0},
226-
{-1, 0, 0},
227-
{{0, 0, 0}},
228-
{{1, 0, 0}},
229-
{{1, 0.5, 0}},
230-
{{1, -0.5, 0}}});
231-
232-
BOOST_TEST(verifyDBSCAN(space, points, 1.0, 3,
233-
dbscan(space, points, (Coordinate)1, 3, params)));
234-
BOOST_TEST(verifyDBSCAN(space, points, 1.0, 4,
235-
dbscan(space, points, (Coordinate)1, 4, params)));
236-
}
181+
auto points = toView<DeviceType, Point>({{{0, 0, 0}}, {{1, 1, 1}}});
182+
183+
Coordinate r = std::sqrt(3.1);
184+
185+
BOOST_TEST(
186+
verifyDBSCAN(space, points, r - (Coordinate)0.1, 2,
187+
dbscan(space, points, r - (Coordinate)0.1, 2, params)));
188+
BOOST_TEST(
189+
verifyDBSCAN(space, points, r, 2, dbscan(space, points, r, 2, params)));
190+
BOOST_TEST(
191+
verifyDBSCAN(space, points, r, 3, dbscan(space, points, r, 3, params)));
192+
193+
// Test non-View primitives
194+
HiddenView<decltype(points)> hidden_points{points};
195+
BOOST_TEST(verifyDBSCAN(
196+
space, hidden_points, r - (Coordinate)0.1, 2,
197+
dbscan(space, hidden_points, r - (Coordinate)0.1, 2, params)));
198+
BOOST_TEST(verifyDBSCAN(space, hidden_points, r, 2,
199+
dbscan(space, hidden_points, r, 2, params)));
200+
BOOST_TEST(verifyDBSCAN(space, hidden_points, r, 3,
201+
dbscan(space, hidden_points, r, 3, params)));
202+
}
203+
204+
{
205+
auto points = toView<DeviceType, Point>(
206+
{{{0, 0, 0}}, {{1, 1, 1}}, {{3, 3, 3}}, {{6, 6, 6}}});
207+
208+
Coordinate r = std::sqrt(3.1);
209+
210+
BOOST_TEST(
211+
verifyDBSCAN(space, points, r, 2, dbscan(space, points, r, 2, params)));
212+
BOOST_TEST(
213+
verifyDBSCAN(space, points, r, 3, dbscan(space, points, r, 3, params)));
214+
215+
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 2,
216+
dbscan(space, points, 2 * r, 2, params)));
217+
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 3,
218+
dbscan(space, points, 2 * r, 3, params)));
219+
BOOST_TEST(verifyDBSCAN(space, points, 2 * r, 4,
220+
dbscan(space, points, 2 * r, 4, params)));
221+
222+
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 2,
223+
dbscan(space, points, 3 * r, 2, params)));
224+
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 3,
225+
dbscan(space, points, 3 * r, 3, params)));
226+
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 4,
227+
dbscan(space, points, 3 * r, 4, params)));
228+
BOOST_TEST(verifyDBSCAN(space, points, 3 * r, 5,
229+
dbscan(space, points, 3 * r, 5, params)));
230+
}
231+
232+
{
233+
// check for bridging effect
234+
auto points = toView<DeviceType, Point>({{-1, 0.5, 0},
235+
{-1, -0.5, 0},
236+
{-1, 0, 0},
237+
{{0, 0, 0}},
238+
{{1, 0, 0}},
239+
{{1, 0.5, 0}},
240+
{{1, -0.5, 0}}});
241+
242+
BOOST_TEST(verifyDBSCAN(space, points, 1.0, 3,
243+
dbscan(space, points, (Coordinate)1, 3, params)));
244+
BOOST_TEST(verifyDBSCAN(space, points, 1.0, 4,
245+
dbscan(space, points, (Coordinate)1, 4, params)));
237246
}
238247

239248
{
@@ -264,16 +273,26 @@ void dbscan_f()
264273
}
265274
}
266275

267-
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_verifier, DeviceType, ARBORX_DEVICE_TYPES)
276+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_fdbscan_float, DeviceType,
277+
ARBORX_DEVICE_TYPES)
268278
{
269-
dbscan_verifier_f<DeviceType, float>();
270-
dbscan_verifier_f<DeviceType, double>();
279+
dbscan_f<DeviceType, float>(ArborX::DBSCAN::Implementation::FDBSCAN);
271280
}
272-
273-
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan, DeviceType, ARBORX_DEVICE_TYPES)
281+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_fdbscan_double, DeviceType,
282+
ARBORX_DEVICE_TYPES)
283+
{
284+
dbscan_f<DeviceType, double>(ArborX::DBSCAN::Implementation::FDBSCAN);
285+
}
286+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_fdbscan_densebox_float, DeviceType,
287+
ARBORX_DEVICE_TYPES)
288+
{
289+
dbscan_f<DeviceType, float>(ArborX::DBSCAN::Implementation::FDBSCAN_DenseBox);
290+
}
291+
BOOST_AUTO_TEST_CASE_TEMPLATE(dbscan_fdbscan_densebox_double, DeviceType,
292+
ARBORX_DEVICE_TYPES)
274293
{
275-
dbscan_f<DeviceType, float>();
276-
dbscan_f<DeviceType, double>();
294+
dbscan_f<DeviceType, double>(
295+
ArborX::DBSCAN::Implementation::FDBSCAN_DenseBox);
277296
}
278297

279298
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)