15#include "gtest/gtest.h"
22 TEST(testClusteringEngine, basic_int_clustering)
24 auto clusteringCondition = [](
const int& a,
const int& b) {
return std::abs(b - a) <= 1; };
26 auto clusterer = Neuland::ClusteringEngine<int>(clusteringCondition);
28 std::vector<int> digis{ 1, 2, 3, 7, 8, 9, 10, 12 };
29 auto clusters = clusterer.Clusterize(digis);
31 std::vector<std::vector<int>> expected = { { 1, 2, 3 }, { 7, 8, 9, 10 }, { 12 } };
33 EXPECT_EQ(clusters, expected);
36 TEST(testClusteringEngine, unsorted_object_clustering)
41 DummyDigi(
const int& _a)
45 bool operator==(
const DummyDigi& rhs)
const {
return a == rhs.a; }
48 auto clusterer = Neuland::ClusteringEngine<DummyDigi>();
49 clusterer.SetClusteringCondition([](
const DummyDigi& one,
const DummyDigi& another)
50 {
return std::abs(another.a - one.a) <= 1; });
52 std::vector<DummyDigi> digis{ 28, 13, 23, 22, 15, 16, 3, 6, 4, 26, 10, 11, 19, 8, 29, 12, 25, 30, 17, 18, 24 };
53 std::vector<std::vector<DummyDigi>> clusters = clusterer.Clusterize(digis);
55 std::vector<std::vector<DummyDigi>> expected{
56 { 28, 29, 30 }, { 22, 23, 24, 25, 26 }, { 4, 3 }, { 10, 11, 12, 13 }, { 8 }, { 19, 18, 17, 16, 15 }, { 6 }
58 EXPECT_EQ(clusters, expected);
61 TEST(testClusteringEngine, clustering_condition_not_set)
63 auto clusterer = Neuland::ClusteringEngine<int>();
64 std::vector<int> digis{ 1, 2, 3, 7, 8, 9, 10, 12 };
65 EXPECT_ANY_THROW(clusterer.Clusterize(digis));
68 TEST(testClusteringEngine, check_SatisfiesClusteringCondition)
71 Neuland::ClusteringEngine<int>([](
const int& a,
const int& b) {
return std::abs(b - a) <= 1; });
72 EXPECT_TRUE(clusterer.SatisfiesClusteringCondition(1, 2));
73 EXPECT_FALSE(clusterer.SatisfiesClusteringCondition(1, 3));