@@ -152,8 +152,20 @@ void dbscan_verifier_f()
152
152
}
153
153
}
154
154
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
+
155
167
template <typename DeviceType, typename Coordinate>
156
- void dbscan_f ()
168
+ void dbscan_f (ArborX::DBSCAN::Implementation impl )
157
169
{
158
170
using ExecutionSpace = typename DeviceType::execution_space;
159
171
using ArborX::dbscan;
@@ -162,78 +174,75 @@ void dbscan_f()
162
174
163
175
ExecutionSpace space;
164
176
165
- for (auto impl : {ArborX::DBSCAN::Implementation::FDBSCAN,
166
- ArborX::DBSCAN::Implementation::FDBSCAN_DenseBox})
177
+ ArborX::DBSCAN::Parameters params;
178
+ params.setImplementation (impl);
179
+
167
180
{
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)));
237
246
}
238
247
239
248
{
@@ -264,16 +273,26 @@ void dbscan_f()
264
273
}
265
274
}
266
275
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)
268
278
{
269
- dbscan_verifier_f<DeviceType, float >();
270
- dbscan_verifier_f<DeviceType, double >();
279
+ dbscan_f<DeviceType, float >(ArborX::DBSCAN::Implementation::FDBSCAN);
271
280
}
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)
274
293
{
275
- dbscan_f<DeviceType, float >();
276
- dbscan_f<DeviceType, double >( );
294
+ dbscan_f<DeviceType, double >(
295
+ ArborX::DBSCAN::Implementation::FDBSCAN_DenseBox );
277
296
}
278
297
279
298
BOOST_AUTO_TEST_SUITE_END ()
0 commit comments