diff --git a/test/testdata.cpp b/test/testdata.cpp index 8b99941..4168fd9 100644 --- a/test/testdata.cpp +++ b/test/testdata.cpp @@ -4,6 +4,8 @@ * in file LICENSE that is included with this distribution. */ +#include + #include #include @@ -495,7 +497,7 @@ void testClear() MAIN(testdata) { - testPlan(156); + testPlan(172); testSetup(); testTraverse(); testAssign(); @@ -544,6 +546,35 @@ MAIN(testdata) testConvertScalar2(-2147483648, 0x80000000, -2147483648); testTodoEnd(); testConvertScalar2(0, 0x100000000llu, -0); + testTodoBegin("UB"); + // test non-finite -> integer casts + // copy in + testConvertScalar2(0, + std::numeric_limits::quiet_NaN(), + 0); + testConvertScalar2(0x7fffffffffffffff, + std::numeric_limits::infinity(), + 0x7fffffff); + testConvertScalar2(0x8000000000000000, + -std::numeric_limits::infinity(), + 0x80000000); + testConvertScalar2(0xffffffffffffffff, + std::numeric_limits::infinity(), + 0xffffffff); + // copy out + testConvertScalar2(std::numeric_limits::quiet_NaN(), + std::numeric_limits::quiet_NaN(), + 0); + testConvertScalar2(std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + 0x7fffffff); + testConvertScalar2(-std::numeric_limits::infinity(), + -std::numeric_limits::infinity(), + 0x80000000); + testConvertScalar2(std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + 0xffffffff); + testTodoEnd(); testAssignSimilar(); testAssignSimilarNDArray();