diff --git a/test/hash_reference_values.cpp b/test/hash_reference_values.cpp index 2e95015..81f6f68 100644 --- a/test/hash_reference_values.cpp +++ b/test/hash_reference_values.cpp @@ -122,8 +122,17 @@ int main() BOOST_TEST_EQ( hv((uint128)0), 0 ); BOOST_TEST_EQ( hv((uint128)1), 1 ); BOOST_TEST_EQ( hv((uint128)65535), 65535 ); + +#if defined(BOOST_GCC) && BOOST_GCC < 100000 + + BOOST_TEST_EQ( hv((uint128)-1), 18446744073709551615ULL ); + +#else + BOOST_TEST_EQ( hv((uint128)-1), 13835058055282163777ULL ); +#endif + #endif // float @@ -241,18 +250,38 @@ int main() BOOST_TEST_EQ( hv(-1.0L), 3220176896U ); BOOST_TEST_EQ( hv(3.14L), 2660156064U ); BOOST_TEST_EQ( hv(-3.14L), 512672416U ); + +#if !defined(__GLIBCXX__) + BOOST_TEST_EQ( hv(std::numeric_limits::infinity()), 2146435072U ); BOOST_TEST_EQ( hv(-std::numeric_limits::infinity()), 4293918720U ); +#else + + BOOST_TEST_EQ( hv(std::numeric_limits::infinity()), 2146435072U ); + BOOST_TEST_EQ( hv(-std::numeric_limits::infinity()), 4293918720U ); + +#endif + #else BOOST_TEST_EQ( hv(1.0L), 11529215046068486143ULL ); BOOST_TEST_EQ( hv(-1.0L), 11529215046068518911ULL ); BOOST_TEST_EQ( hv(3.14L), 12059468778148142067ULL ); BOOST_TEST_EQ( hv(-3.14L), 12059468778147191795ULL ); + +#if !defined(__GLIBCXX__) + BOOST_TEST_EQ( hv(std::numeric_limits::infinity()), 18446744073709551615ULL ); BOOST_TEST_EQ( hv(-std::numeric_limits::infinity()), 18446744073709551614ULL ); +#else + + BOOST_TEST_EQ( hv(std::numeric_limits::infinity()), 11529215046068502527ULL ); + BOOST_TEST_EQ( hv(-std::numeric_limits::infinity()), 11529215046068535295ULL ); + +#endif + #endif #endif