#include #include #include "face/face_gallery_search.h" namespace rk3588 { namespace { TEST(FaceGallerySearchTest, AggregatesMultipleEmbeddingsOfSamePersonIntoSingleTopPerson) { const std::vector entries = { {1, "alice", {1.0f, 0.0f}}, {1, "alice", {0.95f, 0.05f}}, {2, "bob", {0.70f, 0.70f}}, {3, "carol", {0.0f, 1.0f}}, }; const GallerySearchResult result = SearchTop2ByPerson(entries, {1.0f, 0.0f}); EXPECT_EQ(result.best_person_id, 1); EXPECT_EQ(result.best_name, "alice"); EXPECT_FLOAT_EQ(result.best_sim, 1.0f); EXPECT_NEAR(result.second_sim, 0.70f, 1e-5f); } TEST(FaceGallerySearchTest, UsesDistinctSecondPersonInsteadOfSameIdentityDuplicate) { const std::vector entries = { {1, "alice", {0.90f, 0.10f}}, {1, "alice", {0.89f, 0.11f}}, {2, "bob", {0.60f, 0.40f}}, }; const GallerySearchResult result = SearchTop2ByPerson(entries, {0.90f, 0.10f}); EXPECT_EQ(result.best_person_id, 1); EXPECT_FLOAT_EQ(result.best_sim, 0.82f); EXPECT_FLOAT_EQ(result.second_sim, 0.58f); } } // namespace } // namespace rk3588