1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 10:32:48 +02:00

[llvm-exegesis] Add clustering test.

Summary: To show that dbscan is insensitive to the order of the points.

Subscribers: tschuett, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59693

llvm-svn: 356747
This commit is contained in:
Clement Courbet 2019-03-22 13:13:12 +00:00
parent 6db6680acb
commit 2ed5bfe998

View File

@ -22,6 +22,11 @@ using testing::Field;
using testing::UnorderedElementsAre;
using testing::UnorderedElementsAreArray;
static constexpr auto HasPoints = [](const std::vector<int> &Indices) {
return Field(&InstructionBenchmarkClustering::Cluster::PointIndices,
UnorderedElementsAreArray(Indices));
};
TEST(ClusteringTest, Clusters3D) {
std::vector<InstructionBenchmark> Points(6);
@ -41,11 +46,6 @@ TEST(ClusteringTest, Clusters3D) {
// Error cluster: points {2}
Points[2].Error = "oops";
auto HasPoints = [](const std::vector<int> &Indices) {
return Field(&InstructionBenchmarkClustering::Cluster::PointIndices,
UnorderedElementsAreArray(Indices));
};
auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 0.25);
ASSERT_TRUE((bool)Clustering);
EXPECT_THAT(Clustering.get().getValidClusters(),
@ -102,6 +102,38 @@ TEST(ClusteringTest, Ordering) {
InstructionBenchmarkClustering::ClusterId::error());
}
TEST(ClusteringTest, Ordering1) {
std::vector<InstructionBenchmark> Points(3);
Points[0].Measurements = {
{"x", 0.0, 0.0}};
Points[1].Measurements = {
{"x", 1.0, 0.0}};
Points[2].Measurements = {
{"x", 2.0, 0.0}};
auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 1.1);
ASSERT_TRUE((bool)Clustering);
EXPECT_THAT(Clustering.get().getValidClusters(),
UnorderedElementsAre(HasPoints({0, 1, 2})));
}
TEST(ClusteringTest, Ordering2) {
std::vector<InstructionBenchmark> Points(3);
Points[0].Measurements = {
{"x", 0.0, 0.0}};
Points[1].Measurements = {
{"x", 2.0, 0.0}};
Points[2].Measurements = {
{"x", 1.0, 0.0}};
auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 1.1);
ASSERT_TRUE((bool)Clustering);
EXPECT_THAT(Clustering.get().getValidClusters(),
UnorderedElementsAre(HasPoints({0, 1, 2})));
}
} // namespace
} // namespace exegesis
} // namespace llvm