diff --git a/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp b/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp index 5c836cb19..a50824429 100644 --- a/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp +++ b/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp @@ -49,6 +49,7 @@ struct BoundingVolumeTest: TestSuite::Tester { void boxAxisAligned(); void sphereBouncingBubble(); + void benchmarkBoxAxisAligned(); void benchmarkSphereBouncingBubble(); }; @@ -56,7 +57,8 @@ BoundingVolumeTest::BoundingVolumeTest() { addTests({&BoundingVolumeTest::boxAxisAligned, &BoundingVolumeTest::sphereBouncingBubble}); - addBenchmarks({&BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150); + addBenchmarks({&BoundingVolumeTest::benchmarkBoxAxisAligned, + &BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150); } void BoundingVolumeTest::boxAxisAligned() { @@ -195,6 +197,21 @@ void BoundingVolumeTest::sphereBouncingBubble() { } } +void BoundingVolumeTest::benchmarkBoxAxisAligned() { + Containers::Array points{NoInit, 500}; + for(size_t i = 0; i < points.size(); ++i) { + points[i] = Vector3{Float(i)*0.01f}; + } + + Float r = 0.0f; + CORRADE_BENCHMARK(50) { + const Range3D box = MeshTools::boundingBoxAxisAligned(points); + r += box.size().x(); + } + + CORRADE_COMPARE_AS(r, 1.0f, TestSuite::Compare::Greater); +} + void BoundingVolumeTest::benchmarkSphereBouncingBubble() { Containers::Array points{NoInit, 500}; for(size_t i = 0; i < points.size(); ++i) {