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:
parent
6db6680acb
commit
2ed5bfe998
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user