From 8dc62b5a4959abc7d82802bdba3f4e8a7432465b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 11 Dec 2018 17:12:09 +0100 Subject: [PATCH] Math: deduplicate test code. --- .../Math/Test/StrictWeakOrderingTest.cpp | 117 ++++++------------ 1 file changed, 35 insertions(+), 82 deletions(-) diff --git a/src/Magnum/Math/Test/StrictWeakOrderingTest.cpp b/src/Magnum/Math/Test/StrictWeakOrderingTest.cpp index f47be05b0..d66f406f7 100644 --- a/src/Magnum/Math/Test/StrictWeakOrderingTest.cpp +++ b/src/Magnum/Math/Test/StrictWeakOrderingTest.cpp @@ -26,46 +26,42 @@ #include #include #include +#include #include "Magnum/Math/Vector2.h" #include "Magnum/Math/StrictWeakOrdering.h" namespace std { - template<> struct less>: public Magnum::Math::Implementation::StrictWeakOrdering> {}; + template<> struct less>: Magnum::Math::Implementation::StrictWeakOrdering> {}; } namespace Magnum { namespace Math { namespace Test { -using Vector2 = Magnum::Math::Vector2; - struct StrictWeakOrderingTest: Corrade::TestSuite::Tester { explicit StrictWeakOrderingTest(); void base(); - void set(); - void setShort(); - void setLess(); - - void map(); - void mapShort(); - void mapLess(); + template void set(); + template void map(); }; +using Vector2i = Magnum::Math::Vector2; + StrictWeakOrderingTest::StrictWeakOrderingTest() { addTests({&StrictWeakOrderingTest::base, - &StrictWeakOrderingTest::set, - &StrictWeakOrderingTest::setShort, - &StrictWeakOrderingTest::setLess, + &StrictWeakOrderingTest::set>>, + &StrictWeakOrderingTest::set>, + &StrictWeakOrderingTest::set>, - &StrictWeakOrderingTest::map, - &StrictWeakOrderingTest::mapShort, - &StrictWeakOrderingTest::mapLess}); + &StrictWeakOrderingTest::map>>, + &StrictWeakOrderingTest::map>, + &StrictWeakOrderingTest::map>}); } void StrictWeakOrderingTest::base() { - Implementation::StrictWeakOrdering o; + Implementation::StrictWeakOrdering o; CORRADE_VERIFY(o(1, 2)); CORRADE_VERIFY(!o(2, 2)); CORRADE_VERIFY(!o(3, 2)); @@ -76,89 +72,46 @@ void StrictWeakOrderingTest::base() { CORRADE_VERIFY(!of('z', 'h')); } -void StrictWeakOrderingTest::set() { - std::set> s; - - s.insert({1, 2}); - s.insert({2, 3}); - - CORRADE_COMPARE(s.size(), 2); - CORRADE_COMPARE(*s.begin(), Vector2(1, 2)); - CORRADE_COMPARE(*s.rbegin(), Vector2(2, 3)); - - s.insert({1, 2}); - CORRADE_COMPARE(s.size(), 2); -} - -void StrictWeakOrderingTest::setShort() { - std::set s; - - s.insert({1, 2}); - s.insert({2, 3}); - - CORRADE_COMPARE(s.size(), 2); - CORRADE_COMPARE(*s.begin(), Vector2(1, 2)); - CORRADE_COMPARE(*s.rbegin(), Vector2(2, 3)); - - s.insert({1, 2}); - CORRADE_COMPARE(s.size(), 2); +namespace { + template struct Compare; + template<> struct Compare> { + static const char* name() { return "Implementation::StrictWeakOrdering"; } + }; + template<> struct Compare { + static const char* name() { return "StrictWeakOrdering"; } + }; + template<> struct Compare> { + static const char* name() { return "std::less"; } + }; } -void StrictWeakOrderingTest::setLess() { - std::set s; +template void StrictWeakOrderingTest::set() { + setTestCaseName(Corrade::Utility::formatString("set<{}>", Compare::name())); + Set s; s.insert({1, 2}); s.insert({2, 3}); CORRADE_COMPARE(s.size(), 2); - CORRADE_COMPARE(*s.begin(), Vector2(1, 2)); - CORRADE_COMPARE(*s.rbegin(), Vector2(2, 3)); + CORRADE_COMPARE(*s.begin(), (Vector2i{1, 2})); + CORRADE_COMPARE(*s.rbegin(), (Vector2i{2, 3})); s.insert({1, 2}); CORRADE_COMPARE(s.size(), 2); } -void StrictWeakOrderingTest::map() { - std::map> m; - - m[Vector2{1, 2}] = 23; - m[Vector2{4, 5}] = 55; - - CORRADE_COMPARE(m.size(), 2); - CORRADE_COMPARE(m.begin()->second, 23); - CORRADE_COMPARE(m.rbegin()->second, 55); - - m[Vector2{1, 2}] = 99; - CORRADE_COMPARE(m.size(), 2); - CORRADE_COMPARE(m.begin()->second, 99); -} - -void StrictWeakOrderingTest::mapShort() { - std::map m; - - m[Vector2{1, 2}] = 23; - m[Vector2{4, 5}] = 55; - - CORRADE_COMPARE(m.size(), 2); - CORRADE_COMPARE(m.begin()->second, 23); - CORRADE_COMPARE(m.rbegin()->second, 55); - - m[Vector2{1, 2}] = 99; - CORRADE_COMPARE(m.size(), 2); - CORRADE_COMPARE(m.begin()->second, 99); -} - -void StrictWeakOrderingTest::mapLess() { - std::map m; +template void StrictWeakOrderingTest::map() { + setTestCaseName(Corrade::Utility::formatString("map<{}>", Compare::name())); + Map m; - m[Vector2{1, 2}] = 23; - m[Vector2{4, 5}] = 55; + m[{1, 2}] = 23; + m[{4, 5}] = 55; CORRADE_COMPARE(m.size(), 2); CORRADE_COMPARE(m.begin()->second, 23); CORRADE_COMPARE(m.rbegin()->second, 55); - m[Vector2{1, 2}] = 99; + m[{1, 2}] = 99; CORRADE_COMPARE(m.size(), 2); CORRADE_COMPARE(m.begin()->second, 99); }