mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 21:05:39 +02:00
Merge from mainline
This commit is contained in:
@@ -11,7 +11,6 @@ set(SELF_TEST_DIR ${CATCH_DIR}/projects/SelfTest)
|
||||
set(SOURCES
|
||||
${SELF_TEST_DIR}/ApproxTests.cpp
|
||||
${SELF_TEST_DIR}/BDDTests.cpp
|
||||
${SELF_TEST_DIR}/catch_self_test.cpp
|
||||
${SELF_TEST_DIR}/ClassTests.cpp
|
||||
${SELF_TEST_DIR}/CmdLineTests.cpp
|
||||
${SELF_TEST_DIR}/ConditionTests.cpp
|
||||
|
@@ -11,8 +11,8 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/simple",
|
||||
"Some simple comparisons between doubles"
|
||||
"Some simple comparisons between doubles",
|
||||
"[Approx]"
|
||||
)
|
||||
{
|
||||
double d = 1.23;
|
||||
@@ -29,8 +29,8 @@ TEST_CASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/epsilon",
|
||||
"Approximate comparisons with different epsilons"
|
||||
"Approximate comparisons with different epsilons",
|
||||
"[Approx]"
|
||||
)
|
||||
{
|
||||
double d = 1.23;
|
||||
@@ -42,8 +42,8 @@ TEST_CASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/float",
|
||||
"Approximate comparisons with floats"
|
||||
"Approximate comparisons with floats",
|
||||
"[Approx]"
|
||||
)
|
||||
{
|
||||
REQUIRE( 1.23f == Approx( 1.23f ) );
|
||||
@@ -53,8 +53,8 @@ TEST_CASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/int",
|
||||
"Approximate comparisons with ints"
|
||||
"Approximate comparisons with ints",
|
||||
"[Approx]"
|
||||
)
|
||||
{
|
||||
REQUIRE( 1 == Approx( 1 ) );
|
||||
@@ -64,8 +64,8 @@ TEST_CASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/mixed",
|
||||
"Approximate comparisons with mixed numeric types"
|
||||
"Approximate comparisons with mixed numeric types",
|
||||
"[Approx]"
|
||||
)
|
||||
{
|
||||
const double dZero = 0;
|
||||
@@ -82,8 +82,8 @@ TEST_CASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Approx/custom",
|
||||
"Use a custom approx"
|
||||
"Use a custom approx",
|
||||
"[Approx][custom]"
|
||||
)
|
||||
{
|
||||
double d = 1.23;
|
||||
|
@@ -4,7 +4,7 @@ CatchSelfTest is a <version> host application.
|
||||
Run with -? for options
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/TestClass/failingCase
|
||||
A METHOD_AS_TEST_CASE based test run that fails
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -15,7 +15,7 @@ with expansion:
|
||||
"hello" == "world"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/Fixture/failingCase
|
||||
A TEST_CASE_METHOD based test run that fails
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -26,7 +26,7 @@ with expansion:
|
||||
1 == 2
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/conditions/equality
|
||||
Equality checks that should fail]
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -97,7 +97,7 @@ with expansion:
|
||||
1.3 == Approx( 1.301 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/conditions/inequality
|
||||
Inequality checks that should fails
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -128,7 +128,7 @@ with expansion:
|
||||
5 != 5
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/conditions/ordered
|
||||
Ordering comparison checks that should fail
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -229,7 +229,7 @@ with expansion:
|
||||
"hello" <= "a"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/conditions/not
|
||||
'Not' checks that should fail
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -269,7 +269,7 @@ with expansion:
|
||||
!(1 == 1)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/explicit
|
||||
Expected exceptions that don't throw or unexpected exceptions fail the test
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -289,7 +289,7 @@ due to unexpected exception with message:
|
||||
expected exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/implicit
|
||||
When unchecked exceptions are thrown directly they are always failures
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -299,7 +299,7 @@ due to unexpected exception with message:
|
||||
unexpected exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/implicit/2
|
||||
An unchecked exception reports the line of the last assertion
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -310,7 +310,7 @@ due to unexpected exception with message:
|
||||
unexpected exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/implicit/3
|
||||
When unchecked exceptions are thrown from sections they are always failures
|
||||
section name
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
@@ -321,7 +321,7 @@ due to unexpected exception with message:
|
||||
unexpected exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/implicit/4
|
||||
When unchecked exceptions are thrown from functions they are always failures
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -332,7 +332,7 @@ due to unexpected exception with message:
|
||||
expected exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/custom
|
||||
Unexpected custom exceptions can be translated
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -342,7 +342,7 @@ due to unexpected exception with message:
|
||||
custom exception
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/custom/nothrow
|
||||
Custom exceptions can be translated when testing for nothrow
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -353,7 +353,7 @@ due to unexpected exception with message:
|
||||
custom exception - not std
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/custom/throw
|
||||
Custom exceptions can be translated when testing for throwing as something else
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -364,7 +364,7 @@ due to unexpected exception with message:
|
||||
custom exception - not std
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/exceptions/custom/double
|
||||
Unexpected exceptions can be translated
|
||||
-------------------------------------------------------------------------------
|
||||
ExceptionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -374,7 +374,7 @@ due to unexpected exception with message:
|
||||
3.14
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/message
|
||||
INFO and WARN do not abort tests
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -384,7 +384,7 @@ warning:
|
||||
this is a warning
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/message/info/1
|
||||
INFO gets logged on failure
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -398,7 +398,7 @@ with messages:
|
||||
so should this
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./mixed/message/info/2
|
||||
INFO gets logged on failure, even if captured before successful assertions
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -419,7 +419,7 @@ with message:
|
||||
and this, but later
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/message/fail
|
||||
FAIL aborts the test
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -429,7 +429,7 @@ explicitly with message:
|
||||
This is a failure
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/message/sections
|
||||
Output from all sections is reported
|
||||
one
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
@@ -440,7 +440,7 @@ explicitly with message:
|
||||
Message from section one
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/message/sections
|
||||
Output from all sections is reported
|
||||
two
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
@@ -453,7 +453,7 @@ explicitly with message:
|
||||
Message from section one
|
||||
Message from section two
|
||||
-------------------------------------------------------------------------------
|
||||
./mixed/message/scoped
|
||||
SCOPED_INFO is reset for each loop
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -477,7 +477,19 @@ explicitly with message:
|
||||
Previous info should not be seen
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./mixed/Misc/Sections/nested2
|
||||
sends information to INFO
|
||||
-------------------------------------------------------------------------------
|
||||
MessageTests.cpp:<line number>
|
||||
...............................................................................
|
||||
|
||||
MessageTests.cpp:<line number>: FAILED:
|
||||
REQUIRE( false )
|
||||
with messages:
|
||||
hi
|
||||
i := 7
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
more nested SECTION tests
|
||||
s1
|
||||
s2
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -490,7 +502,7 @@ with expansion:
|
||||
1 == 2
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./mixed/Misc/Sections/loops
|
||||
looped SECTION tests
|
||||
s1
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
@@ -502,7 +514,7 @@ with expansion:
|
||||
0 > 1
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./mixed/Misc/loops
|
||||
looped tests
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -552,19 +564,7 @@ with message:
|
||||
Some information
|
||||
An error
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/info
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
|
||||
MiscTests.cpp:<line number>: FAILED:
|
||||
REQUIRE( false )
|
||||
with messages:
|
||||
hi
|
||||
i := 7
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/checkedif
|
||||
checkedIf, failing
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -580,7 +580,7 @@ with expansion:
|
||||
false
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/checkedelse
|
||||
checkedElse, failing
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -596,7 +596,7 @@ with expansion:
|
||||
false
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./manual/onechar
|
||||
send a single char to INFO
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -607,7 +607,7 @@ with message:
|
||||
3
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/matchers/Contains
|
||||
Contains string matcher
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -618,7 +618,7 @@ with expansion:
|
||||
"this string contains 'abc' as a substring" contains: "not there"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/matchers/StartsWith
|
||||
StartsWith string matcher
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -629,7 +629,7 @@ with expansion:
|
||||
"this string contains 'abc' as a substring" starts with: "string"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/matchers/EndsWith
|
||||
EndsWith string matcher
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -640,7 +640,7 @@ with expansion:
|
||||
"this string contains 'abc' as a substring" ends with: "this"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/matchers/Equals
|
||||
Equals string matcher
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -661,7 +661,7 @@ warning:
|
||||
This one ran
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/CatchSectionInfiniteLoop
|
||||
A couple of nested sections followed by a failure
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -671,7 +671,7 @@ explicitly with message:
|
||||
to infinity and beyond
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/CatchSectionInfiniteLoop
|
||||
A couple of nested sections followed by a failure
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -681,7 +681,7 @@ explicitly with message:
|
||||
to infinity and beyond
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/CatchSectionInfiniteLoop
|
||||
A couple of nested sections followed by a failure
|
||||
-------------------------------------------------------------------------------
|
||||
MiscTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -690,18 +690,10 @@ MiscTests.cpp:<line number>: FAILED:
|
||||
explicitly with message:
|
||||
to infinity and beyond
|
||||
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
An error
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
An error
|
||||
hello
|
||||
hello
|
||||
-------------------------------------------------------------------------------
|
||||
./inprogress/failing/Tricky/trailing expression
|
||||
Where the is more to the expression after the RHS[failing]
|
||||
-------------------------------------------------------------------------------
|
||||
TrickyTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -712,7 +704,7 @@ warning:
|
||||
error
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./inprogress/failing/Tricky/compound lhs
|
||||
Where the LHS is not a simple value[failing]
|
||||
-------------------------------------------------------------------------------
|
||||
TrickyTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -723,7 +715,7 @@ warning:
|
||||
error
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/Tricky/non streamable type
|
||||
A failing expression with a non streamable type is still captured[failing]
|
||||
-------------------------------------------------------------------------------
|
||||
TrickyTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -739,7 +731,7 @@ with expansion:
|
||||
{?} == {?}
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/string literals
|
||||
string literals of different sizes can be compared[failing]
|
||||
-------------------------------------------------------------------------------
|
||||
TrickyTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -750,5 +742,5 @@ with expansion:
|
||||
"first" == "second"
|
||||
|
||||
===============================================================================
|
||||
122 test cases - 35 failed (753 assertions - 90 failed)
|
||||
120 test cases - 35 failed (673 assertions - 90 failed)
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@ CatchSelfTest is a <version> host application.
|
||||
Run with -? for options
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/simple
|
||||
Some simple comparisons between doubles
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -46,7 +46,7 @@ with expansion:
|
||||
Approx( 1.23 ) != 1.24
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/epsilon
|
||||
Approximate comparisons with different epsilons
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -64,7 +64,7 @@ with expansion:
|
||||
1.23 == Approx( 1.231 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/float
|
||||
Approximate comparisons with floats
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -82,7 +82,7 @@ with expansion:
|
||||
0 == Approx( 0 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/int
|
||||
Approximate comparisons with ints
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -96,7 +96,7 @@ PASSED:
|
||||
REQUIRE( 0 == Approx( 0 ) )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/mixed
|
||||
Approximate comparisons with mixed numeric types
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -132,7 +132,7 @@ with expansion:
|
||||
1.234 == Approx( 1.234 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Approx/custom
|
||||
Use a custom approx
|
||||
-------------------------------------------------------------------------------
|
||||
ApproxTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -204,7 +204,7 @@ with expansion:
|
||||
3.1428571429 != Approx( 3.141 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/TestClass/succeedingCase
|
||||
A METHOD_AS_TEST_CASE based test run that succeeds
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -216,7 +216,7 @@ with expansion:
|
||||
"hello" == "hello"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/TestClass/failingCase
|
||||
A METHOD_AS_TEST_CASE based test run that fails
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -227,7 +227,7 @@ with expansion:
|
||||
"hello" == "world"
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/Fixture/succeedingCase
|
||||
A TEST_CASE_METHOD based test run that succeeds
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -239,7 +239,7 @@ with expansion:
|
||||
1 == 1
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/Fixture/failingCase
|
||||
A TEST_CASE_METHOD based test run that fails
|
||||
-------------------------------------------------------------------------------
|
||||
ClassTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -250,7 +250,7 @@ with expansion:
|
||||
1 == 2
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./succeeding/conditions/equality
|
||||
Equality checks that should succeed
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
@@ -298,7 +298,7 @@ with expansion:
|
||||
1.3 == Approx( 1.3 )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
./failing/conditions/equality
|
||||
Equality checks that should fail]
|
||||
-------------------------------------------------------------------------------
|
||||
ConditionTests.cpp:<line number>
|
||||
...............................................................................
|
||||
|
@@ -1,26 +1,26 @@
|
||||
<testsuites>
|
||||
<testsuite name="~_" errors="10" failures="99" tests="772" hostname="tbd" time="{duration}" timestamp="tbd">
|
||||
<testcase classname="global" name="./succeeding/Approx/simple" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Approx/epsilon" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Approx/float" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Approx/int" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Approx/mixed" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Approx/custom" time="{duration}"/>
|
||||
<testsuite name="~_" errors="10" failures="99" tests="692" hostname="tbd" time="{duration}" timestamp="tbd">
|
||||
<testcase classname="global" name="Some simple comparisons between doubles" time="{duration}"/>
|
||||
<testcase classname="global" name="Approximate comparisons with different epsilons" time="{duration}"/>
|
||||
<testcase classname="global" name="Approximate comparisons with floats" time="{duration}"/>
|
||||
<testcase classname="global" name="Approximate comparisons with ints" time="{duration}"/>
|
||||
<testcase classname="global" name="Approximate comparisons with mixed numeric types" time="{duration}"/>
|
||||
<testcase classname="global" name="Use a custom approx" time="{duration}"/>
|
||||
<testcase classname="global" name="Approximate PI" time="{duration}"/>
|
||||
<testcase classname="TestClass" name="./succeeding/TestClass/succeedingCase" time="{duration}"/>
|
||||
<testcase classname="TestClass" name="./failing/TestClass/failingCase" time="{duration}">
|
||||
<testcase classname="TestClass" name="A METHOD_AS_TEST_CASE based test run that succeeds" time="{duration}"/>
|
||||
<testcase classname="TestClass" name="A METHOD_AS_TEST_CASE based test run that fails" time="{duration}">
|
||||
<failure message=""hello" == "world"" type="REQUIRE">
|
||||
ClassTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="Fixture" name="./succeeding/Fixture/succeedingCase" time="{duration}"/>
|
||||
<testcase classname="Fixture" name="./failing/Fixture/failingCase" time="{duration}">
|
||||
<testcase classname="Fixture" name="A TEST_CASE_METHOD based test run that succeeds" time="{duration}"/>
|
||||
<testcase classname="Fixture" name="A TEST_CASE_METHOD based test run that fails" time="{duration}">
|
||||
<failure message="1 == 2" type="REQUIRE">
|
||||
ClassTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/conditions/equality" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/conditions/equality" time="{duration}">
|
||||
<testcase classname="global" name="Equality checks that should succeed" time="{duration}"/>
|
||||
<testcase classname="global" name="Equality checks that should fail]" time="{duration}">
|
||||
<failure message="7 == 6" type="CHECK">
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -61,8 +61,8 @@ ConditionTests.cpp:<line number>
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/conditions/inequality" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/conditions/inequality" time="{duration}">
|
||||
<testcase classname="global" name="Inequality checks that should succeed" time="{duration}"/>
|
||||
<testcase classname="global" name="Inequality checks that should fails" time="{duration}">
|
||||
<failure message="7 != 7" type="CHECK">
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -79,8 +79,8 @@ ConditionTests.cpp:<line number>
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/conditions/ordered" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/conditions/ordered" time="{duration}">
|
||||
<testcase classname="global" name="Ordering comparison checks that should succeed" time="{duration}"/>
|
||||
<testcase classname="global" name="Ordering comparison checks that should fail" time="{duration}">
|
||||
<failure message="7 > 7" type="CHECK">
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -139,14 +139,14 @@ ConditionTests.cpp:<line number>
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/conditions/int literals" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions//long_to_unsigned_x" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions/const ints to int literal" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions/negative ints" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions/computed ints" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions/ptr" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/conditions/not" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/conditions/not" time="{duration}">
|
||||
<testcase classname="global" name="Comparisons with int literals don't warn when mixing signed/ unsigned" time="{duration}"/>
|
||||
<testcase classname="global" name="comparisons between int variables" time="{duration}"/>
|
||||
<testcase classname="global" name="comparisons between const int variables" time="{duration}"/>
|
||||
<testcase classname="global" name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" time="{duration}"/>
|
||||
<testcase classname="global" name="Comparisons between ints where one side is computed" time="{duration}"/>
|
||||
<testcase classname="global" name="Pointers can be compared to null" time="{duration}"/>
|
||||
<testcase classname="global" name="'Not' checks that should succeed" time="{duration}"/>
|
||||
<testcase classname="global" name="'Not' checks that should fail" time="{duration}">
|
||||
<failure message="false != false" type="CHECK">
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -172,8 +172,8 @@ ConditionTests.cpp:<line number>
|
||||
ConditionTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/exceptions/explicit" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/exceptions/explicit" time="{duration}">
|
||||
<testcase classname="global" name="When checked exceptions are thrown they can be expected or unexpected" time="{duration}"/>
|
||||
<testcase classname="global" name="Expected exceptions that don't throw or unexpected exceptions fail the test" time="{duration}">
|
||||
<error message="thisThrows()" type="CHECK_THROWS_AS">
|
||||
expected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
@@ -186,67 +186,67 @@ expected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/implicit" time="{duration}">
|
||||
<testcase classname="global" name="When unchecked exceptions are thrown directly they are always failures" time="{duration}">
|
||||
<error type="TEST_CASE">
|
||||
unexpected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/implicit/2" time="{duration}">
|
||||
<testcase classname="global" name="An unchecked exception reports the line of the last assertion" time="{duration}">
|
||||
<error message="{Unknown expression after the reported line}">
|
||||
unexpected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="./failing/exceptions/implicit/3" name="section name" time="{duration}">
|
||||
<testcase classname="When unchecked exceptions are thrown from sections they are always failures" name="section name" time="{duration}">
|
||||
<error type="TEST_CASE">
|
||||
unexpected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/implicit/4" time="{duration}">
|
||||
<testcase classname="global" name="When unchecked exceptions are thrown from functions they are always failures" time="{duration}">
|
||||
<error message="thisThrows() == 0" type="CHECK">
|
||||
expected exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/custom" time="{duration}">
|
||||
<testcase classname="global" name="Unexpected custom exceptions can be translated" time="{duration}">
|
||||
<error type="TEST_CASE">
|
||||
custom exception
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/custom/nothrow" time="{duration}">
|
||||
<testcase classname="global" name="Custom exceptions can be translated when testing for nothrow" time="{duration}">
|
||||
<error message="throwCustom()" type="REQUIRE_NOTHROW">
|
||||
custom exception - not std
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/custom/throw" time="{duration}">
|
||||
<testcase classname="global" name="Custom exceptions can be translated when testing for throwing as something else" time="{duration}">
|
||||
<error message="throwCustom()" type="REQUIRE_THROWS_AS">
|
||||
custom exception - not std
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/exceptions/custom/double" time="{duration}">
|
||||
<testcase classname="global" name="Unexpected exceptions can be translated" time="{duration}">
|
||||
<error type="TEST_CASE">
|
||||
3.14
|
||||
ExceptionTests.cpp:<line number>
|
||||
</error>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/exceptions/notimplemented" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/generators/1" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/generators/2" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/message" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/succeed" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/message/info/1" time="{duration}">
|
||||
<testcase classname="global" name="NotImplemented exception" time="{duration}"/>
|
||||
<testcase classname="global" name="Generators over two ranges" time="{duration}"/>
|
||||
<testcase classname="global" name="Generator over a range of pairs" time="{duration}"/>
|
||||
<testcase classname="global" name="INFO and WARN do not abort tests" time="{duration}"/>
|
||||
<testcase classname="global" name="SUCCEED counts as a test pass" time="{duration}"/>
|
||||
<testcase classname="global" name="INFO gets logged on failure" time="{duration}">
|
||||
<failure message="2 == 1" type="REQUIRE">
|
||||
this message should be logged
|
||||
so should this
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./mixed/message/info/2" time="{duration}">
|
||||
<testcase classname="global" name="INFO gets logged on failure, even if captured before successful assertions" time="{duration}">
|
||||
<failure message="2 == 1" type="CHECK">
|
||||
this message should be logged
|
||||
MessageTests.cpp:<line number>
|
||||
@@ -256,61 +256,68 @@ and this, but later
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/message/fail" time="{duration}">
|
||||
<testcase classname="global" name="FAIL aborts the test" time="{duration}">
|
||||
<failure type="FAIL">
|
||||
This is a failure
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./failing/message/sections" name="one" time="{duration}">
|
||||
<testcase classname="Output from all sections is reported" name="one" time="{duration}">
|
||||
<failure type="FAIL">
|
||||
Message from section one
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./failing/message/sections" name="two" time="{duration}">
|
||||
<testcase classname="Output from all sections is reported" name="two" time="{duration}">
|
||||
<failure type="FAIL">
|
||||
Message from section two
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./succeeding/message/sections/stdout" name="two" time="{duration}">
|
||||
<testcase classname="Standard output from all sections is reported" name="two" time="{duration}">
|
||||
<system-out>
|
||||
Message from section one
|
||||
Message from section two
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./mixed/message/scoped" time="{duration}">
|
||||
<testcase classname="global" name="SCOPED_INFO is reset for each loop" time="{duration}">
|
||||
<failure message="10 < 10" type="REQUIRE">
|
||||
current counter 10
|
||||
i := 10
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/nofail" time="{duration}"/>
|
||||
<testcase classname="global" name="The NO_FAIL macro reports a failure but does not fail the test" time="{duration}"/>
|
||||
<testcase classname="global" name="just failure" time="{duration}">
|
||||
<failure type="FAIL">
|
||||
Previous info should not be seen
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./succeeding/Misc/Sections" name="s1" time="{duration}"/>
|
||||
<testcase classname="./succeeding/Misc/Sections" name="s2" time="{duration}"/>
|
||||
<testcase classname="./succeeding/Misc/Sections/nested" name="s1" time="{duration}"/>
|
||||
<testcase classname="./succeeding/Misc/Sections/nested" name="s1/s2" time="{duration}"/>
|
||||
<testcase classname="./mixed/Misc/Sections/nested2" name="s1/s2" time="{duration}">
|
||||
<testcase classname="global" name="sends information to INFO" time="{duration}">
|
||||
<failure message="false" type="REQUIRE">
|
||||
hi
|
||||
i := 7
|
||||
MessageTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="random SECTION tests" name="s1" time="{duration}"/>
|
||||
<testcase classname="random SECTION tests" name="s2" time="{duration}"/>
|
||||
<testcase classname="nested SECTION tests" name="s1" time="{duration}"/>
|
||||
<testcase classname="nested SECTION tests" name="s1/s2" time="{duration}"/>
|
||||
<testcase classname="more nested SECTION tests" name="s1/s2" time="{duration}">
|
||||
<failure message="1 == 2" type="REQUIRE">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./mixed/Misc/Sections/nested2" name="s1/s3" time="{duration}"/>
|
||||
<testcase classname="./mixed/Misc/Sections/nested2" name="s1/s4" time="{duration}"/>
|
||||
<testcase classname="./mixed/Misc/Sections/loops" name="s1" time="{duration}">
|
||||
<testcase classname="more nested SECTION tests" name="s1/s3" time="{duration}"/>
|
||||
<testcase classname="more nested SECTION tests" name="s1/s4" time="{duration}"/>
|
||||
<testcase classname="looped SECTION tests" name="s1" time="{duration}">
|
||||
<failure message="0 > 1" type="CHECK">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./mixed/Misc/loops" time="{duration}">
|
||||
<testcase classname="global" name="looped tests" time="{duration}">
|
||||
<failure message="1 == 0" type="CHECK">
|
||||
Testing if fib[0] (1) is even
|
||||
MiscTests.cpp:<line number>
|
||||
@@ -336,7 +343,7 @@ Testing if fib[7] (21) is even
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/Misc/stdout,stderr" time="{duration}">
|
||||
<testcase classname="global" name="Sends stuff to stdout and stderr" time="{duration}">
|
||||
<system-out>
|
||||
Some information
|
||||
</system-out>
|
||||
@@ -344,16 +351,9 @@ Some information
|
||||
An error
|
||||
</system-err>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/Misc/null strings" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/info" time="{duration}">
|
||||
<failure message="false" type="REQUIRE">
|
||||
hi
|
||||
i := 7
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/checkedif" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/checkedif" time="{duration}">
|
||||
<testcase classname="global" name="null strings" time="{duration}"/>
|
||||
<testcase classname="global" name="checkedIf" time="{duration}"/>
|
||||
<testcase classname="global" name="checkedIf, failing" time="{duration}">
|
||||
<failure message="false" type="CHECKED_IF">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -361,8 +361,8 @@ MiscTests.cpp:<line number>
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/checkedelse" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/checkedelse" time="{duration}">
|
||||
<testcase classname="global" name="checkedElse" time="{duration}"/>
|
||||
<testcase classname="global" name="checkedElse, failing" time="{duration}">
|
||||
<failure message="false" type="CHECKED_ELSE">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -370,38 +370,38 @@ MiscTests.cpp:<line number>
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./manual/onechar" time="{duration}">
|
||||
<testcase classname="global" name="send a single char to INFO" time="{duration}">
|
||||
<failure message="false" type="REQUIRE">
|
||||
3
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/atomic if" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/matchers" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/matchers/Contains" time="{duration}">
|
||||
<testcase classname="global" name="atomic if" time="{duration}"/>
|
||||
<testcase classname="global" name="String matchers" time="{duration}"/>
|
||||
<testcase classname="global" name="Contains string matcher" time="{duration}">
|
||||
<failure message=""this string contains 'abc' as a substring" contains: "not there"" type="CHECK_THAT">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/matchers/StartsWith" time="{duration}">
|
||||
<testcase classname="global" name="StartsWith string matcher" time="{duration}">
|
||||
<failure message=""this string contains 'abc' as a substring" starts with: "string"" type="CHECK_THAT">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/matchers/EndsWith" time="{duration}">
|
||||
<testcase classname="global" name="EndsWith string matcher" time="{duration}">
|
||||
<failure message=""this string contains 'abc' as a substring" ends with: "this"" type="CHECK_THAT">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/matchers/Equals" time="{duration}">
|
||||
<testcase classname="global" name="Equals string matcher" time="{duration}">
|
||||
<failure message=""this string contains 'abc' as a substring" equals: "something else"" type="CHECK_THAT">
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="string" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/matchers/AllOf" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/matchers/AnyOf" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/matchers/Equals" time="{duration}"/>
|
||||
<testcase classname="global" name="Equals string matcher, with NULL" time="{duration}"/>
|
||||
<testcase classname="global" name="AllOf matcher" time="{duration}"/>
|
||||
<testcase classname="global" name="AnyOf matcher" time="{duration}"/>
|
||||
<testcase classname="global" name="Equals" time="{duration}"/>
|
||||
<testcase classname="global" name="Factorials are computed" time="{duration}"/>
|
||||
<testcase classname="global" name="Nice descriptive name" time="{duration}"/>
|
||||
<testcase classname="vectors can be sized and resized" name="root" time="{duration}"/>
|
||||
@@ -410,7 +410,7 @@ MiscTests.cpp:<line number>
|
||||
<testcase classname="vectors can be sized and resized" name="resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}"/>
|
||||
<testcase classname="vectors can be sized and resized" name="reserving bigger changes capacity but not size" time="{duration}"/>
|
||||
<testcase classname="vectors can be sized and resized" name="reserving smaller does not change size or capacity" time="{duration}"/>
|
||||
<testcase classname="./failing/CatchSectionInfiniteLoop" name="root" time="{duration}">
|
||||
<testcase classname="A couple of nested sections followed by a failure" name="root" time="{duration}">
|
||||
<failure type="FAIL">
|
||||
to infinity and beyond
|
||||
MiscTests.cpp:<line number>
|
||||
@@ -424,25 +424,7 @@ to infinity and beyond
|
||||
MiscTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="./failing/CatchSectionInfiniteLoop" name="Outer/Inner" time="{duration}"/>
|
||||
<testcase classname="selftest/main" name="selftest/expected result/selftest/expected result/failing tests" time="{duration}"/>
|
||||
<testcase classname="selftest/main" name="selftest/expected result/selftest/expected result/succeeding tests" time="{duration}"/>
|
||||
<testcase classname="selftest/main" name="selftest/test counts/selftest/test counts/succeeding tests" time="{duration}"/>
|
||||
<testcase classname="selftest/main" name="selftest/test counts/selftest/test counts/failing tests" time="{duration}">
|
||||
<system-out>
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
</system-out>
|
||||
<system-err>
|
||||
An error
|
||||
An error
|
||||
</system-err>
|
||||
</testcase>
|
||||
<testcase classname="global" name="meta/Misc/Sections" time="{duration}"/>
|
||||
<testcase classname="A couple of nested sections followed by a failure" name="Outer/Inner" time="{duration}"/>
|
||||
<testcase classname="Process can be configured on command line" name="default - no arguments" time="{duration}"/>
|
||||
<testcase classname="Process can be configured on command line" name="test lists/1 test" time="{duration}"/>
|
||||
<testcase classname="Process can be configured on command line" name="test lists/Specify one test case exclusion using exclude:" time="{duration}"/>
|
||||
@@ -493,10 +475,10 @@ hello
|
||||
</testcase>
|
||||
<testcase classname="global" name="Text can be formatted using the Text class" time="{duration}"/>
|
||||
<testcase classname="global" name="Long text is truncted" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/Tricky/std::pair" time="{duration}"/>
|
||||
<testcase classname="global" name="./inprogress/failing/Tricky/trailing expression" time="{duration}"/>
|
||||
<testcase classname="global" name="./inprogress/failing/Tricky/compound lhs" time="{duration}"/>
|
||||
<testcase classname="global" name="./failing/Tricky/non streamable type" time="{duration}">
|
||||
<testcase classname="global" name="Parsing a std::pair" time="{duration}"/>
|
||||
<testcase classname="global" name="Where the is more to the expression after the RHS[failing]" time="{duration}"/>
|
||||
<testcase classname="global" name="Where the LHS is not a simple value[failing]" time="{duration}"/>
|
||||
<testcase classname="global" name="A failing expression with a non streamable type is still captured[failing]" time="{duration}">
|
||||
<failure message="0x<hex digits> == 0x<hex digits>" type="CHECK">
|
||||
TrickyTests.cpp:<line number>
|
||||
</failure>
|
||||
@@ -504,22 +486,22 @@ TrickyTests.cpp:<line number>
|
||||
TrickyTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./failing/string literals" time="{duration}">
|
||||
<testcase classname="global" name="string literals of different sizes can be compared[failing]" time="{duration}">
|
||||
<failure message=""first" == "second"" type="REQUIRE">
|
||||
TrickyTests.cpp:<line number>
|
||||
</failure>
|
||||
</testcase>
|
||||
<testcase classname="global" name="./succeeding/side-effects" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/koenig" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/non-const==" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/enum/bits" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/boolean member" time="{duration}"/>
|
||||
<testcase classname="./succeeding/unimplemented static bool" name="compare to true" time="{duration}"/>
|
||||
<testcase classname="./succeeding/unimplemented static bool" name="compare to false" time="{duration}"/>
|
||||
<testcase classname="./succeeding/unimplemented static bool" name="negation" time="{duration}"/>
|
||||
<testcase classname="./succeeding/unimplemented static bool" name="double negation" time="{duration}"/>
|
||||
<testcase classname="./succeeding/unimplemented static bool" name="direct" time="{duration}"/>
|
||||
<testcase classname="global" name="./succeeding/SafeBool" time="{duration}"/>
|
||||
<testcase classname="global" name="An expression with side-effects should only be evaluated once" time="{duration}"/>
|
||||
<testcase classname="global" name="Operators at different namespace levels not hijacked by Koenig lookup" time="{duration}"/>
|
||||
<testcase classname="global" name="Demonstrate that a non-const == is not used" time="{duration}"/>
|
||||
<testcase classname="global" name="Test enum bit values" time="{duration}"/>
|
||||
<testcase classname="global" name="boolean member" time="{duration}"/>
|
||||
<testcase classname="(unimplemented) static bools can be evaluated" name="compare to true" time="{duration}"/>
|
||||
<testcase classname="(unimplemented) static bools can be evaluated" name="compare to false" time="{duration}"/>
|
||||
<testcase classname="(unimplemented) static bools can be evaluated" name="negation" time="{duration}"/>
|
||||
<testcase classname="(unimplemented) static bools can be evaluated" name="double negation" time="{duration}"/>
|
||||
<testcase classname="(unimplemented) static bools can be evaluated" name="direct" time="{duration}"/>
|
||||
<testcase classname="global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}"/>
|
||||
<testcase classname="Assertions then sections" name="root" time="{duration}"/>
|
||||
<testcase classname="Assertions then sections" name="A section" time="{duration}"/>
|
||||
<testcase classname="Assertions then sections" name="A section/Another section" time="{duration}"/>
|
||||
@@ -563,18 +545,10 @@ TrickyTests.cpp:<line number>
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
Message from section one
|
||||
Message from section two
|
||||
Some information
|
||||
hello
|
||||
hello
|
||||
</system-out>
|
||||
<system-err>
|
||||
An error
|
||||
An error
|
||||
An error
|
||||
</system-err>
|
||||
</testsuite>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<Catch name="CatchSelfTest">
|
||||
<Group name="~_">
|
||||
<TestCase name="./succeeding/Approx/simple">
|
||||
<TestCase name="Some simple comparisons between doubles">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
d == Approx( 1.23 )
|
||||
@@ -51,7 +51,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Approx/epsilon">
|
||||
<TestCase name="Approximate comparisons with different epsilons">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
d != Approx( 1.231 )
|
||||
@@ -70,7 +70,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Approx/float">
|
||||
<TestCase name="Approximate comparisons with floats">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
1.23f == Approx( 1.23f )
|
||||
@@ -89,7 +89,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Approx/int">
|
||||
<TestCase name="Approximate comparisons with ints">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
1 == Approx( 1 )
|
||||
@@ -108,7 +108,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Approx/mixed">
|
||||
<TestCase name="Approximate comparisons with mixed numeric types">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
1.0f == Approx( 1 )
|
||||
@@ -151,7 +151,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Approx/custom">
|
||||
<TestCase name="Use a custom approx">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
|
||||
<Original>
|
||||
d == approx( 1.23 )
|
||||
@@ -237,7 +237,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/TestClass/succeedingCase">
|
||||
<TestCase name="A METHOD_AS_TEST_CASE based test run that succeeds">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ClassTests.cpp" >
|
||||
<Original>
|
||||
s == "hello"
|
||||
@@ -248,7 +248,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/TestClass/failingCase">
|
||||
<TestCase name="A METHOD_AS_TEST_CASE based test run that fails">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ClassTests.cpp" >
|
||||
<Original>
|
||||
s == "world"
|
||||
@@ -259,7 +259,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Fixture/succeedingCase">
|
||||
<TestCase name="A TEST_CASE_METHOD based test run that succeeds">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ClassTests.cpp" >
|
||||
<Original>
|
||||
m_a == 1
|
||||
@@ -270,7 +270,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/Fixture/failingCase">
|
||||
<TestCase name="A TEST_CASE_METHOD based test run that fails">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ClassTests.cpp" >
|
||||
<Original>
|
||||
m_a == 2
|
||||
@@ -281,7 +281,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/equality">
|
||||
<TestCase name="Equality checks that should succeed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven == 7
|
||||
@@ -340,7 +340,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/conditions/equality">
|
||||
<TestCase name="Equality checks that should fail]">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven == 6
|
||||
@@ -447,7 +447,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/inequality">
|
||||
<TestCase name="Inequality checks that should succeed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven != 6
|
||||
@@ -538,7 +538,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/conditions/inequality">
|
||||
<TestCase name="Inequality checks that should fails">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven != 7
|
||||
@@ -581,7 +581,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/ordered">
|
||||
<TestCase name="Ordering comparison checks that should succeed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven < 8
|
||||
@@ -720,7 +720,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/conditions/ordered">
|
||||
<TestCase name="Ordering comparison checks that should fail">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
data.int_seven > 7
|
||||
@@ -875,7 +875,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/int literals">
|
||||
<TestCase name="Comparisons with int literals don't warn when mixing signed/ unsigned">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
i == 1
|
||||
@@ -982,7 +982,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions//long_to_unsigned_x">
|
||||
<TestCase name="comparisons between int variables">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
long_var == unsigned_char_var
|
||||
@@ -1017,7 +1017,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/const ints to int literal">
|
||||
<TestCase name="comparisons between const int variables">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
unsigned_char_var == 1
|
||||
@@ -1052,7 +1052,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/negative ints">
|
||||
<TestCase name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
( -1 > 2u )
|
||||
@@ -1103,7 +1103,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/computed ints">
|
||||
<TestCase name="Comparisons between ints where one side is computed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
54 == 6*9
|
||||
@@ -1114,7 +1114,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/ptr">
|
||||
<TestCase name="Pointers can be compared to null">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
p == __null
|
||||
@@ -1181,7 +1181,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/conditions/not">
|
||||
<TestCase name="'Not' checks that should succeed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
false == false
|
||||
@@ -1248,7 +1248,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/conditions/not">
|
||||
<TestCase name="'Not' checks that should fail">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
|
||||
<Original>
|
||||
false != false
|
||||
@@ -1315,7 +1315,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/exceptions/explicit">
|
||||
<TestCase name="When checked exceptions are thrown they can be expected or unexpected">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
thisThrows()
|
||||
@@ -1342,7 +1342,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/explicit">
|
||||
<TestCase name="Expected exceptions that don't throw or unexpected exceptions fail the test">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
thisThrows()
|
||||
@@ -1375,13 +1375,13 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/implicit">
|
||||
<TestCase name="When unchecked exceptions are thrown directly they are always failures">
|
||||
<Exception filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
unexpected exception
|
||||
</Exception>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/implicit/2">
|
||||
<TestCase name="An unchecked exception reports the line of the last assertion">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
1 == 1
|
||||
@@ -1403,7 +1403,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/implicit/3">
|
||||
<TestCase name="When unchecked exceptions are thrown from sections they are always failures">
|
||||
<Section name="section name">
|
||||
<Exception filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
unexpected exception
|
||||
@@ -1412,7 +1412,7 @@
|
||||
</Section>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/implicit/4">
|
||||
<TestCase name="When unchecked exceptions are thrown from functions they are always failures">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
thisThrows() == 0
|
||||
@@ -1426,16 +1426,16 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/exceptions/implicit">
|
||||
<TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test">
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/custom">
|
||||
<TestCase name="Unexpected custom exceptions can be translated">
|
||||
<Exception filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
custom exception
|
||||
</Exception>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/custom/nothrow">
|
||||
<TestCase name="Custom exceptions can be translated when testing for nothrow">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
throwCustom()
|
||||
@@ -1449,7 +1449,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/custom/throw">
|
||||
<TestCase name="Custom exceptions can be translated when testing for throwing as something else">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
throwCustom()
|
||||
@@ -1463,13 +1463,13 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/exceptions/custom/double">
|
||||
<TestCase name="Unexpected exceptions can be translated">
|
||||
<Exception filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
3.14
|
||||
</Exception>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/exceptions/notimplemented">
|
||||
<TestCase name="NotImplemented exception">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ExceptionTests.cpp" >
|
||||
<Original>
|
||||
thisFunctionNotImplemented( 7 )
|
||||
@@ -1480,7 +1480,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/generators/1">
|
||||
<TestCase name="Generators over two ranges">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/GeneratorTests.cpp" >
|
||||
<Original>
|
||||
multiply( i, 2 ) == i*2
|
||||
@@ -2635,7 +2635,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/generators/2">
|
||||
<TestCase name="Generator over a range of pairs">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/GeneratorTests.cpp" >
|
||||
<Original>
|
||||
i->first == i->second-1
|
||||
@@ -2654,7 +2654,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/message">
|
||||
<TestCase name="INFO and WARN do not abort tests">
|
||||
<Info>
|
||||
this is a message
|
||||
</Info>
|
||||
@@ -2663,10 +2663,10 @@
|
||||
</Warning>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/succeed">
|
||||
<TestCase name="SUCCEED counts as a test pass">
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/message/info/1">
|
||||
<TestCase name="INFO gets logged on failure">
|
||||
<Info>
|
||||
this message should be logged
|
||||
</Info>
|
||||
@@ -2683,7 +2683,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./mixed/message/info/2">
|
||||
<TestCase name="INFO gets logged on failure, even if captured before successful assertions">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MessageTests.cpp" >
|
||||
<Original>
|
||||
a == 2
|
||||
@@ -2724,13 +2724,13 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/message/fail">
|
||||
<TestCase name="FAIL aborts the test">
|
||||
<Failure>
|
||||
This is a failure
|
||||
</Failure>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/message/sections">
|
||||
<TestCase name="Output from all sections is reported">
|
||||
<Section name="one">
|
||||
<Failure>
|
||||
Message from section one
|
||||
@@ -2745,7 +2745,7 @@
|
||||
</Section>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/message/sections/stdout">
|
||||
<TestCase name="Standard output from all sections is reported">
|
||||
<Section name="one">
|
||||
<OverallResults successes="0" failures="1"/>
|
||||
</Section>
|
||||
@@ -2754,7 +2754,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./mixed/message/scoped">
|
||||
<TestCase name="SCOPED_INFO is reset for each loop">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MessageTests.cpp" >
|
||||
<Original>
|
||||
i < 10
|
||||
@@ -2851,7 +2851,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/nofail">
|
||||
<TestCase name="The NO_FAIL macro reports a failure but does not fail the test">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MessageTests.cpp" >
|
||||
<Original>
|
||||
1 == 2
|
||||
@@ -2871,7 +2871,24 @@
|
||||
</Failure>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Misc/Sections">
|
||||
<TestCase name="sends information to INFO">
|
||||
<Info>
|
||||
hi
|
||||
</Info>
|
||||
<Info>
|
||||
i := 7
|
||||
</Info>
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MessageTests.cpp" >
|
||||
<Original>
|
||||
false
|
||||
</Original>
|
||||
<Expanded>
|
||||
false
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="random SECTION tests">
|
||||
<Section name="s1" description="doesn't equal">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
@@ -2904,7 +2921,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Misc/Sections/nested">
|
||||
<TestCase name="nested SECTION tests">
|
||||
<Section name="s1" description="doesn't equal">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
@@ -2956,7 +2973,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./mixed/Misc/Sections/nested2">
|
||||
<TestCase name="more nested SECTION tests">
|
||||
<Section name="s1" description="doesn't equal">
|
||||
<OverallResults successes="0" failures="0"/>
|
||||
</Section>
|
||||
@@ -3004,7 +3021,7 @@
|
||||
</Section>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./Sections/nested/a/b">
|
||||
<TestCase name="even more nested SECTION tests">
|
||||
<Section name="c">
|
||||
<OverallResults successes="0" failures="0"/>
|
||||
</Section>
|
||||
@@ -3025,7 +3042,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./mixed/Misc/Sections/loops">
|
||||
<TestCase name="looped SECTION tests">
|
||||
<Section name="s1" description="b is currently: 0">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
@@ -3039,7 +3056,7 @@
|
||||
</Section>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./mixed/Misc/loops">
|
||||
<TestCase name="looped tests">
|
||||
<Info>
|
||||
Testing if fib[0] (1) is even
|
||||
</Info>
|
||||
@@ -3124,10 +3141,10 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Misc/stdout,stderr">
|
||||
<TestCase name="Sends stuff to stdout and stderr">
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Misc/null strings">
|
||||
<TestCase name="null strings">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
makeString( false ) != static_cast<char*>(__null)
|
||||
@@ -3146,24 +3163,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/info">
|
||||
<Info>
|
||||
hi
|
||||
</Info>
|
||||
<Info>
|
||||
i := 7
|
||||
</Info>
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
false
|
||||
</Original>
|
||||
<Expanded>
|
||||
false
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/checkedif">
|
||||
<TestCase name="checkedIf">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
flag
|
||||
@@ -3182,7 +3182,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/checkedif">
|
||||
<TestCase name="checkedIf, failing">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
flag
|
||||
@@ -3201,7 +3201,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/checkedelse">
|
||||
<TestCase name="checkedElse">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
flag
|
||||
@@ -3220,7 +3220,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/checkedelse">
|
||||
<TestCase name="checkedElse, failing">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
flag
|
||||
@@ -3239,7 +3239,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./misc/xmlentitycheck">
|
||||
<TestCase name="xmlentitycheck">
|
||||
<Section name="embedded xml" description="<test>it should be possible to embed xml characters, such as <, " or &, or even whole <xml>documents</xml> within an attribute</test>">
|
||||
<OverallResults successes="0" failures="1"/>
|
||||
</Section>
|
||||
@@ -3248,7 +3248,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./manual/onechar">
|
||||
<TestCase name="send a single char to INFO">
|
||||
<Info>
|
||||
3
|
||||
</Info>
|
||||
@@ -3262,7 +3262,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/atomic if">
|
||||
<TestCase name="atomic if">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
x == 0
|
||||
@@ -3273,7 +3273,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/matchers">
|
||||
<TestCase name="String matchers">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() Contains( "string" )
|
||||
@@ -3308,7 +3308,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/matchers/Contains">
|
||||
<TestCase name="Contains string matcher">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() Contains( "not there" )
|
||||
@@ -3319,7 +3319,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/matchers/StartsWith">
|
||||
<TestCase name="StartsWith string matcher">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() StartsWith( "string" )
|
||||
@@ -3330,7 +3330,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/matchers/EndsWith">
|
||||
<TestCase name="EndsWith string matcher">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() EndsWith( "this" )
|
||||
@@ -3341,7 +3341,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/matchers/Equals">
|
||||
<TestCase name="Equals string matcher">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() Equals( "something else" )
|
||||
@@ -3352,7 +3352,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="string">
|
||||
<TestCase name="Equals string matcher, with NULL">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
"" Equals(__null)
|
||||
@@ -3363,7 +3363,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/matchers/AllOf">
|
||||
<TestCase name="AllOf matcher">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) )
|
||||
@@ -3374,7 +3374,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/matchers/AnyOf">
|
||||
<TestCase name="AnyOf matcher">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) )
|
||||
@@ -3393,7 +3393,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/matchers/Equals">
|
||||
<TestCase name="Equals">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/MiscTests.cpp" >
|
||||
<Original>
|
||||
testStringForMatching() Equals( "this string contains 'abc' as a substring" )
|
||||
@@ -3447,7 +3447,7 @@
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="empty">
|
||||
<TestCase name="An empty test with no assertions">
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="Nice descriptive name">
|
||||
@@ -3667,7 +3667,7 @@
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/CatchSectionInfiniteLoop">
|
||||
<TestCase name="A couple of nested sections followed by a failure">
|
||||
<Failure>
|
||||
to infinity and beyond
|
||||
</Failure>
|
||||
@@ -3688,90 +3688,6 @@
|
||||
</Failure>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="selftest/main">
|
||||
<Section name="selftest/expected result" description="Tests do what they claim">
|
||||
<OverallResults successes="0" failures="0"/>
|
||||
</Section>
|
||||
<Section name="selftest/expected result" description="Tests do what they claim">
|
||||
<Section name="selftest/expected result/failing tests" description="Tests in the 'failing' branch fail">
|
||||
<OverallResults successes="28" failures="0"/>
|
||||
</Section>
|
||||
<OverallResults successes="28" failures="0"/>
|
||||
</Section>
|
||||
<Section name="selftest/expected result" description="Tests do what they claim">
|
||||
<Section name="selftest/expected result/succeeding tests" description="Tests in the 'succeeding' branch succeed">
|
||||
<OverallResults successes="46" failures="0"/>
|
||||
</Section>
|
||||
<OverallResults successes="46" failures="0"/>
|
||||
</Section>
|
||||
<Section name="selftest/test counts" description="Number of test cases that run is fixed">
|
||||
<OverallResults successes="0" failures="0"/>
|
||||
</Section>
|
||||
<Section name="selftest/test counts" description="Number of test cases that run is fixed">
|
||||
<Section name="selftest/test counts/succeeding tests" description="Number of 'succeeding' tests is fixed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.passed == 298
|
||||
</Original>
|
||||
<Expanded>
|
||||
298 == 298
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.failed == 0
|
||||
</Original>
|
||||
<Expanded>
|
||||
0 == 0
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResults successes="2" failures="0"/>
|
||||
</Section>
|
||||
<OverallResults successes="2" failures="0"/>
|
||||
</Section>
|
||||
<Section name="selftest/test counts" description="Number of test cases that run is fixed">
|
||||
<Section name="selftest/test counts/failing tests" description="Number of 'failing' tests is fixed">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.passed == 2
|
||||
</Original>
|
||||
<Expanded>
|
||||
2 == 2
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.failed == 77
|
||||
</Original>
|
||||
<Expanded>
|
||||
77 == 77
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResults successes="2" failures="0"/>
|
||||
</Section>
|
||||
<OverallResults successes="2" failures="0"/>
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="meta/Misc/Sections">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.passed == 2
|
||||
</Original>
|
||||
<Expanded>
|
||||
2 == 2
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
<Original>
|
||||
totals.assertions.failed == 1
|
||||
</Original>
|
||||
<Expanded>
|
||||
1 == 1
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="Process can be configured on command line">
|
||||
<Section name="default - no arguments">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TestMain.cpp" >
|
||||
@@ -6374,7 +6290,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/Tricky/std::pair">
|
||||
<TestCase name="Parsing a std::pair">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
(std::pair<int, int>( 1, 2 )) == aNicePair
|
||||
@@ -6385,19 +6301,19 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./inprogress/failing/Tricky/trailing expression">
|
||||
<TestCase name="Where the is more to the expression after the RHS[failing]">
|
||||
<Warning>
|
||||
Uncomment the code in this test to check that it gives a sensible compiler error
|
||||
</Warning>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./inprogress/failing/Tricky/compound lhs">
|
||||
<TestCase name="Where the LHS is not a simple value[failing]">
|
||||
<Warning>
|
||||
Uncomment the code in this test to check that it gives a sensible compiler error
|
||||
</Warning>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/Tricky/non streamable type">
|
||||
<TestCase name="A failing expression with a non streamable type is still captured[failing]">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
&o1 == &o2
|
||||
@@ -6416,7 +6332,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./failing/string literals">
|
||||
<TestCase name="string literals of different sizes can be compared[failing]">
|
||||
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
std::string( "first" ) == "second"
|
||||
@@ -6427,7 +6343,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="false"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/side-effects">
|
||||
<TestCase name="An expression with side-effects should only be evaluated once">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
i++ == 7
|
||||
@@ -6446,7 +6362,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/koenig">
|
||||
<TestCase name="Operators at different namespace levels not hijacked by Koenig lookup">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
0x<hex digits> == o
|
||||
@@ -6457,7 +6373,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/non-const==">
|
||||
<TestCase name="Demonstrate that a non-const == is not used">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
t == 1u
|
||||
@@ -6468,7 +6384,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/enum/bits">
|
||||
<TestCase name="Test enum bit values">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
0x<hex digits> == bit30and31
|
||||
@@ -6479,7 +6395,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/boolean member">
|
||||
<TestCase name="boolean member">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
obj.prop != __null
|
||||
@@ -6490,7 +6406,7 @@ there"
|
||||
</Expression>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/unimplemented static bool">
|
||||
<TestCase name="(unimplemented) static bools can be evaluated">
|
||||
<Section name="compare to true">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
@@ -6572,7 +6488,7 @@ there"
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="./succeeding/SafeBool">
|
||||
<TestCase name="Objects that evaluated in boolean contexts can be checked">
|
||||
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/TrickyTests.cpp" >
|
||||
<Original>
|
||||
True
|
||||
@@ -7482,7 +7398,7 @@ there"
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<OverallResults successes="663" failures="109"/>
|
||||
<OverallResults successes="583" failures="109"/>
|
||||
</Group>
|
||||
<OverallResults successes="663" failures="109"/>
|
||||
<OverallResults successes="583" failures="109"/>
|
||||
</Catch>
|
||||
|
@@ -28,8 +28,8 @@ public:
|
||||
};
|
||||
|
||||
// Note: TestClass conflicts with template class with same name in VS2012 native tests
|
||||
METHOD_AS_TEST_CASE( TestClass::succeedingCase, "./succeeding/TestClass/succeedingCase", "A method based test run that succeeds [class]" )
|
||||
METHOD_AS_TEST_CASE( TestClass::failingCase, "./failing/TestClass/failingCase", "A method based test run that fails [class]" )
|
||||
METHOD_AS_TEST_CASE( ::TestClass::succeedingCase, "A METHOD_AS_TEST_CASE based test run that succeeds", "[class]" )
|
||||
METHOD_AS_TEST_CASE( ::TestClass::failingCase, "A METHOD_AS_TEST_CASE based test run that fails", "[.][class][failing]" )
|
||||
|
||||
struct Fixture
|
||||
{
|
||||
@@ -38,7 +38,7 @@ struct Fixture
|
||||
int m_a;
|
||||
};
|
||||
|
||||
TEST_CASE_METHOD( Fixture, "./succeeding/Fixture/succeedingCase", "A method based test run that succeeds [class]" )
|
||||
TEST_CASE_METHOD( Fixture, "A TEST_CASE_METHOD based test run that succeeds", "[class]" )
|
||||
{
|
||||
REQUIRE( m_a == 1 );
|
||||
}
|
||||
@@ -46,7 +46,7 @@ TEST_CASE_METHOD( Fixture, "./succeeding/Fixture/succeedingCase", "A method base
|
||||
// We should be able to write our tests within a different namespace
|
||||
namespace Inner
|
||||
{
|
||||
TEST_CASE_METHOD( Fixture, "./failing/Fixture/failingCase", "A method based test run that fails [class]" )
|
||||
TEST_CASE_METHOD( Fixture, "A TEST_CASE_METHOD based test run that fails", "[.][class][failing]" )
|
||||
{
|
||||
REQUIRE( m_a == 2 );
|
||||
}
|
||||
|
@@ -14,193 +14,189 @@
|
||||
#include <string>
|
||||
#include <limits>
|
||||
|
||||
struct TestData {
|
||||
TestData()
|
||||
: int_seven( 7 ),
|
||||
str_hello( "hello" ),
|
||||
float_nine_point_one( 9.1f ),
|
||||
double_pi( 3.1415926535 )
|
||||
{}
|
||||
namespace ConditionTests
|
||||
{
|
||||
|
||||
struct TestData {
|
||||
TestData()
|
||||
: int_seven( 7 ),
|
||||
str_hello( "hello" ),
|
||||
float_nine_point_one( 9.1f ),
|
||||
double_pi( 3.1415926535 )
|
||||
{}
|
||||
|
||||
int int_seven;
|
||||
std::string str_hello;
|
||||
float float_nine_point_one;
|
||||
double double_pi;
|
||||
};
|
||||
int int_seven;
|
||||
std::string str_hello;
|
||||
float float_nine_point_one;
|
||||
double double_pi;
|
||||
};
|
||||
|
||||
|
||||
struct TestDef {
|
||||
TestDef& operator + ( const std::string& ) {
|
||||
return *this;
|
||||
struct TestDef {
|
||||
TestDef& operator + ( const std::string& ) {
|
||||
return *this;
|
||||
}
|
||||
TestDef& operator[]( const std::string& ) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// The "failing" tests all use the CHECK macro, which continues if the specific test fails.
|
||||
// This allows us to see all results, even if an earlier check fails
|
||||
|
||||
// Equality tests
|
||||
TEST_CASE( "Equality checks that should succeed", "" )
|
||||
{
|
||||
|
||||
TestDef td;
|
||||
td + "hello" + "hello";
|
||||
|
||||
TestData data;
|
||||
|
||||
REQUIRE( data.int_seven == 7 );
|
||||
REQUIRE( data.float_nine_point_one == Approx( 9.1f ) );
|
||||
REQUIRE( data.double_pi == Approx( 3.1415926535 ) );
|
||||
REQUIRE( data.str_hello == "hello" );
|
||||
REQUIRE( "hello" == data.str_hello );
|
||||
REQUIRE( data.str_hello.size() == 5 );
|
||||
|
||||
double x = 1.1 + 0.1 + 0.1;
|
||||
REQUIRE( x == Approx( 1.3 ) );
|
||||
}
|
||||
TestDef& operator[]( const std::string& ) {
|
||||
return *this;
|
||||
|
||||
TEST_CASE( "Equality checks that should fail]", "[.][failing]" )
|
||||
{
|
||||
TestData data;
|
||||
|
||||
CHECK( data.int_seven == 6 );
|
||||
CHECK( data.int_seven == 8 );
|
||||
CHECK( data.int_seven == 0 );
|
||||
CHECK( data.float_nine_point_one == Approx( 9.11f ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 9.0f ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 1 ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 0 ) );
|
||||
CHECK( data.double_pi == Approx( 3.1415 ) );
|
||||
CHECK( data.str_hello == "goodbye" );
|
||||
CHECK( data.str_hello == "hell" );
|
||||
CHECK( data.str_hello == "hello1" );
|
||||
CHECK( data.str_hello.size() == 6 );
|
||||
|
||||
double x = 1.1 + 0.1 + 0.1;
|
||||
CHECK( x == Approx( 1.301 ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "Inequality checks that should succeed", "" )
|
||||
{
|
||||
TestData data;
|
||||
|
||||
};
|
||||
REQUIRE( data.int_seven != 6 );
|
||||
REQUIRE( data.int_seven != 8 );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 9.11f ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 9.0f ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 1 ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 0 ) );
|
||||
REQUIRE( data.double_pi != Approx( 3.1415 ) );
|
||||
REQUIRE( data.str_hello != "goodbye" );
|
||||
REQUIRE( data.str_hello != "hell" );
|
||||
REQUIRE( data.str_hello != "hello1" );
|
||||
REQUIRE( data.str_hello.size() != 6 );
|
||||
}
|
||||
|
||||
// The "failing" tests all use the CHECK macro, which continues if the specific test fails.
|
||||
// This allows us to see all results, even if an earlier check fails
|
||||
|
||||
// Equality tests
|
||||
TEST_CASE( "./succeeding/conditions/equality",
|
||||
"Equality checks that should succeed" )
|
||||
{
|
||||
|
||||
TestDef td;
|
||||
td + "hello" + "hello";
|
||||
TEST_CASE( "Inequality checks that should fails", "[.][failing]" )
|
||||
{
|
||||
TestData data;
|
||||
|
||||
TestData data;
|
||||
CHECK( data.int_seven != 7 );
|
||||
CHECK( data.float_nine_point_one != Approx( 9.1f ) );
|
||||
CHECK( data.double_pi != Approx( 3.1415926535 ) );
|
||||
CHECK( data.str_hello != "hello" );
|
||||
CHECK( data.str_hello.size() != 5 );
|
||||
}
|
||||
|
||||
// Ordering comparison tests
|
||||
TEST_CASE( "Ordering comparison checks that should succeed", "" )
|
||||
{
|
||||
TestData data;
|
||||
|
||||
REQUIRE( data.int_seven == 7 );
|
||||
REQUIRE( data.float_nine_point_one == Approx( 9.1f ) );
|
||||
REQUIRE( data.double_pi == Approx( 3.1415926535 ) );
|
||||
REQUIRE( data.str_hello == "hello" );
|
||||
REQUIRE( "hello" == data.str_hello );
|
||||
REQUIRE( data.str_hello.size() == 5 );
|
||||
REQUIRE( data.int_seven < 8 );
|
||||
REQUIRE( data.int_seven > 6 );
|
||||
REQUIRE( data.int_seven > 0 );
|
||||
REQUIRE( data.int_seven > -1 );
|
||||
|
||||
double x = 1.1 + 0.1 + 0.1;
|
||||
REQUIRE( x == Approx( 1.3 ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/conditions/equality",
|
||||
"Equality checks that should fail" )
|
||||
{
|
||||
TestData data;
|
||||
REQUIRE( data.int_seven >= 7 );
|
||||
REQUIRE( data.int_seven >= 6 );
|
||||
REQUIRE( data.int_seven <= 7 );
|
||||
REQUIRE( data.int_seven <= 8 );
|
||||
|
||||
CHECK( data.int_seven == 6 );
|
||||
CHECK( data.int_seven == 8 );
|
||||
CHECK( data.int_seven == 0 );
|
||||
CHECK( data.float_nine_point_one == Approx( 9.11f ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 9.0f ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 1 ) );
|
||||
CHECK( data.float_nine_point_one == Approx( 0 ) );
|
||||
CHECK( data.double_pi == Approx( 3.1415 ) );
|
||||
CHECK( data.str_hello == "goodbye" );
|
||||
CHECK( data.str_hello == "hell" );
|
||||
CHECK( data.str_hello == "hello1" );
|
||||
CHECK( data.str_hello.size() == 6 );
|
||||
|
||||
double x = 1.1 + 0.1 + 0.1;
|
||||
CHECK( x == Approx( 1.301 ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/conditions/inequality",
|
||||
"Inequality checks that should succeed" )
|
||||
{
|
||||
TestData data;
|
||||
REQUIRE( data.float_nine_point_one > 9 );
|
||||
REQUIRE( data.float_nine_point_one < 10 );
|
||||
REQUIRE( data.float_nine_point_one < 9.2 );
|
||||
|
||||
REQUIRE( data.int_seven != 6 );
|
||||
REQUIRE( data.int_seven != 8 );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 9.11f ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 9.0f ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 1 ) );
|
||||
REQUIRE( data.float_nine_point_one != Approx( 0 ) );
|
||||
REQUIRE( data.double_pi != Approx( 3.1415 ) );
|
||||
REQUIRE( data.str_hello != "goodbye" );
|
||||
REQUIRE( data.str_hello != "hell" );
|
||||
REQUIRE( data.str_hello != "hello1" );
|
||||
REQUIRE( data.str_hello.size() != 6 );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/conditions/inequality",
|
||||
"Inequality checks that should fails" )
|
||||
{
|
||||
TestData data;
|
||||
REQUIRE( data.str_hello <= "hello" );
|
||||
REQUIRE( data.str_hello >= "hello" );
|
||||
|
||||
CHECK( data.int_seven != 7 );
|
||||
CHECK( data.float_nine_point_one != Approx( 9.1f ) );
|
||||
CHECK( data.double_pi != Approx( 3.1415926535 ) );
|
||||
CHECK( data.str_hello != "hello" );
|
||||
CHECK( data.str_hello.size() != 5 );
|
||||
}
|
||||
REQUIRE( data.str_hello < "hellp" );
|
||||
REQUIRE( data.str_hello < "zebra" );
|
||||
REQUIRE( data.str_hello > "hellm" );
|
||||
REQUIRE( data.str_hello > "a" );
|
||||
}
|
||||
|
||||
// Ordering comparison tests
|
||||
TEST_CASE( "./succeeding/conditions/ordered",
|
||||
"Ordering comparison checks that should succeed" )
|
||||
{
|
||||
TestData data;
|
||||
TEST_CASE( "Ordering comparison checks that should fail", "[.][failing]" )
|
||||
{
|
||||
TestData data;
|
||||
|
||||
REQUIRE( data.int_seven < 8 );
|
||||
REQUIRE( data.int_seven > 6 );
|
||||
REQUIRE( data.int_seven > 0 );
|
||||
REQUIRE( data.int_seven > -1 );
|
||||
CHECK( data.int_seven > 7 );
|
||||
CHECK( data.int_seven < 7 );
|
||||
CHECK( data.int_seven > 8 );
|
||||
CHECK( data.int_seven < 6 );
|
||||
CHECK( data.int_seven < 0 );
|
||||
CHECK( data.int_seven < -1 );
|
||||
|
||||
REQUIRE( data.int_seven >= 7 );
|
||||
REQUIRE( data.int_seven >= 6 );
|
||||
REQUIRE( data.int_seven <= 7 );
|
||||
REQUIRE( data.int_seven <= 8 );
|
||||
CHECK( data.int_seven >= 8 );
|
||||
CHECK( data.int_seven <= 6 );
|
||||
|
||||
REQUIRE( data.float_nine_point_one > 9 );
|
||||
REQUIRE( data.float_nine_point_one < 10 );
|
||||
REQUIRE( data.float_nine_point_one < 9.2 );
|
||||
CHECK( data.float_nine_point_one < 9 );
|
||||
CHECK( data.float_nine_point_one > 10 );
|
||||
CHECK( data.float_nine_point_one > 9.2 );
|
||||
|
||||
REQUIRE( data.str_hello <= "hello" );
|
||||
REQUIRE( data.str_hello >= "hello" );
|
||||
|
||||
REQUIRE( data.str_hello < "hellp" );
|
||||
REQUIRE( data.str_hello < "zebra" );
|
||||
REQUIRE( data.str_hello > "hellm" );
|
||||
REQUIRE( data.str_hello > "a" );
|
||||
}
|
||||
CHECK( data.str_hello > "hello" );
|
||||
CHECK( data.str_hello < "hello" );
|
||||
CHECK( data.str_hello > "hellp" );
|
||||
CHECK( data.str_hello > "z" );
|
||||
CHECK( data.str_hello < "hellm" );
|
||||
CHECK( data.str_hello < "a" );
|
||||
|
||||
TEST_CASE( "./failing/conditions/ordered",
|
||||
"Ordering comparison checks that should fail" )
|
||||
{
|
||||
TestData data;
|
||||
CHECK( data.str_hello >= "z" );
|
||||
CHECK( data.str_hello <= "a" );
|
||||
}
|
||||
|
||||
// Comparisons with int literals
|
||||
TEST_CASE( "Comparisons with int literals don't warn when mixing signed/ unsigned", "" )
|
||||
{
|
||||
int i = 1;
|
||||
unsigned int ui = 2;
|
||||
long l = 3;
|
||||
unsigned long ul = 4;
|
||||
char c = 5;
|
||||
unsigned char uc = 6;
|
||||
|
||||
CHECK( data.int_seven > 7 );
|
||||
CHECK( data.int_seven < 7 );
|
||||
CHECK( data.int_seven > 8 );
|
||||
CHECK( data.int_seven < 6 );
|
||||
CHECK( data.int_seven < 0 );
|
||||
CHECK( data.int_seven < -1 );
|
||||
REQUIRE( i == 1 );
|
||||
REQUIRE( ui == 2 );
|
||||
REQUIRE( l == 3 );
|
||||
REQUIRE( ul == 4 );
|
||||
REQUIRE( c == 5 );
|
||||
REQUIRE( uc == 6 );
|
||||
|
||||
CHECK( data.int_seven >= 8 );
|
||||
CHECK( data.int_seven <= 6 );
|
||||
|
||||
CHECK( data.float_nine_point_one < 9 );
|
||||
CHECK( data.float_nine_point_one > 10 );
|
||||
CHECK( data.float_nine_point_one > 9.2 );
|
||||
|
||||
CHECK( data.str_hello > "hello" );
|
||||
CHECK( data.str_hello < "hello" );
|
||||
CHECK( data.str_hello > "hellp" );
|
||||
CHECK( data.str_hello > "z" );
|
||||
CHECK( data.str_hello < "hellm" );
|
||||
CHECK( data.str_hello < "a" );
|
||||
REQUIRE( 1 == i );
|
||||
REQUIRE( 2 == ui );
|
||||
REQUIRE( 3 == l );
|
||||
REQUIRE( 4 == ul );
|
||||
REQUIRE( 5 == c );
|
||||
REQUIRE( 6 == uc );
|
||||
|
||||
CHECK( data.str_hello >= "z" );
|
||||
CHECK( data.str_hello <= "a" );
|
||||
}
|
||||
|
||||
// Comparisons with int literals
|
||||
TEST_CASE( "./succeeding/conditions/int literals",
|
||||
"Comparisons with int literals don't warn when mixing signed/ unsigned" )
|
||||
{
|
||||
int i = 1;
|
||||
unsigned int ui = 2;
|
||||
long l = 3;
|
||||
unsigned long ul = 4;
|
||||
char c = 5;
|
||||
unsigned char uc = 6;
|
||||
|
||||
REQUIRE( i == 1 );
|
||||
REQUIRE( ui == 2 );
|
||||
REQUIRE( l == 3 );
|
||||
REQUIRE( ul == 4 );
|
||||
REQUIRE( c == 5 );
|
||||
REQUIRE( uc == 6 );
|
||||
|
||||
REQUIRE( 1 == i );
|
||||
REQUIRE( 2 == ui );
|
||||
REQUIRE( 3 == l );
|
||||
REQUIRE( 4 == ul );
|
||||
REQUIRE( 5 == c );
|
||||
REQUIRE( 6 == uc );
|
||||
|
||||
REQUIRE( (std::numeric_limits<unsigned long>::max)() > ul );
|
||||
}
|
||||
REQUIRE( (std::numeric_limits<unsigned long>::max)() > ul );
|
||||
}
|
||||
|
||||
// Disable warnings about sign conversions for the next two tests
|
||||
// (as we are deliberately invoking them)
|
||||
@@ -214,63 +210,59 @@ TEST_CASE( "./succeeding/conditions/int literals",
|
||||
#pragma warning(disable:4389) // '==' : signed/unsigned mismatch
|
||||
#endif
|
||||
|
||||
TEST_CASE( "./succeeding/conditions//long_to_unsigned_x",
|
||||
"comparisons between int variables" )
|
||||
{
|
||||
long long_var = 1L;
|
||||
unsigned char unsigned_char_var = 1;
|
||||
unsigned short unsigned_short_var = 1;
|
||||
unsigned int unsigned_int_var = 1;
|
||||
unsigned long unsigned_long_var = 1L;
|
||||
TEST_CASE( "comparisons between int variables", "" )
|
||||
{
|
||||
long long_var = 1L;
|
||||
unsigned char unsigned_char_var = 1;
|
||||
unsigned short unsigned_short_var = 1;
|
||||
unsigned int unsigned_int_var = 1;
|
||||
unsigned long unsigned_long_var = 1L;
|
||||
|
||||
REQUIRE( long_var == unsigned_char_var );
|
||||
REQUIRE( long_var == unsigned_short_var );
|
||||
REQUIRE( long_var == unsigned_int_var );
|
||||
REQUIRE( long_var == unsigned_long_var );
|
||||
}
|
||||
REQUIRE( long_var == unsigned_char_var );
|
||||
REQUIRE( long_var == unsigned_short_var );
|
||||
REQUIRE( long_var == unsigned_int_var );
|
||||
REQUIRE( long_var == unsigned_long_var );
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/conditions/const ints to int literal",
|
||||
"comparisons between const int variables" )
|
||||
{
|
||||
const unsigned char unsigned_char_var = 1;
|
||||
const unsigned short unsigned_short_var = 1;
|
||||
const unsigned int unsigned_int_var = 1;
|
||||
const unsigned long unsigned_long_var = 1L;
|
||||
TEST_CASE( "comparisons between const int variables", "" )
|
||||
{
|
||||
const unsigned char unsigned_char_var = 1;
|
||||
const unsigned short unsigned_short_var = 1;
|
||||
const unsigned int unsigned_int_var = 1;
|
||||
const unsigned long unsigned_long_var = 1L;
|
||||
|
||||
REQUIRE( unsigned_char_var == 1 );
|
||||
REQUIRE( unsigned_short_var == 1 );
|
||||
REQUIRE( unsigned_int_var == 1 );
|
||||
REQUIRE( unsigned_long_var == 1 );
|
||||
}
|
||||
REQUIRE( unsigned_char_var == 1 );
|
||||
REQUIRE( unsigned_short_var == 1 );
|
||||
REQUIRE( unsigned_int_var == 1 );
|
||||
REQUIRE( unsigned_long_var == 1 );
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/conditions/negative ints",
|
||||
"Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" )
|
||||
{
|
||||
CHECK( ( -1 > 2u ) );
|
||||
CHECK( -1 > 2u );
|
||||
TEST_CASE( "Comparisons between unsigned ints and negative signed ints match c++ standard behaviour", "" )
|
||||
{
|
||||
CHECK( ( -1 > 2u ) );
|
||||
CHECK( -1 > 2u );
|
||||
|
||||
CHECK( ( 2u < -1 ) );
|
||||
CHECK( 2u < -1 );
|
||||
CHECK( ( 2u < -1 ) );
|
||||
CHECK( 2u < -1 );
|
||||
|
||||
const int minInt = (std::numeric_limits<int>::min)();
|
||||
CHECK( ( minInt > 2u ) );
|
||||
CHECK( minInt > 2u );
|
||||
}
|
||||
const int minInt = (std::numeric_limits<int>::min)();
|
||||
CHECK( ( minInt > 2u ) );
|
||||
CHECK( minInt > 2u );
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
struct Ex
|
||||
{
|
||||
Ex( T ){}
|
||||
template<typename T>
|
||||
struct Ex
|
||||
{
|
||||
Ex( T ){}
|
||||
|
||||
bool operator == ( const T& ) const { return true; }
|
||||
T operator * ( const T& ) const { return T(); }
|
||||
};
|
||||
bool operator == ( const T& ) const { return true; }
|
||||
T operator * ( const T& ) const { return T(); }
|
||||
};
|
||||
|
||||
TEST_CASE( "./succeeding/conditions/computed ints",
|
||||
"Comparisons between ints where one side is computed" )
|
||||
{
|
||||
CHECK( 54 == 6*9 );
|
||||
}
|
||||
TEST_CASE( "Comparisons between ints where one side is computed", "" )
|
||||
{
|
||||
CHECK( 54 == 6*9 );
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic pop
|
||||
@@ -279,69 +271,67 @@ TEST_CASE( "./succeeding/conditions/computed ints",
|
||||
inline const char* returnsConstNull(){ return NULL; }
|
||||
inline char* returnsNull(){ return NULL; }
|
||||
|
||||
TEST_CASE( "./succeeding/conditions/ptr",
|
||||
"Pointers can be compared to null" )
|
||||
{
|
||||
TestData* p = NULL;
|
||||
TestData* pNULL = NULL;
|
||||
TEST_CASE( "Pointers can be compared to null", "" )
|
||||
{
|
||||
TestData* p = NULL;
|
||||
TestData* pNULL = NULL;
|
||||
|
||||
REQUIRE( p == NULL );
|
||||
REQUIRE( p == pNULL );
|
||||
REQUIRE( p == NULL );
|
||||
REQUIRE( p == pNULL );
|
||||
|
||||
TestData data;
|
||||
p = &data;
|
||||
TestData data;
|
||||
p = &data;
|
||||
|
||||
REQUIRE( p != NULL );
|
||||
REQUIRE( p != NULL );
|
||||
|
||||
const TestData* cp = p;
|
||||
REQUIRE( cp != NULL );
|
||||
const TestData* cp = p;
|
||||
REQUIRE( cp != NULL );
|
||||
|
||||
const TestData* const cpc = p;
|
||||
REQUIRE( cpc != NULL );
|
||||
const TestData* const cpc = p;
|
||||
REQUIRE( cpc != NULL );
|
||||
|
||||
REQUIRE( returnsNull() == NULL );
|
||||
REQUIRE( returnsConstNull() == NULL );
|
||||
REQUIRE( returnsNull() == NULL );
|
||||
REQUIRE( returnsConstNull() == NULL );
|
||||
|
||||
REQUIRE( NULL != p );
|
||||
}
|
||||
|
||||
// Not (!) tests
|
||||
// The problem with the ! operator is that it has right-to-left associativity.
|
||||
// This means we can't isolate it when we decompose. The simple REQUIRE( !false ) form, therefore,
|
||||
// cannot have the operand value extracted. The test will work correctly, and the situation
|
||||
// is detected and a warning issued.
|
||||
// An alternative form of the macros (CHECK_FALSE and REQUIRE_FALSE) can be used instead to capture
|
||||
// the operand value.
|
||||
TEST_CASE( "./succeeding/conditions/not",
|
||||
"'Not' checks that should succeed" )
|
||||
{
|
||||
bool falseValue = false;
|
||||
|
||||
REQUIRE( false == false );
|
||||
REQUIRE( true == true );
|
||||
REQUIRE( !false );
|
||||
REQUIRE_FALSE( false );
|
||||
|
||||
REQUIRE( !falseValue );
|
||||
REQUIRE_FALSE( falseValue );
|
||||
|
||||
REQUIRE( !(1 == 2) );
|
||||
REQUIRE_FALSE( 1 == 2 );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/conditions/not",
|
||||
"'Not' checks that should fail" )
|
||||
{
|
||||
bool trueValue = true;
|
||||
|
||||
CHECK( false != false );
|
||||
CHECK( true != true );
|
||||
CHECK( !true );
|
||||
CHECK_FALSE( true );
|
||||
|
||||
CHECK( !trueValue );
|
||||
CHECK_FALSE( trueValue );
|
||||
|
||||
CHECK( !(1 == 1) );
|
||||
CHECK_FALSE( 1 == 1 );
|
||||
REQUIRE( NULL != p );
|
||||
}
|
||||
|
||||
// Not (!) tests
|
||||
// The problem with the ! operator is that it has right-to-left associativity.
|
||||
// This means we can't isolate it when we decompose. The simple REQUIRE( !false ) form, therefore,
|
||||
// cannot have the operand value extracted. The test will work correctly, and the situation
|
||||
// is detected and a warning issued.
|
||||
// An alternative form of the macros (CHECK_FALSE and REQUIRE_FALSE) can be used instead to capture
|
||||
// the operand value.
|
||||
TEST_CASE( "'Not' checks that should succeed", "" )
|
||||
{
|
||||
bool falseValue = false;
|
||||
|
||||
REQUIRE( false == false );
|
||||
REQUIRE( true == true );
|
||||
REQUIRE( !false );
|
||||
REQUIRE_FALSE( false );
|
||||
|
||||
REQUIRE( !falseValue );
|
||||
REQUIRE_FALSE( falseValue );
|
||||
|
||||
REQUIRE( !(1 == 2) );
|
||||
REQUIRE_FALSE( 1 == 2 );
|
||||
}
|
||||
|
||||
TEST_CASE( "'Not' checks that should fail", "[.][failing]" )
|
||||
{
|
||||
bool trueValue = true;
|
||||
|
||||
CHECK( false != false );
|
||||
CHECK( true != true );
|
||||
CHECK( !true );
|
||||
CHECK_FALSE( true );
|
||||
|
||||
CHECK( !trueValue );
|
||||
CHECK_FALSE( trueValue );
|
||||
|
||||
CHECK( !(1 == 1) );
|
||||
CHECK_FALSE( 1 == 1 );
|
||||
}
|
||||
}
|
||||
|
@@ -11,8 +11,6 @@
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
|
||||
#include "catch_self_test.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
inline int thisThrows()
|
||||
@@ -28,116 +26,119 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/exceptions/explicit", "When checked exceptions are thrown they can be expected or unexpected" )
|
||||
namespace ExceptionTests
|
||||
{
|
||||
REQUIRE_THROWS_AS( thisThrows(), std::domain_error );
|
||||
REQUIRE_NOTHROW( thisDoesntThrow() );
|
||||
REQUIRE_THROWS( thisThrows() );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/explicit", "When checked exceptions are thrown they can be expected or unexpected" )
|
||||
{
|
||||
CHECK_THROWS_AS( thisThrows(), std::string );
|
||||
CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error );
|
||||
CHECK_NOTHROW( thisThrows() );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/implicit", "When unchecked exceptions are thrown they are always failures" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/implicit/2", "An unchecked exception reports the line of the last assertion" )
|
||||
{
|
||||
CHECK( 1 == 1 );
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
TEST_CASE( "./failing/exceptions/implicit/3", "When unchecked exceptions are thrown they are always failures" )
|
||||
{
|
||||
SECTION( "section name", "" )
|
||||
TEST_CASE( "When checked exceptions are thrown they can be expected or unexpected", "" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
REQUIRE_THROWS_AS( thisThrows(), std::domain_error );
|
||||
REQUIRE_NOTHROW( thisDoesntThrow() );
|
||||
REQUIRE_THROWS( thisThrows() );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/implicit/4", "When unchecked exceptions are thrown they are always failures" )
|
||||
{
|
||||
CHECK( thisThrows() == 0 );
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/exceptions/implicit", "When unchecked exceptions are thrown, but caught, they do not affect the test" )
|
||||
{
|
||||
try
|
||||
TEST_CASE( "Expected exceptions that don't throw or unexpected exceptions fail the test", "[.][failing]" )
|
||||
{
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
CHECK_THROWS_AS( thisThrows(), std::string );
|
||||
CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error );
|
||||
CHECK_NOTHROW( thisThrows() );
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class CustomException
|
||||
{
|
||||
public:
|
||||
CustomException( const std::string& msg )
|
||||
: m_msg( msg )
|
||||
{}
|
||||
TEST_CASE( "When unchecked exceptions are thrown directly they are always failures", "[.][failing]" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
|
||||
TEST_CASE( "An unchecked exception reports the line of the last assertion", "[.][failing]" )
|
||||
{
|
||||
CHECK( 1 == 1 );
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
TEST_CASE( "When unchecked exceptions are thrown from sections they are always failures", "[.][failing]" )
|
||||
{
|
||||
SECTION( "section name", "" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "When unchecked exceptions are thrown from functions they are always failures", "[.][failing]" )
|
||||
{
|
||||
CHECK( thisThrows() == 0 );
|
||||
}
|
||||
|
||||
TEST_CASE( "When unchecked exceptions are thrown, but caught, they do not affect the test", "" )
|
||||
{
|
||||
try
|
||||
{
|
||||
throw std::domain_error( "unexpected exception" );
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class CustomException
|
||||
{
|
||||
public:
|
||||
CustomException( const std::string& msg )
|
||||
: m_msg( msg )
|
||||
{}
|
||||
|
||||
std::string getMessage() const
|
||||
{
|
||||
return m_msg;
|
||||
}
|
||||
std::string getMessage() const
|
||||
{
|
||||
return m_msg;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_msg;
|
||||
};
|
||||
private:
|
||||
std::string m_msg;
|
||||
};
|
||||
|
||||
CATCH_TRANSLATE_EXCEPTION( CustomException& ex )
|
||||
{
|
||||
return ex.getMessage();
|
||||
}
|
||||
|
||||
CATCH_TRANSLATE_EXCEPTION( double& ex )
|
||||
{
|
||||
return Catch::toString( ex );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/custom", "Unexpected custom exceptions can be translated" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw CustomException( "custom exception" );
|
||||
}
|
||||
|
||||
inline void throwCustom() {
|
||||
if( Catch::isTrue( true ) )
|
||||
throw CustomException( "custom exception - not std" );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/custom/nothrow", "Custom exceptions can be translated when testing for nothrow" )
|
||||
{
|
||||
REQUIRE_NOTHROW( throwCustom() );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/exceptions/custom/throw", "Custom exceptions can be translated when testing for throwing as something else" )
|
||||
{
|
||||
REQUIRE_THROWS_AS( throwCustom(), std::exception );
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE( "./failing/exceptions/custom/double", "Unexpected custom exceptions can be translated" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw double( 3.14 );
|
||||
}
|
||||
|
||||
inline int thisFunctionNotImplemented( int ) {
|
||||
CATCH_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/exceptions/notimplemented", "" )
|
||||
{
|
||||
REQUIRE_THROWS( thisFunctionNotImplemented( 7 ) );
|
||||
CATCH_TRANSLATE_EXCEPTION( CustomException& ex )
|
||||
{
|
||||
return ex.getMessage();
|
||||
}
|
||||
|
||||
CATCH_TRANSLATE_EXCEPTION( double& ex )
|
||||
{
|
||||
return Catch::toString( ex );
|
||||
}
|
||||
|
||||
TEST_CASE("Unexpected custom exceptions can be translated", "[.][failing]" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw CustomException( "custom exception" );
|
||||
}
|
||||
|
||||
inline void throwCustom() {
|
||||
if( Catch::isTrue( true ) )
|
||||
throw CustomException( "custom exception - not std" );
|
||||
}
|
||||
|
||||
TEST_CASE( "Custom exceptions can be translated when testing for nothrow", "[.][failing]" )
|
||||
{
|
||||
REQUIRE_NOTHROW( throwCustom() );
|
||||
}
|
||||
|
||||
TEST_CASE( "Custom exceptions can be translated when testing for throwing as something else", "[.][failing]" )
|
||||
{
|
||||
REQUIRE_THROWS_AS( throwCustom(), std::exception );
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE( "Unexpected exceptions can be translated", "[.][failing]" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
throw double( 3.14 );
|
||||
}
|
||||
|
||||
inline int thisFunctionNotImplemented( int ) {
|
||||
CATCH_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
TEST_CASE( "NotImplemented exception", "" )
|
||||
{
|
||||
REQUIRE_THROWS( thisFunctionNotImplemented( 7 ) );
|
||||
}
|
||||
}
|
||||
|
@@ -11,32 +11,35 @@
|
||||
#define CATCH_CONFIG_PREFIX_ALL
|
||||
#include "catch.hpp"
|
||||
|
||||
inline int multiply( int a, int b )
|
||||
namespace GeneratorTests
|
||||
{
|
||||
return a*b;
|
||||
}
|
||||
inline int multiply( int a, int b )
|
||||
{
|
||||
return a*b;
|
||||
}
|
||||
|
||||
CATCH_TEST_CASE( "./succeeding/generators/1", "Generators over two ranges" )
|
||||
{
|
||||
using namespace Catch::Generators;
|
||||
CATCH_TEST_CASE( "Generators over two ranges", "[generators]" )
|
||||
{
|
||||
using namespace Catch::Generators;
|
||||
|
||||
int i = CATCH_GENERATE( between( 1, 5 ).then( values( 15, 20, 21 ).then( 36 ) ) );
|
||||
int j = CATCH_GENERATE( between( 100, 107 ) );
|
||||
int i = CATCH_GENERATE( between( 1, 5 ).then( values( 15, 20, 21 ).then( 36 ) ) );
|
||||
int j = CATCH_GENERATE( between( 100, 107 ) );
|
||||
|
||||
CATCH_REQUIRE( multiply( i, 2 ) == i*2 );
|
||||
CATCH_REQUIRE( multiply( j, 2 ) == j*2 );
|
||||
}
|
||||
CATCH_REQUIRE( multiply( i, 2 ) == i*2 );
|
||||
CATCH_REQUIRE( multiply( j, 2 ) == j*2 );
|
||||
}
|
||||
|
||||
struct IntPair { int first, second; };
|
||||
struct IntPair { int first, second; };
|
||||
|
||||
CATCH_TEST_CASE( "./succeeding/generators/2", "Generator over a range of pairs" )
|
||||
{
|
||||
using namespace Catch::Generators;
|
||||
CATCH_TEST_CASE( "Generator over a range of pairs", "[generators]" )
|
||||
{
|
||||
using namespace Catch::Generators;
|
||||
|
||||
IntPair p[] = { { 0, 1 }, { 2, 3 } };
|
||||
IntPair p[] = { { 0, 1 }, { 2, 3 } };
|
||||
|
||||
IntPair* i = CATCH_GENERATE( between( p, &p[1] ) );
|
||||
IntPair* i = CATCH_GENERATE( between( p, &p[1] ) );
|
||||
|
||||
CATCH_REQUIRE( i->first == i->second-1 );
|
||||
CATCH_REQUIRE( i->first == i->second-1 );
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -8,95 +8,108 @@
|
||||
|
||||
#include "catch.hpp"
|
||||
|
||||
TEST_CASE( "./succeeding/message", "INFO and WARN do not abort tests" )
|
||||
namespace MessageTests
|
||||
{
|
||||
INFO( "this is a " << "message" ); // This should output the message if a failure occurs
|
||||
WARN( "this is a " << "warning" ); // This should always output the message but then continue
|
||||
}
|
||||
TEST_CASE( "./succeeding/succeed", "SUCCEED counts as a test pass" )
|
||||
{
|
||||
SUCCEED( "this is a " << "success" );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/message/info/1", "INFO gets logged on failure" )
|
||||
{
|
||||
INFO( "this message should be logged" );
|
||||
INFO( "so should this" );
|
||||
int a = 2;
|
||||
REQUIRE( a == 1 );
|
||||
}
|
||||
TEST_CASE( "INFO and WARN do not abort tests", "[messages]" )
|
||||
{
|
||||
INFO( "this is a " << "message" ); // This should output the message if a failure occurs
|
||||
WARN( "this is a " << "warning" ); // This should always output the message but then continue
|
||||
}
|
||||
TEST_CASE( "SUCCEED counts as a test pass", "[messages]" )
|
||||
{
|
||||
SUCCEED( "this is a " << "success" );
|
||||
}
|
||||
|
||||
TEST_CASE( "./mixed/message/info/2", "INFO gets logged on failure" )
|
||||
{
|
||||
INFO( "this message may be logged later" );
|
||||
int a = 2;
|
||||
CHECK( a == 2 );
|
||||
TEST_CASE( "INFO gets logged on failure", "[failing][messages][.]" )
|
||||
{
|
||||
INFO( "this message should be logged" );
|
||||
INFO( "so should this" );
|
||||
int a = 2;
|
||||
REQUIRE( a == 1 );
|
||||
}
|
||||
|
||||
INFO( "this message should be logged" );
|
||||
TEST_CASE( "INFO gets logged on failure, even if captured before successful assertions", "[failing][messages][.]" )
|
||||
{
|
||||
INFO( "this message may be logged later" );
|
||||
int a = 2;
|
||||
CHECK( a == 2 );
|
||||
|
||||
INFO( "this message should be logged" );
|
||||
|
||||
CHECK( a == 1 );
|
||||
CHECK( a == 1 );
|
||||
|
||||
INFO( "and this, but later" );
|
||||
INFO( "and this, but later" );
|
||||
|
||||
CHECK( a == 0 );
|
||||
CHECK( a == 0 );
|
||||
|
||||
INFO( "but not this" );
|
||||
INFO( "but not this" );
|
||||
|
||||
CHECK( a == 2 );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/message/fail", "FAIL aborts the test" )
|
||||
{
|
||||
if( Catch::isTrue( true ) )
|
||||
FAIL( "This is a " << "failure" ); // This should output the message and abort
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/message/sections", "Output from all sections is reported" )
|
||||
{
|
||||
SECTION( "one", "" )
|
||||
{
|
||||
FAIL( "Message from section one" );
|
||||
CHECK( a == 2 );
|
||||
}
|
||||
|
||||
SECTION( "two", "" )
|
||||
TEST_CASE( "FAIL aborts the test", "[failing][messages][.]" )
|
||||
{
|
||||
FAIL( "Message from section two" );
|
||||
if( Catch::isTrue( true ) )
|
||||
FAIL( "This is a " << "failure" ); // This should output the message and abort
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/message/sections/stdout", "Output from all sections is reported" )
|
||||
{
|
||||
SECTION( "one", "" )
|
||||
TEST_CASE( "Output from all sections is reported", "[failing][messages][.]" )
|
||||
{
|
||||
std::cout << "Message from section one" << std::endl;
|
||||
SECTION( "one", "" )
|
||||
{
|
||||
FAIL( "Message from section one" );
|
||||
}
|
||||
|
||||
SECTION( "two", "" )
|
||||
{
|
||||
FAIL( "Message from section two" );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "Standard output from all sections is reported", "[messages]" )
|
||||
{
|
||||
SECTION( "one", "" )
|
||||
{
|
||||
std::cout << "Message from section one" << std::endl;
|
||||
}
|
||||
|
||||
SECTION( "two", "" )
|
||||
SECTION( "two", "" )
|
||||
{
|
||||
std::cout << "Message from section two" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "SCOPED_INFO is reset for each loop", "[messages][failing][.]" )
|
||||
{
|
||||
std::cout << "Message from section two" << std::endl;
|
||||
for( int i=0; i<100; i++ )
|
||||
{
|
||||
SCOPED_INFO( "current counter " << i );
|
||||
SCOPED_CAPTURE( i );
|
||||
REQUIRE( i < 10 );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "The NO_FAIL macro reports a failure but does not fail the test", "[messages]" )
|
||||
{
|
||||
CHECK_NOFAIL( 1 == 2 );
|
||||
}
|
||||
|
||||
TEST_CASE( "just info", "[info][isolated info][messages]" )
|
||||
{
|
||||
INFO( "this should never be seen" );
|
||||
}
|
||||
TEST_CASE( "just failure", "[fail][isolated info][.][messages]" )
|
||||
{
|
||||
FAIL( "Previous info should not be seen" );
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE( "sends information to INFO", "[.][failing]" )
|
||||
{
|
||||
INFO( "hi" );
|
||||
int i = 7;
|
||||
CAPTURE( i );
|
||||
REQUIRE( false );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./mixed/message/scoped", "" )
|
||||
{
|
||||
for( int i=0; i<100; i++ )
|
||||
{
|
||||
SCOPED_INFO( "current counter " << i );
|
||||
SCOPED_CAPTURE( i );
|
||||
REQUIRE( i < 10 );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/nofail", "The NO_FAIL macro reports a failure but does not fail the test" )
|
||||
{
|
||||
CHECK_NOFAIL( 1 == 2 );
|
||||
}
|
||||
|
||||
TEST_CASE( "just info", "[info][isolated info][.]" )
|
||||
{
|
||||
INFO( "this should never be seen" );
|
||||
}
|
||||
TEST_CASE( "just failure", "[fail][isolated info][.]" )
|
||||
{
|
||||
FAIL( "Previous info should not be seen" );
|
||||
}
|
||||
|
@@ -7,360 +7,333 @@
|
||||
*/
|
||||
|
||||
#include "catch.hpp"
|
||||
#include "catch_self_test.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
TEST_CASE( "./succeeding/Misc/Sections", "random SECTION tests" )
|
||||
namespace MiscTests
|
||||
{
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
{
|
||||
REQUIRE( a != b );
|
||||
REQUIRE( b != a );
|
||||
}
|
||||
|
||||
SECTION( "s2", "not equal" )
|
||||
TEST_CASE( "random SECTION tests", "[.][sections][failing]" )
|
||||
{
|
||||
REQUIRE( a != b);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/Misc/Sections/nested", "nested SECTION tests" )
|
||||
{
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
{
|
||||
REQUIRE( a != b );
|
||||
REQUIRE( b != a );
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
{
|
||||
REQUIRE( a != b );
|
||||
REQUIRE( b != a );
|
||||
}
|
||||
|
||||
SECTION( "s2", "not equal" )
|
||||
{
|
||||
REQUIRE( a != b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./mixed/Misc/Sections/nested2", "nested SECTION tests" )
|
||||
{
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
TEST_CASE( "nested SECTION tests", "[.][sections][failing]" )
|
||||
{
|
||||
SECTION( "s2", "equal" )
|
||||
{
|
||||
REQUIRE( a == b );
|
||||
}
|
||||
|
||||
SECTION( "s3", "not equal" )
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
{
|
||||
REQUIRE( a != b );
|
||||
}
|
||||
SECTION( "s4", "less than" )
|
||||
{
|
||||
REQUIRE( a < b );
|
||||
REQUIRE( b != a );
|
||||
|
||||
SECTION( "s2", "not equal" )
|
||||
{
|
||||
REQUIRE( a != b);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./Sections/nested/a/b", "nested SECTION tests" )
|
||||
{
|
||||
SECTION( "c", "" )
|
||||
TEST_CASE( "more nested SECTION tests", "[sections][failing][.]" )
|
||||
{
|
||||
SECTION( "d (leaf)", "" )
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
SECTION( "s1", "doesn't equal" )
|
||||
{
|
||||
SECTION( "s2", "equal" )
|
||||
{
|
||||
REQUIRE( a == b );
|
||||
}
|
||||
|
||||
SECTION( "s3", "not equal" )
|
||||
{
|
||||
REQUIRE( a != b );
|
||||
}
|
||||
SECTION( "s4", "less than" )
|
||||
{
|
||||
REQUIRE( a < b );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "even more nested SECTION tests", "[sections]" )
|
||||
{
|
||||
SECTION( "c", "" )
|
||||
{
|
||||
SECTION( "d (leaf)", "" )
|
||||
{
|
||||
}
|
||||
|
||||
SECTION( "e (leaf)", "" )
|
||||
SECTION( "e (leaf)", "" )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
SECTION( "f (leaf)", "" )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
SECTION( "f (leaf)", "" )
|
||||
TEST_CASE( "looped SECTION tests", "[.][failing][sections]" )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./mixed/Misc/Sections/loops", "looped SECTION tests" )
|
||||
{
|
||||
int a = 1;
|
||||
int a = 1;
|
||||
|
||||
for( int b = 0; b < 10; ++b )
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << "b is currently: " << b;
|
||||
SECTION( "s1", oss.str() )
|
||||
for( int b = 0; b < 10; ++b )
|
||||
{
|
||||
CHECK( b > a );
|
||||
std::ostringstream oss;
|
||||
oss << "b is currently: " << b;
|
||||
SECTION( "s1", oss.str() )
|
||||
{
|
||||
CHECK( b > a );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./mixed/Misc/loops", "looped tests" )
|
||||
{
|
||||
static const int fib[] = { 1, 1, 2, 3, 5, 8, 13, 21 };
|
||||
|
||||
for( size_t i=0; i < sizeof(fib)/sizeof(int); ++i )
|
||||
TEST_CASE( "looped tests", "[.][failing]" )
|
||||
{
|
||||
INFO( "Testing if fib[" << i << "] (" << fib[i] << ") is even" );
|
||||
CHECK( ( fib[i] % 2 ) == 0 );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/Misc/stdout,stderr", "Sends stuff to stdout and stderr" )
|
||||
{
|
||||
std::cout << "Some information" << std::endl;
|
||||
static const int fib[] = { 1, 1, 2, 3, 5, 8, 13, 21 };
|
||||
|
||||
std::cerr << "An error" << std::endl;
|
||||
}
|
||||
for( size_t i=0; i < sizeof(fib)/sizeof(int); ++i )
|
||||
{
|
||||
INFO( "Testing if fib[" << i << "] (" << fib[i] << ") is even" );
|
||||
CHECK( ( fib[i] % 2 ) == 0 );
|
||||
}
|
||||
}
|
||||
|
||||
inline const char* makeString( bool makeNull )
|
||||
{
|
||||
return makeNull ? NULL : "valid string";
|
||||
}
|
||||
TEST_CASE( "Sends stuff to stdout and stderr", "" )
|
||||
{
|
||||
std::cout << "Some information" << std::endl;
|
||||
|
||||
std::cerr << "An error" << std::endl;
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/Misc/null strings", "" )
|
||||
{
|
||||
REQUIRE( makeString( false ) != static_cast<char*>(NULL));
|
||||
REQUIRE( makeString( true ) == static_cast<char*>(NULL));
|
||||
}
|
||||
inline const char* makeString( bool makeNull )
|
||||
{
|
||||
return makeNull ? NULL : "valid string";
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/info", "sends information to INFO" )
|
||||
{
|
||||
INFO( "hi" );
|
||||
int i = 7;
|
||||
CAPTURE( i );
|
||||
REQUIRE( false );
|
||||
}
|
||||
TEST_CASE( "null strings", "" )
|
||||
{
|
||||
REQUIRE( makeString( false ) != static_cast<char*>(NULL));
|
||||
REQUIRE( makeString( true ) == static_cast<char*>(NULL));
|
||||
}
|
||||
|
||||
inline bool testCheckedIf( bool flag )
|
||||
{
|
||||
CHECKED_IF( flag )
|
||||
|
||||
inline bool testCheckedIf( bool flag )
|
||||
{
|
||||
CHECKED_IF( flag )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
TEST_CASE( "checkedIf", "" )
|
||||
{
|
||||
REQUIRE( testCheckedIf( true ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "checkedIf, failing", "[failing][.]" )
|
||||
{
|
||||
REQUIRE( testCheckedIf( false ) );
|
||||
}
|
||||
|
||||
inline bool testCheckedElse( bool flag )
|
||||
{
|
||||
CHECKED_ELSE( flag )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/checkedif", "" )
|
||||
{
|
||||
REQUIRE( testCheckedIf( true ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/checkedif", "" )
|
||||
{
|
||||
REQUIRE( testCheckedIf( false ) );
|
||||
}
|
||||
|
||||
inline bool testCheckedElse( bool flag )
|
||||
{
|
||||
CHECKED_ELSE( flag )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST_CASE( "./succeeding/checkedelse", "" )
|
||||
{
|
||||
REQUIRE( testCheckedElse( true ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "./failing/checkedelse", "" )
|
||||
{
|
||||
REQUIRE( testCheckedElse( false ) );
|
||||
}
|
||||
|
||||
TEST_CASE( "./misc/xmlentitycheck", "" )
|
||||
{
|
||||
SECTION( "embedded xml", "<test>it should be possible to embed xml characters, such as <, \" or &, or even whole <xml>documents</xml> within an attribute</test>" )
|
||||
TEST_CASE( "checkedElse", "" )
|
||||
{
|
||||
// No test
|
||||
REQUIRE( testCheckedElse( true ) );
|
||||
}
|
||||
SECTION( "encoded chars", "these should all be encoded: &&&\"\"\"<<<&\"<<&\"" )
|
||||
|
||||
TEST_CASE( "checkedElse, failing", "[failing][.]" )
|
||||
{
|
||||
// No test
|
||||
REQUIRE( testCheckedElse( false ) );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "./manual/onechar", "send a single char to INFO" )
|
||||
{
|
||||
INFO(3);
|
||||
REQUIRE(false);
|
||||
}
|
||||
|
||||
TEST_CASE("./succeeding/atomic if", "")
|
||||
{
|
||||
size_t x = 0;
|
||||
|
||||
if( x )
|
||||
REQUIRE(x > 0);
|
||||
else
|
||||
REQUIRE(x == 0);
|
||||
}
|
||||
|
||||
inline const char* testStringForMatching()
|
||||
{
|
||||
return "this string contains 'abc' as a substring";
|
||||
}
|
||||
|
||||
TEST_CASE("./succeeding/matchers", "")
|
||||
{
|
||||
REQUIRE_THAT( testStringForMatching(), Contains( "string" ) );
|
||||
CHECK_THAT( testStringForMatching(), Contains( "abc" ) );
|
||||
|
||||
CHECK_THAT( testStringForMatching(), StartsWith( "this" ) );
|
||||
CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("./failing/matchers/Contains", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Contains( "not there" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("./failing/matchers/StartsWith", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), StartsWith( "string" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("./failing/matchers/EndsWith", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), EndsWith( "this" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("./failing/matchers/Equals", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Equals( "something else" ) );
|
||||
}
|
||||
TEST_CASE("string", "Equals with NULL")
|
||||
{
|
||||
REQUIRE_THAT("", Equals(NULL));
|
||||
}
|
||||
TEST_CASE("./succeeding/matchers/AllOf", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) );
|
||||
}
|
||||
TEST_CASE("./succeeding/matchers/AnyOf", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) );
|
||||
CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) );
|
||||
}
|
||||
|
||||
TEST_CASE("./succeeding/matchers/Equals", "")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) );
|
||||
}
|
||||
|
||||
inline unsigned int Factorial( unsigned int number )
|
||||
{
|
||||
// return number <= 1 ? number : Factorial(number-1)*number;
|
||||
return number > 1 ? Factorial(number-1)*number : 1;
|
||||
}
|
||||
|
||||
TEST_CASE( "Factorials are computed", "[factorial]" ) {
|
||||
REQUIRE( Factorial(0) == 1 );
|
||||
REQUIRE( Factorial(1) == 1 );
|
||||
REQUIRE( Factorial(2) == 2 );
|
||||
REQUIRE( Factorial(3) == 6 );
|
||||
REQUIRE( Factorial(10) == 3628800 );
|
||||
}
|
||||
|
||||
TEST_CASE( "empty", "An empty test with no assertions" )
|
||||
{
|
||||
}
|
||||
|
||||
TEST_CASE( "Nice descriptive name", "[tag1][tag2][tag3][.]" )
|
||||
{
|
||||
WARN( "This one ran" );
|
||||
}
|
||||
TEST_CASE( "first tag", "[tag1]" )
|
||||
{
|
||||
}
|
||||
TEST_CASE( "second tag", "[tag2]" )
|
||||
{
|
||||
}
|
||||
//
|
||||
//TEST_CASE( "spawn a new process", "[.]" )
|
||||
//{
|
||||
// // !TBD Work in progress
|
||||
// char line[200];
|
||||
// FILE* output = popen("./CatchSelfTest ./failing/matchers/StartsWith", "r");
|
||||
// while ( fgets(line, 199, output) )
|
||||
// std::cout << line;
|
||||
//}
|
||||
|
||||
TEST_CASE( "vectors can be sized and resized", "[vector]" ) {
|
||||
|
||||
std::vector<int> v( 5 );
|
||||
|
||||
REQUIRE( v.size() == 5 );
|
||||
REQUIRE( v.capacity() >= 5 );
|
||||
|
||||
SECTION( "resizing bigger changes size and capacity", "" ) {
|
||||
v.resize( 10 );
|
||||
|
||||
REQUIRE( v.size() == 10 );
|
||||
REQUIRE( v.capacity() >= 10 );
|
||||
}
|
||||
SECTION( "resizing smaller changes size but not capacity", "" ) {
|
||||
v.resize( 0 );
|
||||
|
||||
REQUIRE( v.size() == 0 );
|
||||
REQUIRE( v.capacity() >= 5 );
|
||||
|
||||
SECTION( "We can use the 'swap trick' to reset the capacity", "" ) {
|
||||
std::vector<int> empty;
|
||||
empty.swap( v );
|
||||
|
||||
REQUIRE( v.capacity() == 0 );
|
||||
TEST_CASE( "xmlentitycheck", "" )
|
||||
{
|
||||
SECTION( "embedded xml", "<test>it should be possible to embed xml characters, such as <, \" or &, or even whole <xml>documents</xml> within an attribute</test>" )
|
||||
{
|
||||
// No test
|
||||
}
|
||||
SECTION( "encoded chars", "these should all be encoded: &&&\"\"\"<<<&\"<<&\"" )
|
||||
{
|
||||
// No test
|
||||
}
|
||||
}
|
||||
SECTION( "reserving bigger changes capacity but not size", "" ) {
|
||||
v.reserve( 10 );
|
||||
|
||||
REQUIRE( v.size() == 5 );
|
||||
REQUIRE( v.capacity() >= 10 );
|
||||
|
||||
TEST_CASE( "send a single char to INFO", "[failing][.]" )
|
||||
{
|
||||
INFO(3);
|
||||
REQUIRE(false);
|
||||
}
|
||||
SECTION( "reserving smaller does not change size or capacity", "" ) {
|
||||
v.reserve( 0 );
|
||||
|
||||
|
||||
TEST_CASE( "atomic if", "[failing][0]")
|
||||
{
|
||||
size_t x = 0;
|
||||
|
||||
if( x )
|
||||
REQUIRE(x > 0);
|
||||
else
|
||||
REQUIRE(x == 0);
|
||||
}
|
||||
|
||||
inline const char* testStringForMatching()
|
||||
{
|
||||
return "this string contains 'abc' as a substring";
|
||||
}
|
||||
|
||||
TEST_CASE("String matchers", "[matchers]" )
|
||||
{
|
||||
REQUIRE_THAT( testStringForMatching(), Contains( "string" ) );
|
||||
CHECK_THAT( testStringForMatching(), Contains( "abc" ) );
|
||||
|
||||
CHECK_THAT( testStringForMatching(), StartsWith( "this" ) );
|
||||
CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("Contains string matcher", "[.][failing][matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Contains( "not there" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("StartsWith string matcher", "[.][failing][matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), StartsWith( "string" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("EndsWith string matcher", "[.][failing][matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), EndsWith( "this" ) );
|
||||
}
|
||||
|
||||
TEST_CASE("Equals string matcher", "[.][failing][matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Equals( "something else" ) );
|
||||
}
|
||||
TEST_CASE("Equals string matcher, with NULL", "[matchers]")
|
||||
{
|
||||
REQUIRE_THAT("", Equals(NULL));
|
||||
}
|
||||
TEST_CASE("AllOf matcher", "[matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) );
|
||||
}
|
||||
TEST_CASE("AnyOf matcher", "[matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) );
|
||||
CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) );
|
||||
}
|
||||
|
||||
TEST_CASE("Equals", "[matchers]")
|
||||
{
|
||||
CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) );
|
||||
}
|
||||
|
||||
inline unsigned int Factorial( unsigned int number )
|
||||
{
|
||||
// return number <= 1 ? number : Factorial(number-1)*number;
|
||||
return number > 1 ? Factorial(number-1)*number : 1;
|
||||
}
|
||||
|
||||
TEST_CASE( "Factorials are computed", "[factorial]" ) {
|
||||
REQUIRE( Factorial(0) == 1 );
|
||||
REQUIRE( Factorial(1) == 1 );
|
||||
REQUIRE( Factorial(2) == 2 );
|
||||
REQUIRE( Factorial(3) == 6 );
|
||||
REQUIRE( Factorial(10) == 3628800 );
|
||||
}
|
||||
|
||||
TEST_CASE( "An empty test with no assertions", "[empty]" )
|
||||
{
|
||||
}
|
||||
|
||||
TEST_CASE( "Nice descriptive name", "[tag1][tag2][tag3][.]" )
|
||||
{
|
||||
WARN( "This one ran" );
|
||||
}
|
||||
TEST_CASE( "first tag", "[tag1]" )
|
||||
{
|
||||
}
|
||||
TEST_CASE( "second tag", "[tag2]" )
|
||||
{
|
||||
}
|
||||
//
|
||||
//TEST_CASE( "spawn a new process", "[.]" )
|
||||
//{
|
||||
// // !TBD Work in progress
|
||||
// char line[200];
|
||||
// FILE* output = popen("./CatchSelfTest ./failing/matchers/StartsWith", "r");
|
||||
// while ( fgets(line, 199, output) )
|
||||
// std::cout << line;
|
||||
//}
|
||||
|
||||
TEST_CASE( "vectors can be sized and resized", "[vector]" ) {
|
||||
|
||||
std::vector<int> v( 5 );
|
||||
|
||||
REQUIRE( v.size() == 5 );
|
||||
REQUIRE( v.capacity() >= 5 );
|
||||
|
||||
SECTION( "resizing bigger changes size and capacity", "" ) {
|
||||
v.resize( 10 );
|
||||
|
||||
REQUIRE( v.size() == 10 );
|
||||
REQUIRE( v.capacity() >= 10 );
|
||||
}
|
||||
SECTION( "resizing smaller changes size but not capacity", "" ) {
|
||||
v.resize( 0 );
|
||||
|
||||
REQUIRE( v.size() == 0 );
|
||||
REQUIRE( v.capacity() >= 5 );
|
||||
|
||||
SECTION( "We can use the 'swap trick' to reset the capacity", "" ) {
|
||||
std::vector<int> empty;
|
||||
empty.swap( v );
|
||||
|
||||
REQUIRE( v.capacity() == 0 );
|
||||
}
|
||||
}
|
||||
SECTION( "reserving bigger changes capacity but not size", "" ) {
|
||||
v.reserve( 10 );
|
||||
|
||||
REQUIRE( v.size() == 5 );
|
||||
REQUIRE( v.capacity() >= 10 );
|
||||
}
|
||||
SECTION( "reserving smaller does not change size or capacity", "" ) {
|
||||
v.reserve( 0 );
|
||||
|
||||
REQUIRE( v.size() == 5 );
|
||||
REQUIRE( v.capacity() >= 5 );
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/philsquared/Catch/issues/166
|
||||
TEST_CASE("A couple of nested sections followed by a failure", "[failing][.]")
|
||||
{
|
||||
SECTION("Outer", "")
|
||||
SECTION("Inner", "")
|
||||
SUCCEED("that's not flying - that's failing in style");
|
||||
|
||||
FAIL("to infinity and beyond");
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/philsquared/Catch/issues/166
|
||||
TEST_CASE("./failing/CatchSectionInfiniteLoop", "")
|
||||
{
|
||||
SECTION("Outer", "")
|
||||
SECTION("Inner", "")
|
||||
SUCCEED("that's not flying - that's failing in style");
|
||||
|
||||
FAIL("to infinity and beyond");
|
||||
}
|
||||
|
||||
|
||||
//#include "internal/catch_timer.h"
|
||||
//
|
||||
//TEST_CASE( "Timer", "[work-in-progress]" )
|
||||
//{
|
||||
// Catch::Timer t;
|
||||
// t.start();
|
||||
//
|
||||
// std::cout << "starting..." << std::endl;
|
||||
//
|
||||
// double d = 0;
|
||||
// for( int i = 0; i < 100000; ++i )
|
||||
// for( int j = 0; j < 1000; ++j )
|
||||
// d += (double)i*(double)j;
|
||||
//
|
||||
// double duration = t.getElapsedSeconds();
|
||||
//
|
||||
// std::cout << "finished in " << duration << std::endl;
|
||||
//
|
||||
// SUCCEED("yay");
|
||||
//
|
||||
//}
|
||||
|
@@ -1,2 +1,2 @@
|
||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
||||
#include "catch_debugger.hpp"
|
||||
#include "catch_debugger.h"
|
||||
|
@@ -1,2 +1,2 @@
|
||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
||||
#include "catch_stream.hpp"
|
||||
#include "catch_stream.h"
|
||||
|
@@ -1,2 +1,2 @@
|
||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
||||
#include "catch_tags.hpp"
|
||||
#include "catch_tags.h"
|
||||
|
@@ -5,69 +5,17 @@
|
||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#if !defined(_WINDLL)
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#endif
|
||||
#include "catch.hpp"
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic ignored "-Wpadded"
|
||||
#endif
|
||||
|
||||
#include "catch_self_test.hpp"
|
||||
#include "internal/catch_text.h"
|
||||
#include "internal/catch_console_colour.hpp"
|
||||
|
||||
TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" ) {
|
||||
using namespace Catch;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
SECTION( "selftest/expected result",
|
||||
"Tests do what they claim" ) {
|
||||
|
||||
SECTION( "selftest/expected result/failing tests",
|
||||
"Tests in the 'failing' branch fail" ) {
|
||||
MetaTestRunner::runMatching( "./failing/*", MetaTestRunner::Expected::ToFail, 0, 2 );
|
||||
}
|
||||
|
||||
SECTION( "selftest/expected result/succeeding tests",
|
||||
"Tests in the 'succeeding' branch succeed" ) {
|
||||
MetaTestRunner::runMatching( "./succeeding/*", MetaTestRunner::Expected::ToSucceed, 1, 2 );
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
SECTION( "selftest/test counts",
|
||||
"Number of test cases that run is fixed" ) {
|
||||
EmbeddedRunner runner;
|
||||
|
||||
SECTION( "selftest/test counts/succeeding tests",
|
||||
"Number of 'succeeding' tests is fixed" ) {
|
||||
Totals totals = runner.runMatching( "./succeeding/*", 0, 2 );
|
||||
CHECK( totals.assertions.passed == 298 );
|
||||
CHECK( totals.assertions.failed == 0 );
|
||||
}
|
||||
|
||||
SECTION( "selftest/test counts/failing tests",
|
||||
"Number of 'failing' tests is fixed" ) {
|
||||
Totals totals = runner.runMatching( "./failing/*", 1, 2 );
|
||||
CHECK( totals.assertions.passed == 2 );
|
||||
CHECK( totals.assertions.failed == 77 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "meta/Misc/Sections", "looped tests" ) {
|
||||
Catch::EmbeddedRunner runner;
|
||||
|
||||
Catch::Totals totals = runner.runMatching( "./mixed/Misc/Sections/nested2", 0, 1 );
|
||||
CHECK( totals.assertions.passed == 2 );
|
||||
CHECK( totals.assertions.failed == 1 );
|
||||
}
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||
#endif
|
||||
|
||||
#include "../../include/internal/catch_commandline.hpp"
|
||||
#include "../../include/internal/catch_test_spec.h"
|
||||
#include "../../include/reporters/catch_reporter_xml.hpp"
|
||||
|
||||
template<size_t size>
|
||||
void parseIntoConfig( const char * (&argv)[size], Catch::ConfigData& config ) {
|
||||
Clara::CommandLine<Catch::ConfigData> parser = Catch::makeCommandLineParser();
|
||||
|
@@ -24,94 +24,97 @@ namespace Catch
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/Tricky/std::pair",
|
||||
"Parsing a std::pair"
|
||||
)
|
||||
namespace TrickTests
|
||||
{
|
||||
std::pair<int, int> aNicePair( 1, 2 );
|
||||
|
||||
REQUIRE( (std::pair<int, int>( 1, 2 )) == aNicePair );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./inprogress/failing/Tricky/trailing expression",
|
||||
"Where the is more to the expression after the RHS"
|
||||
)
|
||||
{
|
||||
// int a = 1, b = 2;
|
||||
// REQUIRE( a == 2 || b == 2 );
|
||||
WARN( "Uncomment the code in this test to check that it gives a sensible compiler error" );
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./inprogress/failing/Tricky/compound lhs",
|
||||
"Where the LHS is not a simple value"
|
||||
)
|
||||
{
|
||||
/*
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
// This only captures part of the expression, but issues a warning about the rest
|
||||
REQUIRE( a+1 == b-1 );
|
||||
*/
|
||||
WARN( "Uncomment the code in this test to check that it gives a sensible compiler error" );
|
||||
}
|
||||
|
||||
struct Opaque
|
||||
{
|
||||
int val;
|
||||
bool operator ==( const Opaque& o ) const
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"Parsing a std::pair",
|
||||
"[Tricky][std::pair]"
|
||||
)
|
||||
{
|
||||
return val == o.val;
|
||||
std::pair<int, int> aNicePair( 1, 2 );
|
||||
|
||||
REQUIRE( (std::pair<int, int>( 1, 2 )) == aNicePair );
|
||||
}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./failing/Tricky/non streamable type",
|
||||
"A failing expression with a non streamable type is still captured"
|
||||
)
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"Where the is more to the expression after the RHS[failing]",
|
||||
"[Tricky][failing][.]"
|
||||
)
|
||||
{
|
||||
// int a = 1, b = 2;
|
||||
// REQUIRE( a == 2 || b == 2 );
|
||||
WARN( "Uncomment the code in this test to check that it gives a sensible compiler error" );
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"Where the LHS is not a simple value[failing]",
|
||||
"[Tricky][failing][.]"
|
||||
)
|
||||
{
|
||||
/*
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
|
||||
Opaque o1, o2;
|
||||
o1.val = 7;
|
||||
o2.val = 8;
|
||||
// This only captures part of the expression, but issues a warning about the rest
|
||||
REQUIRE( a+1 == b-1 );
|
||||
*/
|
||||
WARN( "Uncomment the code in this test to check that it gives a sensible compiler error" );
|
||||
}
|
||||
|
||||
struct Opaque
|
||||
{
|
||||
int val;
|
||||
bool operator ==( const Opaque& o ) const
|
||||
{
|
||||
return val == o.val;
|
||||
}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"A failing expression with a non streamable type is still captured[failing]",
|
||||
"[Tricky][failing][.]"
|
||||
)
|
||||
{
|
||||
|
||||
Opaque o1, o2;
|
||||
o1.val = 7;
|
||||
o2.val = 8;
|
||||
|
||||
CHECK( &o1 == &o2 );
|
||||
CHECK( o1 == o2 );
|
||||
}
|
||||
CHECK( &o1 == &o2 );
|
||||
CHECK( o1 == o2 );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./failing/string literals",
|
||||
"string literals of different sizes can be compared"
|
||||
)
|
||||
{
|
||||
REQUIRE( std::string( "first" ) == "second" );
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"string literals of different sizes can be compared[failing]",
|
||||
"[Tricky][failing][.]"
|
||||
)
|
||||
{
|
||||
REQUIRE( std::string( "first" ) == "second" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/side-effects",
|
||||
"An expression with side-effects should only be evaluated once"
|
||||
)
|
||||
{
|
||||
int i = 7;
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"An expression with side-effects should only be evaluated once",
|
||||
"[Tricky]"
|
||||
)
|
||||
{
|
||||
int i = 7;
|
||||
|
||||
REQUIRE( i++ == 7 );
|
||||
REQUIRE( i++ == 8 );
|
||||
REQUIRE( i++ == 7 );
|
||||
REQUIRE( i++ == 8 );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
namespace A {
|
||||
@@ -151,8 +154,8 @@ inline bool operator==(const B::Y& lhs, const A::X& rhs)
|
||||
/* This, currently, does not compile with LLVM
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/koenig",
|
||||
"Operators at different namespace levels not hijacked by Koenig lookup"
|
||||
"[Tricky]"
|
||||
)
|
||||
{
|
||||
A::X x;
|
||||
@@ -171,8 +174,8 @@ namespace ObjectWithConversions
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
TEST_CASE
|
||||
(
|
||||
"./succeeding/koenig",
|
||||
"Operators at different namespace levels not hijacked by Koenig lookup"
|
||||
"Operators at different namespace levels not hijacked by Koenig lookup",
|
||||
"[Tricky]"
|
||||
)
|
||||
{
|
||||
Object o;
|
||||
@@ -199,7 +202,7 @@ namespace ObjectWithNonConstEqualityOperator
|
||||
unsigned int m_value;
|
||||
};
|
||||
|
||||
TEST_CASE("./succeeding/non-const==", "Demonstrate that a non-const == is not used")
|
||||
TEST_CASE("Demonstrate that a non-const == is not used", "[Tricky]" )
|
||||
{
|
||||
Test t( 1 );
|
||||
REQUIRE( t == 1u );
|
||||
@@ -212,7 +215,7 @@ namespace EnumBitFieldTests
|
||||
bit30 = 0x40000000, bit31 = 0x80000000,
|
||||
bit30and31 = 0xc0000000};
|
||||
|
||||
TEST_CASE("./succeeding/enum/bits", "Test enum bit values")
|
||||
TEST_CASE( "Test enum bit values", "[Tricky]" )
|
||||
{
|
||||
REQUIRE( 0xc0000000 == bit30and31 );
|
||||
}
|
||||
@@ -226,7 +229,7 @@ struct Obj
|
||||
int* prop;
|
||||
};
|
||||
|
||||
TEST_CASE("./succeeding/boolean member", "")
|
||||
TEST_CASE("boolean member", "[Tricky]")
|
||||
{
|
||||
Obj obj;
|
||||
REQUIRE( obj.prop != NULL );
|
||||
@@ -238,14 +241,14 @@ TEST_CASE("./succeeding/boolean member", "")
|
||||
// struct it is declared in - but when evaluating it in a deduced
|
||||
// context it appears to require the extra definition.
|
||||
// The issue was fixed by adding bool overloads to bypass the
|
||||
// templates that were deduce it.
|
||||
// templates that were there to deduce it.
|
||||
template <bool B>
|
||||
struct is_true
|
||||
{
|
||||
static const bool value = B;
|
||||
};
|
||||
|
||||
TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evaluated" )
|
||||
TEST_CASE( "(unimplemented) static bools can be evaluated", "[Tricky]" )
|
||||
{
|
||||
SECTION("compare to true","")
|
||||
{
|
||||
@@ -277,11 +280,11 @@ TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evalua
|
||||
|
||||
// Uncomment these tests to produce an error at test registration time
|
||||
/*
|
||||
TEST_CASE( "./sameName", "Tests with the same name are not allowed" )
|
||||
TEST_CASE( "Tests with the same name are not allowed", "[Tricky]" )
|
||||
{
|
||||
|
||||
}
|
||||
TEST_CASE( "./sameName", "Tests with the same name are not allowed" )
|
||||
TEST_CASE( "Tests with the same name are not allowed", "[Tricky]" )
|
||||
{
|
||||
|
||||
}
|
||||
@@ -298,7 +301,7 @@ struct Boolable
|
||||
bool m_value;
|
||||
};
|
||||
|
||||
TEST_CASE( "./succeeding/SafeBool", "Objects that evaluated in boolean contexts can be checked")
|
||||
TEST_CASE( "Objects that evaluated in boolean contexts can be checked", "[Tricky][SafeBool]" )
|
||||
{
|
||||
Boolable True( true );
|
||||
Boolable False( false );
|
||||
@@ -308,7 +311,7 @@ TEST_CASE( "./succeeding/SafeBool", "Objects that evaluated in boolean contexts
|
||||
CHECK_FALSE( False );
|
||||
}
|
||||
|
||||
TEST_CASE( "Assertions then sections", "" )
|
||||
TEST_CASE( "Assertions then sections", "[Tricky]" )
|
||||
{
|
||||
// This was causing a failure due to the way the console reporter was handling
|
||||
// the current section
|
||||
@@ -335,7 +338,7 @@ struct Awkward
|
||||
operator int() const { return 7; }
|
||||
};
|
||||
|
||||
TEST_CASE( "non streamable - with conv. op", "" )
|
||||
TEST_CASE( "non streamable - with conv. op", "[Tricky]" )
|
||||
{
|
||||
Awkward awkward;
|
||||
std::string s = Catch::toString( awkward );
|
||||
@@ -346,7 +349,7 @@ inline void foo() {}
|
||||
|
||||
typedef void (*fooptr_t)();
|
||||
|
||||
TEST_CASE( "Comparing function pointers", "[function pointer]" )
|
||||
TEST_CASE( "Comparing function pointers", "[Tricky][function pointer]" )
|
||||
{
|
||||
// This was giving a warning in VS2010
|
||||
// #179
|
||||
@@ -358,7 +361,7 @@ TEST_CASE( "Comparing function pointers", "[function pointer]" )
|
||||
|
||||
class ClassName {};
|
||||
|
||||
TEST_CASE( "pointer to class", "" )
|
||||
TEST_CASE( "pointer to class", "[Tricky]" )
|
||||
{
|
||||
ClassName *p = 0;
|
||||
REQUIRE( p == 0 );
|
||||
@@ -368,7 +371,7 @@ TEST_CASE( "pointer to class", "" )
|
||||
|
||||
#include <memory>
|
||||
|
||||
TEST_CASE( "null_ptr", "" )
|
||||
TEST_CASE( "null_ptr", "[Tricky]" )
|
||||
{
|
||||
std::unique_ptr<int> ptr;
|
||||
REQUIRE(ptr.get() == nullptr);
|
||||
@@ -376,7 +379,7 @@ TEST_CASE( "null_ptr", "" )
|
||||
|
||||
#endif
|
||||
|
||||
TEST_CASE( "X/level/0/a", "" ) { SUCCEED(""); }
|
||||
TEST_CASE( "X/level/0/b", "[fizz]" ) { SUCCEED(""); }
|
||||
TEST_CASE( "X/level/1/a", "" ) { SUCCEED(""); }
|
||||
TEST_CASE( "X/level/1/b", "" ) { SUCCEED("");}
|
||||
TEST_CASE( "X/level/0/a", "[Tricky]" ) { SUCCEED(""); }
|
||||
TEST_CASE( "X/level/0/b", "[Tricky][fizz]" ){ SUCCEED(""); }
|
||||
TEST_CASE( "X/level/1/a", "[Tricky]" ) { SUCCEED(""); }
|
||||
TEST_CASE( "X/level/1/b", "[Tricky]" ) { SUCCEED(""); }
|
||||
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Created by Phil on 14/02/2012.
|
||||
* Copyright 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch_self_test.hpp"
|
||||
|
||||
namespace Catch{
|
||||
|
||||
NullStreamingReporter::~NullStreamingReporter() {}
|
||||
|
||||
Totals EmbeddedRunner::runMatching( const std::string& rawTestSpec, std::size_t groupIndex, std::size_t groupsCount, const std::string& ) {
|
||||
std::ostringstream oss;
|
||||
Ptr<Config> config = new Config();
|
||||
config->setStreamBuf( oss.rdbuf() );
|
||||
|
||||
Totals totals;
|
||||
|
||||
// Scoped because RunContext doesn't report EndTesting until its destructor
|
||||
{
|
||||
RunContext runner( config.get(), m_reporter.get() );
|
||||
totals = runner.runMatching( rawTestSpec, groupIndex, groupsCount );
|
||||
}
|
||||
return totals;
|
||||
}
|
||||
|
||||
}
|
@@ -1,177 +0,0 @@
|
||||
/*
|
||||
* Created by Phil on 14/01/2011.
|
||||
* Copyright 2011 Two Blue Cubes Ltd. All rights reserved.
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
#ifndef TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED
|
||||
#define TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED
|
||||
|
||||
#include "catch.hpp"
|
||||
|
||||
// Use this external guard here as if we're using the single header version
|
||||
// this will already be defined
|
||||
#ifndef TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED
|
||||
#include "catch_interfaces_registry_hub.h"
|
||||
#endif
|
||||
|
||||
#include "set"
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wpadded"
|
||||
#endif
|
||||
|
||||
namespace Catch {
|
||||
|
||||
class NullStreamingReporter : public SharedImpl<IStreamingReporter> {
|
||||
public:
|
||||
|
||||
virtual ~NullStreamingReporter();
|
||||
|
||||
static std::string getDescription() {
|
||||
return "null reporter";
|
||||
}
|
||||
|
||||
private: // IStreamingReporter
|
||||
|
||||
virtual ReporterPreferences getPreferences() const {
|
||||
return ReporterPreferences();
|
||||
}
|
||||
|
||||
virtual void noMatchingTestCases( std::string const& ) {}
|
||||
virtual void testRunStarting( TestRunInfo const& ) {}
|
||||
virtual void testGroupStarting( GroupInfo const& ) {}
|
||||
virtual void testCaseStarting( TestCaseInfo const& ) {}
|
||||
virtual void sectionStarting( SectionInfo const& ) {}
|
||||
virtual void assertionStarting( AssertionInfo const& ) {}
|
||||
virtual bool assertionEnded( AssertionStats const& ) { return false; }
|
||||
virtual void sectionEnded( SectionStats const& ) {}
|
||||
virtual void testCaseEnded( TestCaseStats const& ) {}
|
||||
virtual void testGroupEnded( TestGroupStats const& ) {}
|
||||
virtual void testRunEnded( TestRunStats const& ) {}
|
||||
};
|
||||
|
||||
class EmbeddedRunner {
|
||||
|
||||
public:
|
||||
EmbeddedRunner() : m_reporter( new NullStreamingReporter() ) {}
|
||||
|
||||
Totals runMatching( const std::string& rawTestSpec,
|
||||
std::size_t groupIndex,
|
||||
std::size_t groupsCount,
|
||||
const std::string& reporter = "console" );
|
||||
|
||||
private:
|
||||
Ptr<IStreamingReporter> m_reporter;
|
||||
};
|
||||
|
||||
class MetaTestRunner {
|
||||
|
||||
public:
|
||||
struct Expected { enum Result {
|
||||
ToSucceed,
|
||||
ToFail
|
||||
}; };
|
||||
|
||||
MetaTestRunner( Expected::Result expectedResult, std::size_t groupIndex, std::size_t groupsCount )
|
||||
: m_expectedResult( expectedResult ),
|
||||
m_groupIndex( groupIndex ),
|
||||
m_groupsCount( groupsCount )
|
||||
{}
|
||||
|
||||
static void runMatching( const std::string& testSpec,
|
||||
Expected::Result expectedResult,
|
||||
std::size_t groupIndex,
|
||||
std::size_t groupsCount ) {
|
||||
forEach( getRegistryHub().getTestCaseRegistry().getMatchingTestCases( testSpec ),
|
||||
MetaTestRunner( expectedResult, groupIndex, groupsCount ) );
|
||||
}
|
||||
|
||||
void operator()( const TestCase& testCase ) {
|
||||
std::string name;
|
||||
Totals totals;
|
||||
{
|
||||
EmbeddedRunner runner;
|
||||
name = testCase.getTestCaseInfo().name;
|
||||
totals = runner.runMatching( name, m_groupIndex, m_groupsCount );
|
||||
}
|
||||
switch( m_expectedResult ) {
|
||||
case Expected::ToSucceed:
|
||||
if( totals.assertions.failed > 0 ) {
|
||||
FAIL( "Expected test case '"
|
||||
<< name
|
||||
<< "' to succeed but there was/ were "
|
||||
<< totals.assertions.failed << " failure(s)" );
|
||||
}
|
||||
else {
|
||||
SUCCEED( "Tests passed, as expected" );
|
||||
}
|
||||
break;
|
||||
case Expected::ToFail:
|
||||
if( totals.assertions.failed == 0 ) {
|
||||
FAIL( "Expected test case '"
|
||||
<< name
|
||||
<< "' to fail but there was/ were "
|
||||
<< totals.assertions.passed << " success(es)" );
|
||||
}
|
||||
else {
|
||||
SUCCEED( "Tests failed, as expected" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Expected::Result m_expectedResult;
|
||||
std::size_t m_groupIndex;
|
||||
std::size_t m_groupsCount;
|
||||
};
|
||||
|
||||
|
||||
struct LineInfoRegistry {
|
||||
|
||||
static LineInfoRegistry& get() {
|
||||
static LineInfoRegistry s_instance;
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
void registerLineInfo( const std::string& name,
|
||||
const SourceLineInfo& info ) {
|
||||
m_registry.insert( std::make_pair( name, info ) );
|
||||
}
|
||||
|
||||
const SourceLineInfo* find( const std::string& name ) const {
|
||||
std::map<std::string, SourceLineInfo>::const_iterator it = m_registry.find( name );
|
||||
return it == m_registry.end() ? NULL : &(it->second);
|
||||
}
|
||||
|
||||
const std::string infoForName( const std::string& name ) const {
|
||||
std::map<std::string, SourceLineInfo>::const_iterator it = m_registry.find( name );
|
||||
if( it == m_registry.end() )
|
||||
return "";
|
||||
std::ostringstream oss;
|
||||
oss << it->second;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
std::map<std::string, SourceLineInfo> m_registry;
|
||||
};
|
||||
|
||||
struct LineInfoRegistrar {
|
||||
LineInfoRegistrar( const char* name, const SourceLineInfo& lineInfo ) {
|
||||
LineInfoRegistry::get().registerLineInfo( name, lineInfo );
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#define CATCH_REGISTER_LINE_INFO( name ) ::Catch::LineInfoRegistrar INTERNAL_CATCH_UNIQUE_NAME( lineRegistrar )( name, ::Catch::SourceLineInfo( __FILE__, __LINE__ ) );
|
||||
#define CATCH_GET_LINE_INFO( name ) ::Catch::LineInfoRegistry::get().infoForName( name )
|
||||
|
||||
#endif // TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED
|
@@ -1,33 +0,0 @@
|
||||
========================================================================
|
||||
CONSOLE APPLICATION : TestCatch Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this TestCatch application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your TestCatch application.
|
||||
|
||||
|
||||
TestCatch.vcproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
TestCatch.cpp
|
||||
This is the main application source file.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named TestCatch.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@@ -296,10 +296,6 @@
|
||||
RelativePath="..\..\..\..\include\internal\catch_section.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\include\internal\catch_self_test.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\include\internal\catch_stream.hpp"
|
||||
>
|
||||
@@ -351,10 +347,6 @@
|
||||
RelativePath="..\..\..\SelfTest\BDDTests.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\SelfTest\catch_self_test.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\SelfTest\ClassTests.cpp"
|
||||
>
|
||||
@@ -396,10 +388,6 @@
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\ReadMe.txt"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
|
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?><UpgradeLog>
|
||||
<Properties><Property Name="Solution" Value="TestCatch">
|
||||
</Property><Property Name="Solution File" Value="\\psf\Home\Dev\TwoBlueCubes\Dev\GitHub\CatchBugFix\projects\VisualStudio\TestCatch\TestCatch.sln">
|
||||
</Property><Property Name="Date" Value="Friday, March 02, 2012">
|
||||
</Property><Property Name="Time" Value="7:43 AM">
|
||||
</Property></Properties><Event ErrorLevel="0" Project="TestCatch" Source="TestCatch\TestCatch.vcproj" Description="Converting project file '\\psf\Home\Dev\TwoBlueCubes\Dev\GitHub\CatchBugFix\projects\VisualStudio\TestCatch\TestCatch\TestCatch.vcproj'.">
|
||||
</Event><Event ErrorLevel="1" Project="TestCatch" Source="TestCatch\TestCatch.vcproj" Description="VCWebServiceProxyGeneratorTool is no longer supported. The tool has been removed from your project settings.">
|
||||
</Event><Event ErrorLevel="0" Project="TestCatch" Source="TestCatch\TestCatch.vcproj" Description="Done converting to new project file '\\psf\Home\Dev\TwoBlueCubes\Dev\GitHub\CatchBugFix\projects\VisualStudio\TestCatch\TestCatch\TestCatch.vcxproj'.">
|
||||
</Event><Event ErrorLevel="3" Project="TestCatch" Source="TestCatch\TestCatch.vcproj" Description="Converted">
|
||||
</Event><Event ErrorLevel="0" Project="" Source="TestCatch.sln" Description="Solution converted successfully">
|
||||
</Event><Event ErrorLevel="3" Project="" Source="TestCatch.sln" Description="Converted">
|
||||
</Event></UpgradeLog>
|
@@ -1,207 +0,0 @@
|
||||
BODY
|
||||
{
|
||||
BACKGROUND-COLOR: white;
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-LEFT: 0px;
|
||||
MARGIN-TOP: 0px
|
||||
}
|
||||
P
|
||||
{
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 70%;
|
||||
LINE-HEIGHT: 12pt;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 10px
|
||||
}
|
||||
.note
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
COLOR: #336699;
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-LEFT: 0px;
|
||||
MARGIN-TOP: 0px;
|
||||
PADDING-RIGHT: 10px
|
||||
}
|
||||
.infotable
|
||||
{
|
||||
BACKGROUND-COLOR: #f0f0e0;
|
||||
BORDER-BOTTOM: #ffffff 0px solid;
|
||||
BORDER-COLLAPSE: collapse;
|
||||
BORDER-LEFT: #ffffff 0px solid;
|
||||
BORDER-RIGHT: #ffffff 0px solid;
|
||||
BORDER-TOP: #ffffff 0px solid;
|
||||
FONT-SIZE: 70%;
|
||||
MARGIN-LEFT: 10px
|
||||
}
|
||||
.issuetable
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffe8;
|
||||
BORDER-COLLAPSE: collapse;
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-BOTTOM: 10px;
|
||||
MARGIN-LEFT: 13px;
|
||||
MARGIN-TOP: 0px
|
||||
}
|
||||
.issuetitle
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px;
|
||||
COLOR: #003366;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.header
|
||||
{
|
||||
BACKGROUND-COLOR: #cecf9c;
|
||||
BORDER-BOTTOM: #ffffff 1px solid;
|
||||
BORDER-LEFT: #ffffff 1px solid;
|
||||
BORDER-RIGHT: #ffffff 1px solid;
|
||||
BORDER-TOP: #ffffff 1px solid;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: bold
|
||||
}
|
||||
.issuehdr
|
||||
{
|
||||
BACKGROUND-COLOR: #E0EBF5;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px solid;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.issuenone
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: 0px;
|
||||
BORDER-LEFT: 0px;
|
||||
BORDER-RIGHT: 0px;
|
||||
BORDER-TOP: 0px;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.content
|
||||
{
|
||||
BACKGROUND-COLOR: #e7e7ce;
|
||||
BORDER-BOTTOM: #ffffff 1px solid;
|
||||
BORDER-LEFT: #ffffff 1px solid;
|
||||
BORDER-RIGHT: #ffffff 1px solid;
|
||||
BORDER-TOP: #ffffff 1px solid;
|
||||
PADDING-LEFT: 3px
|
||||
}
|
||||
.issuecontent
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px solid;
|
||||
PADDING-LEFT: 3px
|
||||
}
|
||||
A:link
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
TEXT-DECORATION: underline
|
||||
}
|
||||
A:visited
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
}
|
||||
A:active
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
}
|
||||
A:hover
|
||||
{
|
||||
COLOR: #cc3300;
|
||||
TEXT-DECORATION: underline
|
||||
}
|
||||
H1
|
||||
{
|
||||
BACKGROUND-COLOR: #003366;
|
||||
BORDER-BOTTOM: #336699 6px solid;
|
||||
COLOR: #ffffff;
|
||||
FONT-SIZE: 130%;
|
||||
FONT-WEIGHT: normal;
|
||||
MARGIN: 0em 0em 0em -20px;
|
||||
PADDING-BOTTOM: 8px;
|
||||
PADDING-LEFT: 30px;
|
||||
PADDING-TOP: 16px
|
||||
}
|
||||
H2
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 80%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: 3px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 20px;
|
||||
PADDING-LEFT: 0px
|
||||
}
|
||||
H3
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 80%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: -5px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 20px
|
||||
}
|
||||
H4
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-TOP: 15px;
|
||||
PADDING-BOTTOM: 0px
|
||||
}
|
||||
UL
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
LIST-STYLE: square;
|
||||
MARGIN-BOTTOM: 0pt;
|
||||
MARGIN-TOP: 0pt
|
||||
}
|
||||
OL
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
LIST-STYLE: square;
|
||||
MARGIN-BOTTOM: 0pt;
|
||||
MARGIN-TOP: 0pt
|
||||
}
|
||||
LI
|
||||
{
|
||||
LIST-STYLE: square;
|
||||
MARGIN-LEFT: 0px
|
||||
}
|
||||
.expandable
|
||||
{
|
||||
CURSOR: hand
|
||||
}
|
||||
.expanded
|
||||
{
|
||||
color: black
|
||||
}
|
||||
.collapsed
|
||||
{
|
||||
DISPLAY: none
|
||||
}
|
||||
.foot
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #cecf9c 1px solid;
|
||||
BORDER-TOP: #cecf9c 2px solid
|
||||
}
|
||||
.settings
|
||||
{
|
||||
MARGIN-LEFT: 25PX;
|
||||
}
|
||||
.help
|
||||
{
|
||||
TEXT-ALIGN: right;
|
||||
margin-right: 10px;
|
||||
}
|
@@ -1,232 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
|
||||
|
||||
<xsl:key name="ProjectKey" match="Event" use="@Project" />
|
||||
|
||||
<xsl:template match="Events" mode="createProjects">
|
||||
<projects>
|
||||
<xsl:for-each select="Event">
|
||||
<!--xsl:sort select="@Project" order="descending"/-->
|
||||
<xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Project != @Project)">
|
||||
|
||||
<xsl:variable name="ProjectName" select="@Project"/>
|
||||
|
||||
<project>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@Project"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:if test="@Project=''">
|
||||
<xsl:attribute name="solution">
|
||||
<xsl:value-of select="@Solution"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:for-each select="key('ProjectKey', $ProjectName)">
|
||||
<!--xsl:sort select="@Source" /-->
|
||||
<xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Source != @Source)">
|
||||
|
||||
<source>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:variable name="Source">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:for-each select="key('ProjectKey', $ProjectName)[ @Source = $Source ]">
|
||||
|
||||
<event>
|
||||
<xsl:attribute name="error-level">
|
||||
<xsl:value-of select="@ErrorLevel"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="description">
|
||||
<xsl:value-of select="@Description"/>
|
||||
</xsl:attribute>
|
||||
</event>
|
||||
</xsl:for-each>
|
||||
</source>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
</project>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</projects>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="projects">
|
||||
<xsl:for-each select="project">
|
||||
<xsl:sort select="@Name" order="ascending"/>
|
||||
<h2>
|
||||
<xsl:if test="@solution"><a _locID="Solution">Solution</a>: <xsl:value-of select="@solution"/></xsl:if>
|
||||
<xsl:if test="not(@solution)"><a _locID="Project">Project</a>: <xsl:value-of select="@name"/>
|
||||
<xsl:for-each select="source">
|
||||
<xsl:variable name="Hyperlink" select="@name"/>
|
||||
<xsl:for-each select="event[@error-level='4']">
|
||||
 <A class="note"><xsl:attribute name="HREF"><xsl:value-of select="$Hyperlink"/></xsl:attribute><xsl:value-of select="@description"/></A>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
</h2>
|
||||
|
||||
<table cellpadding="2" cellspacing="0" width="98%" border="1" bordercolor="white" class="infotable">
|
||||
<tr>
|
||||
<td nowrap="1" class="header" _locID="Filename">Filename</td>
|
||||
<td nowrap="1" class="header" _locID="Status">Status</td>
|
||||
<td nowrap="1" class="header" _locID="Errors">Errors</td>
|
||||
<td nowrap="1" class="header" _locID="Warnings">Warnings</td>
|
||||
</tr>
|
||||
|
||||
<xsl:for-each select="source">
|
||||
<xsl:sort select="@name" order="ascending"/>
|
||||
<xsl:variable name="source-id" select="generate-id(.)"/>
|
||||
|
||||
<xsl:if test="count(event)!=count(event[@error-level='4'])">
|
||||
|
||||
<tr class="row">
|
||||
<td class="content">
|
||||
<A HREF="javascript:"><xsl:attribute name="onClick">javascript:document.images['<xsl:value-of select="$source-id"/>'].click()</xsl:attribute><IMG border="0" _locID="IMG.alt" _locAttrData="alt" alt="expand/collapse section" class="expandable" height="11" onclick="changepic()" src="_UpgradeReport_Files/UpgradeReport_Plus.gif" width="9" ><xsl:attribute name="name"><xsl:value-of select="$source-id"/></xsl:attribute><xsl:attribute name="child">src<xsl:value-of select="$source-id"/></xsl:attribute></IMG></A> <xsl:value-of select="@name"/>
|
||||
</td>
|
||||
<td class="content">
|
||||
<xsl:if test="count(event[@error-level='3'])=1">
|
||||
<xsl:for-each select="event[@error-level='3']">
|
||||
<xsl:if test="@description='Converted'"><a _locID="Converted1">Converted</a></xsl:if>
|
||||
<xsl:if test="@description!='Converted'"><xsl:value-of select="@description"/></xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(event[@error-level='3'])!=1 and count(event[@error-level='3' and @description='Converted'])!=0"><a _locID="Converted2">Converted</a>
|
||||
</xsl:if>
|
||||
</td>
|
||||
<td class="content"><xsl:value-of select="count(event[@error-level='2'])"/></td>
|
||||
<td class="content"><xsl:value-of select="count(event[@error-level='1'])"/></td>
|
||||
</tr>
|
||||
|
||||
<tr class="collapsed" bgcolor="#ffffff">
|
||||
<xsl:attribute name="id">src<xsl:value-of select="$source-id"/></xsl:attribute>
|
||||
|
||||
<td colspan="7">
|
||||
<table width="97%" border="1" bordercolor="#dcdcdc" rules="cols" class="issuetable">
|
||||
<tr>
|
||||
<td colspan="7" class="issuetitle" _locID="ConversionIssues">Conversion Report - <xsl:value-of select="@name"/>:</td>
|
||||
</tr>
|
||||
|
||||
<xsl:for-each select="event[@error-level!='3']">
|
||||
<xsl:if test="@error-level!='4'">
|
||||
<tr>
|
||||
<td class="issuenone" style="border-bottom:solid 1 lightgray">
|
||||
<xsl:value-of select="@description"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
<tr valign="top">
|
||||
<td class="foot">
|
||||
<xsl:if test="count(source)!=1">
|
||||
<xsl:value-of select="count(source)"/><a _locID="file1"> files</a>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(source)=1">
|
||||
<a _locID="file2">1 file</a>
|
||||
</xsl:if>
|
||||
</td>
|
||||
<td class="foot">
|
||||
<a _locID="Converted3">Converted</a>: <xsl:value-of select="count(source/event[@error-level='3' and @description='Converted'])"/><BR />
|
||||
<a _locID="NotConverted">Not converted</a>: <xsl:value-of select="count(source) - count(source/event[@error-level='3' and @description='Converted'])"/>
|
||||
</td>
|
||||
<td class="foot"><xsl:value-of select="count(source/event[@error-level='2'])"/></td>
|
||||
<td class="foot"><xsl:value-of select="count(source/event[@error-level='1'])"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="Property">
|
||||
<xsl:if test="@Name!='Date' and @Name!='Time' and @Name!='LogNumber' and @Name!='Solution'">
|
||||
<tr><td nowrap="1"><b><xsl:value-of select="@Name"/>: </b><xsl:value-of select="@Value"/></td></tr>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="UpgradeLog">
|
||||
<html>
|
||||
<head>
|
||||
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="_UpgradeReport_Files\UpgradeReport.css" />
|
||||
<title _locID="ConversionReport0">Conversion Report 
|
||||
<xsl:if test="Properties/Property[@Name='LogNumber']">
|
||||
<xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/>
|
||||
</xsl:if>
|
||||
</title>
|
||||
<script language="javascript">
|
||||
function outliner () {
|
||||
oMe = window.event.srcElement
|
||||
//get child element
|
||||
var child = document.all[event.srcElement.getAttribute("child",false)];
|
||||
//if child element exists, expand or collapse it.
|
||||
if (null != child)
|
||||
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
|
||||
}
|
||||
|
||||
function changepic() {
|
||||
uMe = window.event.srcElement;
|
||||
var check = uMe.src.toLowerCase();
|
||||
if (check.lastIndexOf("upgradereport_plus.gif") != -1)
|
||||
{
|
||||
uMe.src = "_UpgradeReport_Files/UpgradeReport_Minus.gif"
|
||||
}
|
||||
else
|
||||
{
|
||||
uMe.src = "_UpgradeReport_Files/UpgradeReport_Plus.gif"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" onclick="outliner();">
|
||||
<h1 _locID="ConversionReport">Conversion Report - <xsl:value-of select="Properties/Property[@Name='Solution']/@Value"/></h1>
|
||||
|
||||
<p><span class="note">
|
||||
<b _locID="TimeOfConversion">Time of Conversion:</b>  <xsl:value-of select="Properties/Property[@Name='Date']/@Value"/>  <xsl:value-of select="Properties/Property[@Name='Time']/@Value"/><br/>
|
||||
</span></p>
|
||||
|
||||
<xsl:variable name="SortedEvents">
|
||||
<Events>
|
||||
<xsl:for-each select="Event">
|
||||
<xsl:sort select="@Project" order="ascending"/>
|
||||
<xsl:sort select="@Source" order="ascending"/>
|
||||
<xsl:sort select="@ErrorLevel" order="ascending"/>
|
||||
<Event>
|
||||
<xsl:attribute name="Project"><xsl:value-of select="@Project"/> </xsl:attribute>
|
||||
<xsl:attribute name="Solution"><xsl:value-of select="/UpgradeLog/Properties/Property[@Name='Solution']/@Value"/> </xsl:attribute>
|
||||
<xsl:attribute name="Source"><xsl:value-of select="@Source"/> </xsl:attribute>
|
||||
<xsl:attribute name="ErrorLevel"><xsl:value-of select="@ErrorLevel"/> </xsl:attribute>
|
||||
<xsl:attribute name="Description"><xsl:value-of select="@Description"/> </xsl:attribute>
|
||||
</Event>
|
||||
</xsl:for-each>
|
||||
</Events>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="Projects">
|
||||
<xsl:apply-templates select="msxsl:node-set($SortedEvents)/*" mode="createProjects"/>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:apply-templates select="msxsl:node-set($Projects)/*"/>
|
||||
|
||||
<p></p><p>
|
||||
<table class="note">
|
||||
<tr>
|
||||
<td nowrap="1">
|
||||
<b _locID="ConversionSettings">Conversion Settings</b>
|
||||
</td>
|
||||
</tr>
|
||||
<xsl:apply-templates select="Properties"/>
|
||||
</table></p>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
Binary file not shown.
Before Width: | Height: | Size: 69 B |
Binary file not shown.
Before Width: | Height: | Size: 71 B |
@@ -1,33 +0,0 @@
|
||||
========================================================================
|
||||
CONSOLE APPLICATION : TestCatch Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this TestCatch application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your TestCatch application.
|
||||
|
||||
|
||||
TestCatch.vcproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
TestCatch.cpp
|
||||
This is the main application source file.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named TestCatch.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@@ -1,8 +0,0 @@
|
||||
// TestCatch.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@@ -36,7 +36,6 @@
|
||||
4AB3D9A01616219100C9A0F8 /* catch_interfaces_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AB3D99F1616219100C9A0F8 /* catch_interfaces_config.cpp */; };
|
||||
4AB3D9A2161621B500C9A0F8 /* catch_interfaces_generators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AB3D9A1161621B500C9A0F8 /* catch_interfaces_generators.cpp */; };
|
||||
4ACE21CC166CA1B300FB5509 /* catch_option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4ACE21CA166CA1B300FB5509 /* catch_option.cpp */; };
|
||||
4AE1840B14EE4F230066340D /* catch_self_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AE1840A14EE4F230066340D /* catch_self_test.cpp */; };
|
||||
4AEE032016142F910071E950 /* catch_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE031F16142F910071E950 /* catch_common.cpp */; };
|
||||
4AEE032316142FC70071E950 /* catch_debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE032216142FC70071E950 /* catch_debugger.cpp */; };
|
||||
4AEE032516142FF10071E950 /* catch_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE032416142FF10071E950 /* catch_stream.cpp */; };
|
||||
@@ -57,6 +56,14 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
261488FA184C81130041FBEB /* catch_test_spec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_test_spec.hpp; sourceTree = "<group>"; };
|
||||
261488FB184C83EA0041FBEB /* catch_tags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_tags.h; sourceTree = "<group>"; };
|
||||
261488FC184D1DC10041FBEB /* catch_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_stream.h; sourceTree = "<group>"; };
|
||||
261488FD184D21290041FBEB /* catch_section_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_section_info.h; sourceTree = "<group>"; };
|
||||
261488FE184DC32F0041FBEB /* catch_section.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_section.h; sourceTree = "<group>"; };
|
||||
261488FF184DC4A20041FBEB /* catch_debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_debugger.h; sourceTree = "<group>"; };
|
||||
262E7399184673A800CAC268 /* catch_reporter_bases.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_bases.hpp; sourceTree = "<group>"; };
|
||||
262E739A1846759000CAC268 /* catch_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_common.hpp; sourceTree = "<group>"; };
|
||||
263FD06017AF8DF200988A20 /* catch_timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_timer.hpp; sourceTree = "<group>"; };
|
||||
263FD06117AF8DF200988A20 /* catch_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = catch_timer.h; sourceTree = "<group>"; };
|
||||
266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = "<group>"; };
|
||||
@@ -95,7 +102,6 @@
|
||||
4A6D0C20149B3D3B00DB3EAA /* CatchSelfTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CatchSelfTest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4A6D0C26149B3D3B00DB3EAA /* CatchSelfTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = CatchSelfTest.1; sourceTree = "<group>"; };
|
||||
4A6D0C2D149B3D9E00DB3EAA /* ApproxTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ApproxTests.cpp; path = ../../../SelfTest/ApproxTests.cpp; sourceTree = "<group>"; };
|
||||
4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; name = catch_self_test.hpp; path = ../../../SelfTest/catch_self_test.hpp; sourceTree = "<group>"; };
|
||||
4A6D0C2F149B3D9E00DB3EAA /* ClassTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClassTests.cpp; path = ../../../SelfTest/ClassTests.cpp; sourceTree = "<group>"; };
|
||||
4A6D0C30149B3D9E00DB3EAA /* ConditionTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConditionTests.cpp; path = ../../../SelfTest/ConditionTests.cpp; sourceTree = "<group>"; };
|
||||
4A6D0C31149B3D9E00DB3EAA /* ExceptionTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExceptionTests.cpp; path = ../../../SelfTest/ExceptionTests.cpp; sourceTree = "<group>"; };
|
||||
@@ -163,7 +169,6 @@
|
||||
4AC91CD0155D8DA600DC5117 /* catch_expression_decomposer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; path = catch_expression_decomposer.hpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||
4ACE21C8166CA19700FB5509 /* catch_option.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_option.hpp; sourceTree = "<group>"; };
|
||||
4ACE21CA166CA1B300FB5509 /* catch_option.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_option.cpp; path = ../../../SelfTest/SurrogateCpps/catch_option.cpp; sourceTree = "<group>"; };
|
||||
4AE1840A14EE4F230066340D /* catch_self_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_self_test.cpp; path = ../../../SelfTest/catch_self_test.cpp; sourceTree = "<group>"; };
|
||||
4AEE031F16142F910071E950 /* catch_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_common.cpp; path = ../../../SelfTest/SurrogateCpps/catch_common.cpp; sourceTree = "<group>"; };
|
||||
4AEE032216142FC70071E950 /* catch_debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_debugger.cpp; path = ../../../SelfTest/SurrogateCpps/catch_debugger.cpp; sourceTree = "<group>"; };
|
||||
4AEE032416142FF10071E950 /* catch_stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_stream.cpp; path = ../../../SelfTest/SurrogateCpps/catch_stream.cpp; sourceTree = "<group>"; };
|
||||
@@ -220,8 +225,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */,
|
||||
4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */,
|
||||
4AE1840A14EE4F230066340D /* catch_self_test.cpp */,
|
||||
266E9AD317290E710061DAB2 /* Introspective Tests */,
|
||||
4A6D0C40149B3DAB00DB3EAA /* Tests */,
|
||||
4A6D0C41149B3DE900DB3EAA /* Catch */,
|
||||
@@ -282,6 +285,7 @@
|
||||
4A6D0C65149B3E3D00DB3EAA /* reporters */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
262E7399184673A800CAC268 /* catch_reporter_bases.hpp */,
|
||||
4A6D0C67149B3E3D00DB3EAA /* catch_reporter_junit.hpp */,
|
||||
4A6D0C68149B3E3D00DB3EAA /* catch_reporter_xml.hpp */,
|
||||
4AB42F84166F3E1A0099F2C8 /* catch_reporter_console.hpp */,
|
||||
@@ -319,6 +323,8 @@
|
||||
4AC91CB4155B9EBF00DC5117 /* impl */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4A6D0C5F149B3E3D00DB3EAA /* catch_section.hpp */,
|
||||
261488FA184C81130041FBEB /* catch_test_spec.hpp */,
|
||||
263FD06017AF8DF200988A20 /* catch_timer.hpp */,
|
||||
266E9AD117230ACF0061DAB2 /* catch_text.hpp */,
|
||||
4A4B0F9C15CEFA8300AE2392 /* catch_impl.hpp */,
|
||||
@@ -345,7 +351,7 @@
|
||||
4A6D0C5C149B3E3D00DB3EAA /* catch_result_type.h */,
|
||||
4A6D0C5D149B3E3D00DB3EAA /* catch_assertionresult.h */,
|
||||
4A9D84B315599AC900FBB209 /* catch_expressionresult_builder.h */,
|
||||
4A6D0C5F149B3E3D00DB3EAA /* catch_section.hpp */,
|
||||
261488FE184DC32F0041FBEB /* catch_section.h */,
|
||||
4A3D7DD01503869D005F9203 /* catch_matchers.hpp */,
|
||||
4A9D84B11558FC0400FBB209 /* catch_tostring.hpp */,
|
||||
4A6D0C46149B3E3D00DB3EAA /* catch_approx.hpp */,
|
||||
@@ -354,6 +360,7 @@
|
||||
4AC91CD0155D8DA600DC5117 /* catch_expression_decomposer.hpp */,
|
||||
4A4B0F9A15CEF84800AE2392 /* catch_notimplemented_exception.h */,
|
||||
26847E5B16BBAB790043B9C1 /* catch_message.h */,
|
||||
261488FD184D21290041FBEB /* catch_section_info.h */,
|
||||
);
|
||||
name = Assertions;
|
||||
sourceTree = "<group>";
|
||||
@@ -380,6 +387,7 @@
|
||||
4A084F1D15DAD15F0027E631 /* catch_test_spec.h */,
|
||||
4A8E4DCC160A344100194CBD /* catch_tags.hpp */,
|
||||
26948287179EF7F900ED166E /* catch_test_case_tracker.hpp */,
|
||||
261488FB184C83EA0041FBEB /* catch_tags.h */,
|
||||
);
|
||||
name = "Test execution";
|
||||
sourceTree = "<group>";
|
||||
@@ -416,6 +424,7 @@
|
||||
266ECD8D1713614B0030D735 /* catch_legacy_reporter_adapter.h */,
|
||||
4A6D0C49149B3E3D00DB3EAA /* catch_common.h */,
|
||||
4A6D0C4B149B3E3D00DB3EAA /* catch_debugger.hpp */,
|
||||
261488FF184DC4A20041FBEB /* catch_debugger.h */,
|
||||
4A6D0C60149B3E3D00DB3EAA /* catch_stream.hpp */,
|
||||
4A6D0C64149B3E3D00DB3EAA /* catch_xmlwriter.hpp */,
|
||||
4AB1C73714F97C1300F31DF7 /* catch_console_colour.hpp */,
|
||||
@@ -427,6 +436,8 @@
|
||||
26DACF2F17206D3400A21326 /* catch_text.h */,
|
||||
263FD06117AF8DF200988A20 /* catch_timer.h */,
|
||||
26AEAF1617BEA18E009E32C9 /* catch_platform.h */,
|
||||
262E739A1846759000CAC268 /* catch_common.hpp */,
|
||||
261488FC184D1DC10041FBEB /* catch_stream.h */,
|
||||
);
|
||||
name = Infrastructure;
|
||||
sourceTree = "<group>";
|
||||
@@ -499,7 +510,6 @@
|
||||
4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */,
|
||||
4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */,
|
||||
4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */,
|
||||
4AE1840B14EE4F230066340D /* catch_self_test.cpp in Sources */,
|
||||
4A8E4DD2160A352200194CBD /* catch_tags.cpp in Sources */,
|
||||
4AEE032016142F910071E950 /* catch_common.cpp in Sources */,
|
||||
4AEE032316142FC70071E950 /* catch_debugger.cpp in Sources */,
|
||||
|
@@ -8,7 +8,6 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4A2894D615D3956000E20735 /* ApproxTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A2894D515D3956000E20735 /* ApproxTests.cpp */; };
|
||||
4AB735F815D396ED00F9F7C3 /* catch_self_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A2894D815D3957500E20735 /* catch_self_test.cpp */; };
|
||||
4AB735FA15D396F400F9F7C3 /* TestMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A2894E015D3957500E20735 /* TestMain.cpp */; };
|
||||
4AB735FB15D3970C00F9F7C3 /* ClassTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A2894DA15D3957500E20735 /* ClassTests.cpp */; };
|
||||
4AB735FC15D3971100F9F7C3 /* ConditionTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A2894DB15D3957500E20735 /* ConditionTests.cpp */; };
|
||||
@@ -33,8 +32,6 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4A2894D515D3956000E20735 /* ApproxTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ApproxTests.cpp; path = ../../../SelfTest/ApproxTests.cpp; sourceTree = "<group>"; };
|
||||
4A2894D815D3957500E20735 /* catch_self_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = catch_self_test.cpp; path = ../../../SelfTest/catch_self_test.cpp; sourceTree = "<group>"; };
|
||||
4A2894D915D3957500E20735 /* catch_self_test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = catch_self_test.hpp; path = ../../../SelfTest/catch_self_test.hpp; sourceTree = "<group>"; };
|
||||
4A2894DA15D3957500E20735 /* ClassTests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ClassTests.cpp; path = ../../../SelfTest/ClassTests.cpp; sourceTree = "<group>"; };
|
||||
4A2894DB15D3957500E20735 /* ConditionTests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ConditionTests.cpp; path = ../../../SelfTest/ConditionTests.cpp; sourceTree = "<group>"; };
|
||||
4A2894DC15D3957500E20735 /* ExceptionTests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ExceptionTests.cpp; path = ../../../SelfTest/ExceptionTests.cpp; sourceTree = "<group>"; };
|
||||
@@ -61,8 +58,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4A2894E015D3957500E20735 /* TestMain.cpp */,
|
||||
4A2894D815D3957500E20735 /* catch_self_test.cpp */,
|
||||
4A2894D915D3957500E20735 /* catch_self_test.hpp */,
|
||||
);
|
||||
name = "Self Test";
|
||||
sourceTree = "<group>";
|
||||
@@ -159,7 +154,6 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4A2894D615D3956000E20735 /* ApproxTests.cpp in Sources */,
|
||||
4AB735F815D396ED00F9F7C3 /* catch_self_test.cpp in Sources */,
|
||||
4AB735FA15D396F400F9F7C3 /* TestMain.cpp in Sources */,
|
||||
4AB735FB15D3970C00F9F7C3 /* ClassTests.cpp in Sources */,
|
||||
4AB735FC15D3971100F9F7C3 /* ConditionTests.cpp in Sources */,
|
||||
@@ -224,6 +218,7 @@
|
||||
4A90B5E115D2E3E900EF71BC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
HEADER_SEARCH_PATHS = "../../../single_include/**";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -232,6 +227,7 @@
|
||||
4A90B5E215D2E3E900EF71BC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
HEADER_SEARCH_PATHS = "../../../single_include/**";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
|
Reference in New Issue
Block a user