|
|
|
|
@ -27,6 +27,7 @@
|
|
|
|
|
#include <Corrade/TestSuite/Tester.h> |
|
|
|
|
#include <Corrade/Utility/DebugStl.h> |
|
|
|
|
|
|
|
|
|
#include "Magnum/Math/Half.h" |
|
|
|
|
#include "Magnum/Math/Math.h" |
|
|
|
|
#include "Magnum/Math/TypeTraits.h" |
|
|
|
|
#include "Magnum/Math/Constants.h" |
|
|
|
|
@ -48,6 +49,7 @@ struct TypeTraitsTest: Corrade::TestSuite::Tester {
|
|
|
|
|
void underlyingTypeOf(); |
|
|
|
|
|
|
|
|
|
template<class T> void equalsIntegral(); |
|
|
|
|
void equalsHalf(); |
|
|
|
|
template<class T> void equalsFloatingPoint0(); |
|
|
|
|
template<class T> void equalsFloatingPoint1(); |
|
|
|
|
template<class T> void equalsFloatingPointLarge(); |
|
|
|
|
@ -125,6 +127,8 @@ TypeTraitsTest::TypeTraitsTest() {
|
|
|
|
|
&TypeTraitsTest::equalsIntegral<Long>, |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
&TypeTraitsTest::equalsHalf, |
|
|
|
|
|
|
|
|
|
&TypeTraitsTest::equalsFloatingPoint0<Float>, |
|
|
|
|
&TypeTraitsTest::equalsFloatingPoint0<Double>, |
|
|
|
|
#ifndef CORRADE_TARGET_EMSCRIPTEN |
|
|
|
|
@ -191,9 +195,11 @@ void TypeTraitsTest::isScalar() {
|
|
|
|
|
CORRADE_VERIFY(IsScalar<char>::value); |
|
|
|
|
CORRADE_VERIFY(IsScalar<UnsignedShort>::value); |
|
|
|
|
CORRADE_VERIFY(IsScalar<Deg<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(IsScalar<Half>::value); |
|
|
|
|
CORRADE_VERIFY((IsScalar<Unit<Rad, Double>>::value)); |
|
|
|
|
CORRADE_VERIFY(!IsScalar<Vector2<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsVector<Matrix2x3<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsScalar<Color3<Half>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsScalar<char*>::value); |
|
|
|
|
CORRADE_VERIFY(!IsScalar<bool>::value); |
|
|
|
|
} |
|
|
|
|
@ -203,6 +209,7 @@ void TypeTraitsTest::isVector() {
|
|
|
|
|
CORRADE_VERIFY(!IsVector<Deg<UnsignedByte>>::value); |
|
|
|
|
CORRADE_VERIFY((IsVector<Vector<2, Deg<Float>>>::value)); |
|
|
|
|
CORRADE_VERIFY(IsVector<Color3<UnsignedByte>>::value); |
|
|
|
|
CORRADE_VERIFY(IsVector<Color3<Half>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsVector<Matrix2x3<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsVector<char*>::value); |
|
|
|
|
} |
|
|
|
|
@ -218,6 +225,7 @@ void TypeTraitsTest::isIntegral() {
|
|
|
|
|
#ifndef CORRADE_TARGET_EMSCRIPTEN |
|
|
|
|
CORRADE_VERIFY(IsIntegral<Vector2<Long>>::value); |
|
|
|
|
#endif |
|
|
|
|
CORRADE_VERIFY(!IsIntegral<Half>::value); |
|
|
|
|
CORRADE_VERIFY(!IsIntegral<Deg<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsIntegral<char*>::value); |
|
|
|
|
CORRADE_VERIFY(!IsIntegral<bool>::value); |
|
|
|
|
@ -232,13 +240,15 @@ void TypeTraitsTest::isFloatingPoint() {
|
|
|
|
|
CORRADE_VERIFY(IsFloatingPoint<Vector2<long double>>::value); |
|
|
|
|
#endif |
|
|
|
|
CORRADE_VERIFY(IsFloatingPoint<Deg<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(IsFloatingPoint<Color4<Half>>::value); |
|
|
|
|
CORRADE_VERIFY((IsFloatingPoint<Unit<Rad, Float>>::value)); |
|
|
|
|
CORRADE_VERIFY(!IsFloatingPoint<Deg<Half>>::value); |
|
|
|
|
CORRADE_VERIFY(IsFloatingPoint<Deg<Half>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsFloatingPoint<char*>::value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void TypeTraitsTest::isUnitless() { |
|
|
|
|
CORRADE_VERIFY(IsUnitless<Int>::value); |
|
|
|
|
CORRADE_VERIFY(IsUnitless<Half>::value); |
|
|
|
|
CORRADE_VERIFY(IsUnitless<Color4<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!IsUnitless<Deg<Float>>::value); |
|
|
|
|
CORRADE_VERIFY(!(IsUnitless<Unit<Rad, Double>>::value)); |
|
|
|
|
@ -266,6 +276,13 @@ template<class T> void TypeTraitsTest::equalsIntegral() {
|
|
|
|
|
CORRADE_VERIFY(!TypeTraits<T>::equals(T(1), T(1)+TypeTraits<T>::epsilon())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void TypeTraitsTest::equalsHalf() { |
|
|
|
|
CORRADE_VERIFY(TypeTraits<Half>::equals(Half(UnsignedShort(0xabcd)), |
|
|
|
|
Half(UnsignedShort(0xabcd)))); |
|
|
|
|
CORRADE_VERIFY(!TypeTraits<Half>::equals(Half(UnsignedShort(0xabcd)), |
|
|
|
|
Half(UnsignedShort(0xabce)))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template<class T> void TypeTraitsTest::equalsFloatingPoint0() { |
|
|
|
|
setTestCaseTemplateName(TypeTraits<T>::name()); |
|
|
|
|
|
|
|
|
|
|