Browse Source

Math: test and fix array-taking isInf()/isNan() also with vectors.

Next time I need to test properly.
mousecapture
Vladimír Vondruš 6 years ago
parent
commit
d69b6f8c40
  1. 4
      src/Magnum/Math/FunctionsBatch.h
  2. 6
      src/Magnum/Math/Test/FunctionsBatchTest.cpp

4
src/Magnum/Math/FunctionsBatch.h

@ -102,12 +102,12 @@ template<class T> inline auto isNan(Corrade::Containers::StridedArrayView1D<cons
}
/** @overload */
template<class T> inline auto isNan(std::initializer_list<T> list) -> decltype(isInf(std::declval<T>())) {
template<class T> inline auto isNan(std::initializer_list<T> list) -> decltype(isNan(std::declval<T>())) {
return isNan<T>(Corrade::Containers::arrayView(list.begin(), list.size()));
}
/** @overload */
template<class T, std::size_t size> inline bool isNan(const T(&array)[size]) {
template<class T, std::size_t size> inline auto isNan(const T(&array)[size]) -> decltype(isNan(std::declval<T>())) {
return isNan<T>(Corrade::Containers::arrayView(array));
}

6
src/Magnum/Math/Test/FunctionsBatchTest.cpp

@ -82,6 +82,9 @@ void FunctionsBatchTest::isInf() {
const Float b[]{5.0f, -2.0f, -1.0};
CORRADE_VERIFY(!Math::isInf(b));
Vector2 c[]{{5.0f, -3.0f}, {-2.0f, 14.0f}, {Constants::inf(), -5.0f}};
CORRADE_COMPARE(Math::isInf(c), BoolVector<2>{1});
}
void FunctionsBatchTest::isNan() {
@ -103,6 +106,9 @@ void FunctionsBatchTest::isNan() {
const Float b[]{5.0f, -2.0f, -1.0};
CORRADE_VERIFY(!Math::isNan(b));
Vector2 c[]{{5.0f, -3.0f}, {14.0f, Constants::nan()}, {-2.0f, -5.0f}};
CORRADE_COMPARE(Math::isNan(c), BoolVector<2>{2});
}
void FunctionsBatchTest::min() {

Loading…
Cancel
Save