diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7411bc..c9ddc32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,12 @@ option(UTPP_INCLUDE_TESTS_IN_BUILD
option(UTPP_AMPLIFY_WARNINGS
"Set this to OFF if you wish to use CMake default warning levels; should generally only use to work around support issues for your specific compiler"
ON)
-
+
+if(BORLAND)
+ set(UTPP_USE_PLUS_SIGN OFF)
+ string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " cp32mti.lib Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Qrpt50.bpi Vcldb50.bpi Vclbde50.bpi ibsmp50.bpi vcldbx50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi TeeQR50.bpi VCLIB50.bpi bcbie50.bpi vclie50.bpi Inetdb50.bpi Inet50.bpi NMFast50.bpi dclocx50.bpi bcb2kaxserver50.bpi Memmgr.Lib ")
+endif()
+
if(MSVC14 OR MSVC12)
# has the support we need
else()
@@ -32,6 +37,8 @@ if (${UTPP_AMPLIFY_WARNINGS})
# we are dealing with an MSVC or MSVC-like compiler (e.g. Intel on Windows)
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
+ elseif(BORLAND)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w-par")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")
endif()
@@ -59,28 +66,34 @@ add_library(UnitTest++ STATIC ${headers_} ${sources_} ${platformHeaders_} ${plat
if(${UTPP_USE_PLUS_SIGN})
set_target_properties(UnitTest++ PROPERTIES OUTPUT_NAME UnitTest++)
+else()
+ set_target_properties(UnitTest++ PROPERTIES OUTPUT_NAME UnitTestpp)
endif()
+if(${UTPP_USE_PLUS_SIGN})
+ set(UTPP_TEST_NAME TestUnitTest++)
+else()
+ set(UTPP_TEST_NAME TestUnitTestPP)
+endif()
+
# build the test runner
file(GLOB TEST_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} tests/*.cpp tests/*.h)
source_group( "" FILES ${TEST_SRCS})
-add_executable(TestUnitTest++ ${TEST_SRCS})
+add_executable(${UTPP_TEST_NAME} ${TEST_SRCS})
include_directories(.)
-if(${UTPP_USE_PLUS_SIGN})
- set_target_properties(TestUnitTest++ PROPERTIES OUTPUT_NAME TestUnitTest++)
-endif()
+set_target_properties(${UTPP_TEST_NAME} PROPERTIES OUTPUT_NAME ${UTPP_TEST_NAME})
-target_link_libraries(TestUnitTest++ UnitTest++)
+target_link_libraries(${UTPP_TEST_NAME} UnitTest++)
# run unit tests as post build step
-add_custom_command(TARGET TestUnitTest++
- POST_BUILD COMMAND TestUnitTest++
+add_custom_command(TARGET ${UTPP_TEST_NAME}
+ POST_BUILD COMMAND ${UTPP_TEST_NAME}
COMMENT "Running unit tests")
if(NOT ${UTPP_INCLUDE_TESTS_IN_BUILD})
- set_target_properties(TestUnitTest++ PROPERTIES EXCLUDE_FROM_ALL 1)
+ set_target_properties(${UTPP_TEST_NAME} PROPERTIES EXCLUDE_FROM_ALL 1)
endif()
# add install targets
diff --git a/UnitTest++/MemoryOutStream.cpp b/UnitTest++/MemoryOutStream.cpp
index 98e52e6..41dd0f9 100644
--- a/UnitTest++/MemoryOutStream.cpp
+++ b/UnitTest++/MemoryOutStream.cpp
@@ -6,14 +6,19 @@ namespace UnitTest {
char const* MemoryOutStream::GetText() const
{
- m_text = this->str();
+ try
+ {
+ m_text = this->str();
+ }
+ catch (...) { m_text = ""; }
+
return m_text.c_str();
}
void MemoryOutStream::Clear()
{
this->str(std::string());
- m_text = this->str();
+ m_text = std::string();
}
#ifdef UNITTEST_COMPILER_IS_MSVC6
diff --git a/tests/Main.cpp b/tests/Main.cpp
index 4a0f402..0c369f0 100644
--- a/tests/Main.cpp
+++ b/tests/Main.cpp
@@ -1,4 +1,7 @@
#include "UnitTest++/UnitTestPP.h"
+#ifdef __BORLANDC__
+ #include
+#endif
int main(int, char const *[])
{
diff --git a/tests/TestCheckMacros.cpp b/tests/TestCheckMacros.cpp
index f9c46c4..6d948fb 100644
--- a/tests/TestCheckMacros.cpp
+++ b/tests/TestCheckMacros.cpp
@@ -4,6 +4,9 @@
#include "ScopedCurrentTest.h"
using namespace std;
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
namespace {
diff --git a/tests/TestChecks.cpp b/tests/TestChecks.cpp
index 2c0ac04..04cd150 100644
--- a/tests/TestChecks.cpp
+++ b/tests/TestChecks.cpp
@@ -3,6 +3,11 @@
#include
+#ifdef __BORLANDC__
+ #include
+ #include
+#endif
+
using namespace UnitTest;
@@ -148,6 +153,11 @@ namespace {
TEST(CheckCloseWithNaNFails)
{
+#ifdef __BORLANDC__
+ // This is to allow the check test to pass when using Nan (invalid float numbers), otherwise, they throw an exception
+ // and the test fails (CheckCloseWithNaNFails and CheckCloseWithNaNAgainstItselfFails)
+ _control87(MCW_EM, MCW_EM);
+#endif
const unsigned int bitpattern = 0xFFFFFFFF;
float nan;
UNIITEST_NS_QUAL_STD(memcpy)(&nan, &bitpattern, sizeof(bitpattern));
diff --git a/tests/TestCurrentTest.cpp b/tests/TestCurrentTest.cpp
index 6cfb99d..ef0852a 100644
--- a/tests/TestCurrentTest.cpp
+++ b/tests/TestCurrentTest.cpp
@@ -2,6 +2,10 @@
#include "UnitTest++/CurrentTest.h"
#include "ScopedCurrentTest.h"
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
+
namespace
{
diff --git a/tests/TestExceptions.cpp b/tests/TestExceptions.cpp
index 08f6547..c7157c2 100644
--- a/tests/TestExceptions.cpp
+++ b/tests/TestExceptions.cpp
@@ -9,6 +9,9 @@
#include
using namespace std;
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
namespace {
diff --git a/tests/TestLongMacros.cpp b/tests/TestLongMacros.cpp
index 6720a97..89df636 100644
--- a/tests/TestLongMacros.cpp
+++ b/tests/TestLongMacros.cpp
@@ -2,6 +2,10 @@
#include "UnitTest++/UnitTestPP.h"
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
+
// This file is not intended to test every little thing, just a few basics to hopefully ensure
// the macros are working and the short macros are not defined.
UNITTEST_SUITE(LongMacros)
diff --git a/tests/TestMemoryOutStream.cpp b/tests/TestMemoryOutStream.cpp
index 854277e..4010c79 100644
--- a/tests/TestMemoryOutStream.cpp
+++ b/tests/TestMemoryOutStream.cpp
@@ -170,7 +170,7 @@ namespace {
TEST(StreamingLongLongWritesCorrectCharacters)
{
MemoryOutStream stream;
-#ifdef UNITTEST_COMPILER_IS_MSVC6
+#if defined(UNITTEST_COMPILER_IS_MSVC6) || defined(__BORLANDC__)
stream << (__int64)-12345i64;
#else
stream << (long long)-12345ll;
@@ -199,7 +199,7 @@ namespace {
TEST(StreamingUnsignedLongLongWritesCorrectCharacters)
{
MemoryOutStream stream;
-#ifdef UNITTEST_COMPILER_IS_MSVC6
+#if defined(UNITTEST_COMPILER_IS_MSVC6) || defined(__BORLANDC__)
stream << (unsigned __int64)85899ui64;
#else
stream << (unsigned long long)85899ull;
@@ -219,7 +219,7 @@ namespace {
TEST(StreamingMinUnsignedLongLongWritesCorrectCharacters)
{
MemoryOutStream stream;
-#ifdef UNITTEST_COMPILER_IS_MSVC6
+#if defined(UNITTEST_COMPILER_IS_MSVC6) || defined(__BORLANDC__)
stream << (unsigned __int64)0ui64;
#else
stream << (unsigned long long)0ull;
@@ -257,6 +257,9 @@ namespace {
CHECK_EQUAL("53124", stream.GetText());
}
+ // Not sure why but this test fails with the Borland C++ 5.5 compiler.
+ // It throws an unhandled exception:
+ // unexpected NULL pointer in function: basic_string( const charT*,size_type,const Allocator&)
TEST(ClearEmptiesMemoryOutStreamContents)
{
MemoryOutStream stream;
diff --git a/tests/TestRequireMacrosWithExceptionsOn.cpp b/tests/TestRequireMacrosWithExceptionsOn.cpp
index f904708..5560956 100644
--- a/tests/TestRequireMacrosWithExceptionsOn.cpp
+++ b/tests/TestRequireMacrosWithExceptionsOn.cpp
@@ -4,6 +4,9 @@
#include "ScopedCurrentTest.h"
using namespace std;
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
#ifndef UNITTEST_NO_EXCEPTIONS
diff --git a/tests/TestTestMacros.cpp b/tests/TestTestMacros.cpp
index e66bfb6..54450df 100644
--- a/tests/TestTestMacros.cpp
+++ b/tests/TestTestMacros.cpp
@@ -30,6 +30,8 @@ using namespace std;
#else
#define _NOEXCEPT_OP(x)
#endif
+ #else
+ #define _NOEXCEPT_OP(x)
#endif
#endif
@@ -43,6 +45,7 @@ using namespace std;
#endif
+
namespace {
TestList list1;
diff --git a/tests/TestTestSuite.cpp b/tests/TestTestSuite.cpp
index e0bbacf..6fd83f1 100644
--- a/tests/TestTestSuite.cpp
+++ b/tests/TestTestSuite.cpp
@@ -1,5 +1,9 @@
#include "UnitTest++/UnitTestPP.h"
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
+
// We're really testing if it's possible to use the same suite in two files
// to compile and link successfuly (TestTestSuite.cpp has suite with the same name)
// Note: we are outside of the anonymous namespace
diff --git a/tests/TestTimeConstraintMacro.cpp b/tests/TestTimeConstraintMacro.cpp
index a8d0c79..a279b8c 100644
--- a/tests/TestTimeConstraintMacro.cpp
+++ b/tests/TestTimeConstraintMacro.cpp
@@ -4,6 +4,10 @@
#include "RecordingReporter.h"
#include "ScopedCurrentTest.h"
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
+
namespace {
TEST(TimeConstraintMacroQualifiesNamespace)
diff --git a/tests/TestUnitTestPP.cpp b/tests/TestUnitTestPP.cpp
index 831b360..0908d59 100644
--- a/tests/TestUnitTestPP.cpp
+++ b/tests/TestUnitTestPP.cpp
@@ -2,6 +2,9 @@
#include "ScopedCurrentTest.h"
// These are sample tests that show the different features of the framework
+#ifdef __BORLANDC__
+using namespace UnitTest;
+#endif
namespace {