diff --git a/src/Magnum/Math/Frustum.h b/src/Magnum/Math/Frustum.h index cd300b5d6..9ac7c020c 100644 --- a/src/Magnum/Math/Frustum.h +++ b/src/Magnum/Math/Frustum.h @@ -122,9 +122,15 @@ template class Frustum { return Corrade::Containers::StaticArrayView<6, const Vector4>{_data}; } - /** @brief Plane at given index */ + /** + * @brief Plane at given index + * + * Expects that @p i is less than @cpp 6 @ce. + */ /* returns const& so [][] operations are also constexpr */ - constexpr const Vector4& operator[](std::size_t i) const { return _data[i]; } + constexpr const Vector4& operator[](std::size_t i) const { + return CORRADE_CONSTEXPR_ASSERT(i < 6, "Math::Frustum::operator[](): index" << i << "out of range"), _data[i]; + } /** @brief Left plane */ constexpr Vector4 left() const { return _data[0]; } diff --git a/src/Magnum/Math/Test/CMakeLists.txt b/src/Magnum/Math/Test/CMakeLists.txt index c65a57440..459935561 100644 --- a/src/Magnum/Math/Test/CMakeLists.txt +++ b/src/Magnum/Math/Test/CMakeLists.txt @@ -75,6 +75,7 @@ set_property(TARGET MathComplexTest MathCubicHermiteTest MathDualComplexTest + MathFrustumTest MathQuaternionTest MathDualQuaternionTest diff --git a/src/Magnum/Math/Test/FrustumTest.cpp b/src/Magnum/Math/Test/FrustumTest.cpp index 9fc2b7ac8..0bfde3772 100644 --- a/src/Magnum/Math/Test/FrustumTest.cpp +++ b/src/Magnum/Math/Test/FrustumTest.cpp @@ -283,6 +283,11 @@ void FrustumTest::data() { #endif Float b = *a.data(); CORRADE_COMPARE(b, 1.0f); + + std::ostringstream out; + Error redirectError{&out}; + a[6]; + CORRADE_COMPARE(out.str(), "Math::Frustum::operator[](): index 6 out of range\n"); } void FrustumTest::compare() {