Browse Source

Math: *not* a good idea to test assertions alongside everything else.

Because on a no-assert build the whole test case gets skipped. So we
never know if the compiled-out assert didn't discard something
important.
pull/554/head
Vladimír Vondruš 4 years ago
parent
commit
2adea7674f
  1. 20
      src/Magnum/Math/Test/FrustumTest.cpp

20
src/Magnum/Math/Test/FrustumTest.cpp

@ -78,6 +78,7 @@ struct FrustumTest: Corrade::TestSuite::Tester {
void convert(); void convert();
void data(); void data();
void dataOutOfRange();
void rangeFor(); void rangeFor();
void compare(); void compare();
@ -102,6 +103,7 @@ FrustumTest::FrustumTest() {
&FrustumTest::convert, &FrustumTest::convert,
&FrustumTest::data, &FrustumTest::data,
&FrustumTest::dataOutOfRange,
&FrustumTest::rangeFor, &FrustumTest::rangeFor,
&FrustumTest::compare, &FrustumTest::compare,
@ -307,10 +309,6 @@ void FrustumTest::convert() {
} }
void FrustumTest::data() { void FrustumTest::data() {
#ifdef CORRADE_NO_ASSERT
CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions");
#endif
/* Using default-constructed to verify that the planes are in correct order */ /* Using default-constructed to verify that the planes are in correct order */
constexpr Frustum a; constexpr Frustum a;
@ -337,11 +335,23 @@ void FrustumTest::data() {
#endif #endif
Float b = *a.data(); Float b = *a.data();
CORRADE_COMPARE(b, 1.0f); CORRADE_COMPARE(b, 1.0f);
}
void FrustumTest::dataOutOfRange() {
#ifdef CORRADE_NO_ASSERT
CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions");
#endif
Frustum a;
constexpr Frustum ca;
std::ostringstream out; std::ostringstream out;
Error redirectError{&out}; Error redirectError{&out};
a[6]; a[6];
CORRADE_COMPARE(out.str(), "Math::Frustum::operator[](): index 6 out of range\n"); ca[6];
CORRADE_COMPARE(out.str(),
"Math::Frustum::operator[](): index 6 out of range\n"
"Math::Frustum::operator[](): index 6 out of range\n");
} }
void FrustumTest::rangeFor() { void FrustumTest::rangeFor() {

Loading…
Cancel
Save