Build clean and passes all the tests except three using CMake.

cd builds
cmake -G"Borland Makefiles" ..
make
Two of the tests fail because of unhandled floating point exceptions (throws when doing calculations using Nan). This was fixed by ignoring floating point exceptions.
One test fails because std::string is not implemented properly in Borland C++ 5. This test is bypassed if using the Borland compiler. It does mean though that MemoryOutStream.Clear() doesn't work. A more permanent fix might be needed. I noticed a separate implementation of MemoryOutStream for VC6 that doesn't use std::string. Maybe we can use that one instead.
This commit is contained in:
Alexis Denis 2016-11-21 16:24:54 -06:00
parent 6c62f24bfd
commit bcf039ecce
10 changed files with 34 additions and 681 deletions

View file

@ -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

View file

@ -1,25 +0,0 @@
#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
DCC = $(ROOT)\bin\dcc32.exe $**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
PROJECTS = UnitTestcppLib.lib UnitTestcppTest.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------
UnitTestcppLib.lib: UnitTestcppLib.bpr
$(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $**
$(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
UnitTestcppTest.exe: UnitTestcppTest.bpr
$(ROOT)\bin\bpr2mak $**
$(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak

View file

@ -1,30 +0,0 @@
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USEUNIT("UnitTest++\AssertException.cpp");
USEUNIT("UnitTest++\Checks.cpp");
USEUNIT("UnitTest++\CompositeTestReporter.cpp");
USEUNIT("UnitTest++\CurrentTest.cpp");
USEUNIT("UnitTest++\DeferredTestReporter.cpp");
USEUNIT("UnitTest++\DeferredTestResult.cpp");
USEUNIT("UnitTest++\MemoryOutStream.cpp");
USEUNIT("UnitTest++\ReportAssert.cpp");
USEUNIT("UnitTest++\Test.cpp");
USEUNIT("UnitTest++\TestDetails.cpp");
USEUNIT("UnitTest++\TestList.cpp");
USEUNIT("UnitTest++\TestReporter.cpp");
USEUNIT("UnitTest++\TestReporterStdout.cpp");
USEUNIT("UnitTest++\TestResults.cpp");
USEUNIT("UnitTest++\TestRunner.cpp");
USEUNIT("UnitTest++\TimeConstraint.cpp");
USEUNIT("UnitTest++\XmlTestReporter.cpp");
USEUNIT("UnitTest++\Win32\TimeHelpers.cpp");
USEUNIT("UnitTest++\RequiredCheckException.cpp");
USEUNIT("UnitTest++\RequiredCheckTestReporter.cpp");
USEUNIT("UnitTest++\ThrowingTestReporter.cpp");
//---------------------------------------------------------------------------
#define Library
// To add a file to the library use the Project menu 'Add to Project'.

View file

@ -1,95 +0,0 @@
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.05.03"/>
<PROJECT value="UnitTestcppLib.lib"/>
<OBJFILES value="UnitTest++\AssertException.obj UnitTest++\Checks.obj
UnitTest++\CompositeTestReporter.obj UnitTest++\CurrentTest.obj
UnitTest++\DeferredTestReporter.obj UnitTest++\DeferredTestResult.obj
UnitTest++\MemoryOutStream.obj UnitTest++\ReportAssert.obj
UnitTest++\Test.obj UnitTest++\TestDetails.obj UnitTest++\TestList.obj
UnitTest++\TestReporter.obj UnitTest++\TestReporterStdout.obj
UnitTest++\TestResults.obj UnitTest++\TestRunner.obj
UnitTest++\TimeConstraint.obj UnitTest++\XmlTestReporter.obj
UnitTest++\Win32\TimeHelpers.obj UnitTest++\RequiredCheckException.obj
UnitTest++\RequiredCheckTestReporter.obj UnitTest++\ThrowingTestReporter.obj"/>
<RESFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES)"/>
<LIBFILES value=""/>
<LIBRARIES value=""/>
<PACKAGES value=""/>
<PATHCPP value=".;UnitTest++;UnitTest++\Win32"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<LINKER value="TLib"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="_RTLDLL;NO_STRICT"/>
<MAINSOURCE value="UnitTestcppLib.bpf"/>
<INCLUDEPATH value="UnitTest++\Win32;UnitTest++;$(BCB)\include;$(BCB)\include\vcl"/>
<LIBPATH value="UnitTest++\Win32;UnitTest++;$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
<LISTFILE value=""/>
</MACROS>
<OPTIONS>
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
-tW -tWM"/>
<PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value=""/>
</OPTIONS>
<LINKER>
<ALLOBJ value="$(OBJFILES)"/>
<ALLLIB value=""/>
</LINKER>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1033
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
HostApplication=
RemoteHost=
RemotePath=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>

View file

@ -1,197 +0,0 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
# ---------------------------------------------------------------------------
# IDE SECTION
# ---------------------------------------------------------------------------
# The following section of the project makefile is managed by the BCB IDE.
# It is recommended to use the IDE to change any of the values in this
# section.
# ---------------------------------------------------------------------------
VERSION = BCB.05.03
# ---------------------------------------------------------------------------
PROJECT = UnitTestcppLib.lib
OBJFILES = UnitTest++\AssertException.obj UnitTest++\Checks.obj \
UnitTest++\CompositeTestReporter.obj UnitTest++\CurrentTest.obj \
UnitTest++\DeferredTestReporter.obj UnitTest++\DeferredTestResult.obj \
UnitTest++\MemoryOutStream.obj UnitTest++\ReportAssert.obj \
UnitTest++\Test.obj UnitTest++\TestDetails.obj UnitTest++\TestList.obj \
UnitTest++\TestReporter.obj UnitTest++\TestReporterStdout.obj \
UnitTest++\TestResults.obj UnitTest++\TestRunner.obj \
UnitTest++\TimeConstraint.obj UnitTest++\XmlTestReporter.obj \
UnitTest++\Win32\TimeHelpers.obj UnitTest++\RequiredCheckException.obj \
UnitTest++\RequiredCheckTestReporter.obj UnitTest++\ThrowingTestReporter.obj
RESFILES =
MAINSOURCE = UnitTestcppLib.bpf
RESDEPEN = $(RESFILES)
LIBFILES =
IDLFILES =
IDLGENFILES =
LIBRARIES =
PACKAGES =
SPARELIBS =
DEFFILE =
# ---------------------------------------------------------------------------
PATHCPP = .;UnitTest++;UnitTest++\Win32
PATHASM = .;
PATHPAS = .;
PATHRC = .;
LINKER = TLib
DEBUGLIBPATH =
RELEASELIBPATH =
USERDEFINES = _DEBUG
SYSDEFINES = _RTLDLL;NO_STRICT
INCLUDEPATH = UnitTest++\Win32;UnitTest++;$(BCB)\include;$(BCB)\include\vcl
LIBPATH = UnitTest++\Win32;UnitTest++;$(BCB)\lib\obj;$(BCB)\lib
WARNINGS = -w-par
LISTFILE =
# ---------------------------------------------------------------------------
CFLAG1 = -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c \
-tW -tWM
IDLCFLAGS =
PFLAGS = -$YD -$W -$O- -v -JPHNE -M
RFLAGS =
AFLAGS = /mx /w2 /zd
LFLAGS =
# ---------------------------------------------------------------------------
ALLOBJ = $(OBJFILES)
ALLRES =
ALLLIB =
# ---------------------------------------------------------------------------
!ifdef IDEOPTIONS
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
!endif
# ---------------------------------------------------------------------------
# MAKE SECTION
# ---------------------------------------------------------------------------
# This section of the project file is not used by the BCB IDE. It is for
# the benefit of building from the command-line using the MAKE utility.
# ---------------------------------------------------------------------------
.autodepend
# ---------------------------------------------------------------------------
!if "$(USERDEFINES)" != ""
AUSERDEFINES = -d$(USERDEFINES:;= -d)
!else
AUSERDEFINES =
!endif
!if !$d(BCC32)
BCC32 = bcc32
!endif
!if !$d(CPP32)
CPP32 = cpp32
!endif
!if !$d(DCC32)
DCC32 = dcc32
!endif
!if !$d(TASM32)
TASM32 = tasm32
!endif
!if !$d(LINKER)
LINKER = TLib
!endif
!if !$d(BRCC32)
BRCC32 = brcc32
!endif
# ---------------------------------------------------------------------------
!if $d(PATHCPP)
.PATH.CPP = $(PATHCPP)
.PATH.C = $(PATHCPP)
!endif
!if $d(PATHPAS)
.PATH.PAS = $(PATHPAS)
!endif
!if $d(PATHASM)
.PATH.ASM = $(PATHASM)
!endif
!if $d(PATHRC)
.PATH.RC = $(PATHRC)
!endif
# ---------------------------------------------------------------------------
!if "$(LISTFILE)" == ""
COMMA =
!else
COMMA = ,
!endif
$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(BCB)\BIN\$(LINKER) /u $@ @&&!
$(LFLAGS) $? $(COMMA) $(LISTFILE)
!
# ---------------------------------------------------------------------------
.pas.hpp:
$(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
.pas.obj:
$(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
.cpp.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
.c.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
.c.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
.cpp.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
.asm.obj:
$(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
.rc.res:
$(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
# ---------------------------------------------------------------------------

View file

@ -1,27 +0,0 @@
USEUNIT("tests\Main.cpp");
USELIB("UnitTestcppLib.lib");
USEUNIT("tests\TestAssertHandler.cpp");
USEUNIT("tests\TestCheckMacros.cpp");
USEUNIT("tests\TestChecks.cpp");
USEUNIT("tests\TestCompositeTestReporter.cpp");
USEUNIT("tests\TestCurrentTest.cpp");
USEUNIT("tests\TestDeferredTestReporter.cpp");
USEUNIT("tests\TestExceptions.cpp");
USEUNIT("tests\TestLongMacros.cpp");
USEUNIT("tests\TestMemoryOutStream.cpp");
USEUNIT("tests\TestRequireMacrosWithExceptionsOff.cpp");
USEUNIT("tests\TestRequireMacrosWithExceptionsOn.cpp");
USEUNIT("tests\TestTest.cpp");
USEUNIT("tests\TestTestList.cpp");
USEUNIT("tests\TestTestMacros.cpp");
USEUNIT("tests\TestTestResults.cpp");
USEUNIT("tests\TestTestRunner.cpp");
USEUNIT("tests\TestTestSuite.cpp");
USEUNIT("tests\TestTimeConstraint.cpp");
USEUNIT("tests\TestTimeConstraintMacro.cpp");
USEUNIT("tests\TestUnitTestPP.cpp");
USEUNIT("tests\TestXmlTestReporter.cpp");
//---------------------------------------------------------------------------
This file is used by the project manager only and should be treated like the project file
main

View file

@ -1,102 +0,0 @@
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.05.03"/>
<PROJECT value="UnitTestcppTest.exe"/>
<OBJFILES value="tests\Main.obj tests\TestAssertHandler.obj tests\TestCheckMacros.obj
tests\TestChecks.obj tests\TestCompositeTestReporter.obj
tests\TestCurrentTest.obj tests\TestDeferredTestReporter.obj
tests\TestExceptions.obj tests\TestLongMacros.obj
tests\TestMemoryOutStream.obj tests\TestRequireMacrosWithExceptionsOff.obj
tests\TestRequireMacrosWithExceptionsOn.obj tests\TestTest.obj
tests\TestTestList.obj tests\TestTestMacros.obj tests\TestTestResults.obj
tests\TestTestRunner.obj tests\TestTestSuite.obj
tests\TestTimeConstraint.obj tests\TestTimeConstraintMacro.obj
tests\TestUnitTestPP.obj tests\TestXmlTestReporter.obj"/>
<RESFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES)"/>
<LIBFILES value="UnitTestcppLib.lib"/>
<LIBRARIES value=""/>
<SPARELIBS value="Vcl50.lib"/>
<PACKAGES value="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"/>
<PATHCPP value=".;tests"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="tlink32"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="NO_STRICT;_RTLDLL;USEPACKAGES"/>
<MAINSOURCE value="UnitTestcppTest.bpf"/>
<INCLUDEPATH value="tests;$(BCB)\include;$(BCB)\include\vcl"/>
<LIBPATH value="tests;$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
</MACROS>
<OPTIONS>
<CFLAG1 value="-tWC -tWM -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v
-vi- -c"/>
<PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value="-Tpe -ap -D&quot;&quot; -x -Gn -v"/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0x32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
</LINKER>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1033
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
HostApplication=
RemoteHost=
RemotePath=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>

View file

@ -1,196 +0,0 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
# ---------------------------------------------------------------------------
# IDE SECTION
# ---------------------------------------------------------------------------
# The following section of the project makefile is managed by the BCB IDE.
# It is recommended to use the IDE to change any of the values in this
# section.
# ---------------------------------------------------------------------------
VERSION = BCB.05.03
# ---------------------------------------------------------------------------
PROJECT = UnitTestcppTest.exe
OBJFILES = tests\Main.obj tests\TestAssertHandler.obj tests\TestCheckMacros.obj \
tests\TestChecks.obj tests\TestCompositeTestReporter.obj \
tests\TestCurrentTest.obj tests\TestDeferredTestReporter.obj \
tests\TestExceptions.obj tests\TestLongMacros.obj \
tests\TestMemoryOutStream.obj tests\TestRequireMacrosWithExceptionsOff.obj \
tests\TestRequireMacrosWithExceptionsOn.obj tests\TestTest.obj \
tests\TestTestList.obj tests\TestTestMacros.obj tests\TestTestResults.obj \
tests\TestTestRunner.obj tests\TestTestSuite.obj \
tests\TestTimeConstraint.obj tests\TestTimeConstraintMacro.obj \
tests\TestUnitTestPP.obj tests\TestXmlTestReporter.obj
RESFILES =
MAINSOURCE = UnitTestcppTest.bpf
RESDEPEN = $(RESFILES)
LIBFILES = UnitTestcppLib.lib
IDLFILES =
IDLGENFILES =
LIBRARIES =
PACKAGES = 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
SPARELIBS = Vcl50.lib
DEFFILE =
# ---------------------------------------------------------------------------
PATHCPP = .;tests
PATHASM = .;
PATHPAS = .;
PATHRC = .;
DEBUGLIBPATH = $(BCB)\lib\debug
RELEASELIBPATH = $(BCB)\lib\release
USERDEFINES = _DEBUG
SYSDEFINES = NO_STRICT;_RTLDLL;USEPACKAGES
INCLUDEPATH = tests;$(BCB)\include;$(BCB)\include\vcl
LIBPATH = tests;$(BCB)\lib\obj;$(BCB)\lib
WARNINGS= -w-par
# ---------------------------------------------------------------------------
CFLAG1 = -tWC -tWM -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v \
-vi- -c
IDLCFLAGS =
PFLAGS = -$YD -$W -$O- -v -JPHNE -M
RFLAGS =
AFLAGS = /mx /w2 /zd
LFLAGS = -Tpe -ap -D"" -x -Gn -v
# ---------------------------------------------------------------------------
ALLOBJ = c0x32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)
ALLRES = $(RESFILES)
ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib
# ---------------------------------------------------------------------------
!ifdef IDEOPTIONS
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
!endif
# ---------------------------------------------------------------------------
# MAKE SECTION
# ---------------------------------------------------------------------------
# This section of the project file is not used by the BCB IDE. It is for
# the benefit of building from the command-line using the MAKE utility.
# ---------------------------------------------------------------------------
.autodepend
# ---------------------------------------------------------------------------
!if "$(USERDEFINES)" != ""
AUSERDEFINES = -d$(USERDEFINES:;= -d)
!else
AUSERDEFINES =
!endif
!if !$d(BCC32)
BCC32 = bcc32
!endif
!if !$d(CPP32)
CPP32 = cpp32
!endif
!if !$d(DCC32)
DCC32 = dcc32
!endif
!if !$d(TASM32)
TASM32 = tasm32
!endif
!if !$d(LINKER)
LINKER = ilink32
!endif
!if !$d(BRCC32)
BRCC32 = brcc32
!endif
# ---------------------------------------------------------------------------
!if $d(PATHCPP)
.PATH.CPP = $(PATHCPP)
.PATH.C = $(PATHCPP)
!endif
!if $d(PATHPAS)
.PATH.PAS = $(PATHPAS)
!endif
!if $d(PATHASM)
.PATH.ASM = $(PATHASM)
!endif
!if $d(PATHRC)
.PATH.RC = $(PATHRC)
!endif
# ---------------------------------------------------------------------------
$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(BCB)\BIN\$(LINKER) @&&!
$(LFLAGS) -L$(LIBPATH) +
$(ALLOBJ), +
$(PROJECT),, +
$(ALLLIB), +
$(DEFFILE), +
$(ALLRES)
!
# ---------------------------------------------------------------------------
.pas.hpp:
$(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
.pas.obj:
$(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
.cpp.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
.c.obj:
$(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
.c.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
.cpp.i:
$(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
.asm.obj:
$(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
.rc.res:
$(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
# ---------------------------------------------------------------------------

View file

@ -1,9 +1,16 @@
#include "UnitTest++/UnitTestPP.h"
#ifdef __BORLANDC__
#include <vcl.h>
#include <math.h>
#include <float.h>
#endif
int main(int, char const *[])
{
#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
return UnitTest::RunAllTests();
}

View file

@ -257,6 +257,10 @@ namespace {
CHECK_EQUAL("53124", stream.GetText());
}
#ifndef __BORLANDC__
// 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;
@ -264,6 +268,7 @@ namespace {
stream.Clear();
CHECK_EQUAL("", stream.GetText());
}
#endif
#ifndef UNITTEST_MEMORYOUTSTREAM_IS_STD_OSTRINGSTREAM