Skip to content

Commit d40f472

Browse files
committed
Add a complicated test
1 parent 33c716b commit d40f472

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

test/search/test_search.cpp

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,93 @@ TEST (PCL, Organized_Sparse_View_Radius)
539539
}
540540
#endif
541541

542+
class MakeNonTrivialTests : public ::testing::TestWithParam<bool> {
543+
void
544+
SetUp() override
545+
{
546+
search = pcl::make_shared<pcl::search::BruteForce<pcl::PointXYZ>>(GetParam());
547+
}
548+
549+
std::vector<Indices> test_indices = {{1, 2, 3, 4, 5, 6, 7, 8, 9},
550+
{1, 1, 2, 3, 1, 1, 1, 4, 5}};
551+
std::vector<std::vector<float>> test_distances = {{0, 0, 0.0001, 2, 5, 0, 0, 0, 10},
552+
{1, 0, 0.0001, 2, 5, 0, 0, 0, 10}};
553+
554+
Indices test_seeds = {1, 9};
555+
556+
pcl::shared_ptr<pcl::search::BruteForce<pcl::PointXYZ>> search;
557+
};
558+
559+
TEST_P(MakeNonTrivialTests, distance)
560+
{
561+
std::vector<std::size_t> expected_sorted_sizes = {7, 9},
562+
expected_unsorted_sizes = {4, 5};
563+
564+
auto* expected_sizes =
565+
search->getSortedResults() ? &expected_sorted_sizes : &expected_unsorted_sizes;
566+
567+
for (int i = 0; i < test_distances.size(); i++) {
568+
auto indices = test_indices[i];
569+
auto distances = test_distances[i];
570+
auto size = search->makeNonTrivial(indices, distances);
571+
572+
EXPECT_EQ(indices.size(), size);
573+
EXPECT_EQ(distances.size(), size);
574+
575+
EXPECT_LE(distances.size(), test_distances[i].size());
576+
EXPECT_EQ(size, expected_sizes[i]);
577+
578+
if (distances.empty()) {
579+
continue;
580+
}
581+
582+
if (search->getSortedResults()) {
583+
EXPECT_TRUE(distances[0]);
584+
}
585+
else {
586+
for (const auto& dist : distances) {
587+
EXPECT_TRUE(dist);
588+
}
589+
}
590+
}
591+
}
592+
593+
TEST_P(MakeNonTrivialTests, index)
594+
{
595+
// vector of vectors, per seed
596+
std::vector<std::vector<std::size_t>> expected_sorted_sizes = {{8, 7}, {9, 9}},
597+
expected_unsorted_sizes = {{8, 4}, {8, 9}};
598+
599+
auto* expected_sizes =
600+
search->getSortedResults() ? &expected_sorted_sizes : &expected_unsorted_sizes;
601+
602+
for (int seed_idx = 0; seed_idx < test_seeds; seed_idx++) {
603+
for (int i = 0; i < test_distances.size(); i++) {
604+
auto indices = test_indices[i];
605+
auto distances = test_distances[i];
606+
auto size = search->makeNonTrivial(test_seeds[seed_idx], indices, distances);
607+
608+
EXPECT_EQ(indices.size(), size);
609+
EXPECT_EQ(distances.size(), size);
610+
611+
EXPECT_LE(indices.size(), test_indices[i].size());
612+
EXPECT_EQ(size, expected_sizes[seed_idx][i]);
613+
614+
if (distances.empty()) {
615+
continue;
616+
}
617+
if (search->getSortedResults()) {
618+
EXPECT_NE(indices[0], test_seeds[seed_idx]);
619+
}
620+
else {
621+
for (const auto& idx : indices) {
622+
EXPECT_NE(idx, test_seeds[seed_idx]);
623+
}
624+
}
625+
}
626+
}
627+
}
628+
542629
TEST(PCL, Search_nonTrivialDistance)
543630
{
544631
Indices test_indices = {1, 2, 3, 4, 5, 6, 7, 8, 9};

0 commit comments

Comments
 (0)