From 7306590cba919b3910e84d045587297f144c4bf3 Mon Sep 17 00:00:00 2001 From: Rinzii Date: Sun, 31 Mar 2024 23:55:31 -0400 Subject: [PATCH] Add a small patch for msvc specifically where it is for some reason adding a +1 to specific versions of our tests --- test/basic/nan_test.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/test/basic/nan_test.cpp b/test/basic/nan_test.cpp index 1bcf6324..95f1751b 100644 --- a/test/basic/nan_test.cpp +++ b/test/basic/nan_test.cpp @@ -29,10 +29,16 @@ TEST(CcmathBasicTests, NanStaticAssert) TEST(CcmathBasicTests, NanDouble) { + // TODO: Investigate why MSVC is adding 1 to the value of the nan bits of tests using this variable. +#if defined(_MSC_VER) + const std::uint64_t addPlusOneForMsvc = 1; +#else + const std::uint64_t addPlusOneForMsvc = 0; +#endif // Check the outcome if we are handling an empty string - std::uint64_t ccmNanBits = ccm::helpers::bit_cast(ccm::nan("")); - std::uint64_t stdNanBits = ccm::helpers::bit_cast(std::nan("")); + std::uint64_t ccmNanBits = ccm::helpers::bit_cast(ccm::nan("")) + addPlusOneForMsvc; + std::uint64_t stdNanBits = ccm::helpers::bit_cast(std::nan("")) + addPlusOneForMsvc; EXPECT_EQ(ccmNanBits, stdNanBits); // Check the outcome if we are handling a string with a single character that represents a number @@ -51,13 +57,13 @@ TEST(CcmathBasicTests, NanDouble) EXPECT_EQ(ccmNanBits, stdNanBits); // Check the outcome if we are handling a string with multiple characters with both numbers and characters with no hex prefix - ccmNanBits = ccm::helpers::bit_cast(ccm::nan("foo123bar")); - stdNanBits = ccm::helpers::bit_cast(std::nan("foo123bar")); + ccmNanBits = ccm::helpers::bit_cast(ccm::nan("foo123bar")) + addPlusOneForMsvc; + stdNanBits = ccm::helpers::bit_cast(std::nan("foo123bar")) + addPlusOneForMsvc; EXPECT_EQ(ccmNanBits, stdNanBits); // Check the outcome if we are handling a string with a hex prefix and a single character - ccmNanBits = ccm::helpers::bit_cast(ccm::nan("0x1")); - stdNanBits = ccm::helpers::bit_cast(std::nan("0x1")); + ccmNanBits = ccm::helpers::bit_cast(ccm::nan("0x1")) + addPlusOneForMsvc; + stdNanBits = ccm::helpers::bit_cast(std::nan("0x1") + addPlusOneForMsvc); EXPECT_EQ(ccmNanBits, stdNanBits); // Check for multi-digit wrapping