r28 | charles.nicholson | 2010-07-29 17:43:45 -0500 (Thu, 29 Jul 2010) | 1 line

fix strict aliasing violation, was causing gcc failures.  use std::memcpy instead of union-cast
This commit is contained in:
Patrick Johnmeyer 2013-01-09 23:45:25 -06:00
parent f5ba405795
commit 57bf80682e

View file

@ -1,6 +1,8 @@
#include "../../unittestpp.h"
#include "RecordingReporter.h"
#include <cstring>
using namespace UnitTest;
@ -119,25 +121,21 @@ TEST(CheckCloseWithZeroEpsilonWorksForSameNumber)
TEST(CheckCloseWithNaNFails)
{
union
{
unsigned int bitpattern;
float nan;
};
bitpattern = 0xFFFFFFFF;
TestResults results;
const unsigned int bitpattern = 0xFFFFFFFF;
float nan;
std::memcpy(&nan, &bitpattern, sizeof(bitpattern));
TestResults results;
CheckClose(results, 3.0f, nan, 0.1f, TestDetails("", "", "", 0));
CHECK_EQUAL(1, results.GetFailureCount());
}
TEST(CheckCloseWithNaNAgainstItselfFails)
{
union
{
unsigned int bitpattern;
float nan;
};
bitpattern = 0xFFFFFFFF;
const unsigned int bitpattern = 0xFFFFFFFF;
float nan;
std::memcpy(&nan, &bitpattern, sizeof(bitpattern));
TestResults results;
CheckClose(results, nan, nan, 0.1f, TestDetails("", "", "", 0));
CHECK_EQUAL(1, results.GetFailureCount());