From 23127fe5b954d8fb77d86f24ac49aa0d635ea602 Mon Sep 17 00:00:00 2001 From: Martin Moene Date: Thu, 9 May 2013 11:12:29 +0200 Subject: [PATCH] Add changes required to compile with MS VC6 Add macro UNITTEST_COMPILER_IS_MSVC6 Add macro UNIITEST_NS_QUAL_STD(fun) Avoid __pragma() Skip tests with long long --- UnitTest++/Config.h | 12 +++++++++++- UnitTest++/DeferredTestResult.cpp | 2 +- UnitTest++/HelperMacros.h | 2 +- tests/TestChecks.cpp | 4 ++-- tests/TestMemoryOutStream.cpp | 2 ++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/UnitTest++/Config.h b/UnitTest++/Config.h index 5313b09..4f695f7 100644 --- a/UnitTest++/Config.h +++ b/UnitTest++/Config.h @@ -7,7 +7,8 @@ #pragma warning(disable:4702) // unreachable code #pragma warning(disable:4722) // destructor never returns, potential memory leak - #if (_MSC_VER == 1200) // VC6 +#if (_MSC_VER == 1200) // VC6 + #define UNITTEST_COMPILER_IS_MSVC6 #pragma warning(disable:4786) #pragma warning(disable:4290) #endif @@ -60,4 +61,13 @@ //#define UNITTEST_NO_EXCEPTIONS + +// std namespace qualification: used for functions like strcpy that +// may live in std:: namespace (cstring header). +#if defined( UNITTEST_COMPILER_IS_MSVC6 ) + #define UNIITEST_NS_QUAL_STD(x) x +#else + #define UNIITEST_NS_QUAL_STD(x) ::std::x +#endif + #endif diff --git a/UnitTest++/DeferredTestResult.cpp b/UnitTest++/DeferredTestResult.cpp index 5071f82..cdad9eb 100644 --- a/UnitTest++/DeferredTestResult.cpp +++ b/UnitTest++/DeferredTestResult.cpp @@ -16,7 +16,7 @@ DeferredTestFailure::DeferredTestFailure() DeferredTestFailure::DeferredTestFailure(int lineNumber_, const char* failureStr_) : lineNumber(lineNumber_) { - std::strcpy(failureStr, failureStr_); + UNIITEST_NS_QUAL_STD(strcpy)(failureStr, failureStr_); } DeferredTestResult::DeferredTestResult() diff --git a/UnitTest++/HelperMacros.h b/UnitTest++/HelperMacros.h index fb3181d..699d99d 100644 --- a/UnitTest++/HelperMacros.h +++ b/UnitTest++/HelperMacros.h @@ -5,7 +5,7 @@ #define UNITTEST_MULTILINE_MACRO_BEGIN do { -#ifdef UNITTEST_WIN32 +#if defined(UNITTEST_WIN32) && !defined(UNITTEST_COMPILER_IS_MSVC6) #define UNITTEST_MULTILINE_MACRO_END \ } __pragma(warning(push)) __pragma(warning(disable:4127)) while (0) __pragma(warning(pop)) #else diff --git a/tests/TestChecks.cpp b/tests/TestChecks.cpp index 758ca31..9554b31 100644 --- a/tests/TestChecks.cpp +++ b/tests/TestChecks.cpp @@ -150,7 +150,7 @@ TEST(CheckCloseWithNaNFails) { const unsigned int bitpattern = 0xFFFFFFFF; float nan; - std::memcpy(&nan, &bitpattern, sizeof(bitpattern)); + UNIITEST_NS_QUAL_STD(memcpy)(&nan, &bitpattern, sizeof(bitpattern)); TestResults results; CheckClose(results, 3.0f, nan, 0.1f, TestDetails("", "", "", 0)); @@ -161,7 +161,7 @@ TEST(CheckCloseWithNaNAgainstItselfFails) { const unsigned int bitpattern = 0xFFFFFFFF; float nan; - std::memcpy(&nan, &bitpattern, sizeof(bitpattern)); + UNIITEST_NS_QUAL_STD(memcpy)(&nan, &bitpattern, sizeof(bitpattern)); TestResults results; CheckClose(results, nan, nan, 0.1f, TestDetails("", "", "", 0)); diff --git a/tests/TestMemoryOutStream.cpp b/tests/TestMemoryOutStream.cpp index 74a9a56..9b2aa1f 100644 --- a/tests/TestMemoryOutStream.cpp +++ b/tests/TestMemoryOutStream.cpp @@ -167,6 +167,7 @@ TEST(StreamingMinUnsignedLongWritesCorrectCharacters) CHECK_EQUAL("0", stream.GetText()); } +#ifndef UNITTEST_COMPILER_IS_MSVC6 TEST(StreamingLongLongWritesCorrectCharacters) { MemoryOutStream stream; @@ -214,6 +215,7 @@ TEST(StreamingMinUnsignedLongLongWritesCorrectCharacters) stream << (unsigned long long)0ull; CHECK_EQUAL("0", stream.GetText()); } +#endif TEST(StreamingFloatWritesCorrectCharacters) {