y.v == 0
0 == 0
0 == y.v
0 == 0
t1 == t2
{?} == {?}
t1 != t2
{?} != {?}
t1 < t2
{?} < {?}
t1 > t2
{?} > {?}
t1 <= t2
{?} <= {?}
t1 >= t2
{?} >= {?}
uarr := "123"
sarr := "456"
std::memcmp(uarr, "123", sizeof(uarr)) == 0
0 == 0
uarr := "123"
sarr := "456"
std::memcmp(sarr, "456", sizeof(sarr)) == 0
0 == 0
h1 == h2
[1403 helper] == [1403 helper]
This info message starts with a linebreak
This warning message starts with a linebreak
1514
This would not be caught previously
Nor would this
std::is_same<TypeList<int>, TypeList<int>>::value
true
spec.matches(*fakeTestCase("spec . char"))
true
spec.matches(*fakeTestCase("spec , char"))
true
!(spec.matches(*fakeTestCase(R"(spec \, char)")))
!false
spec.matches(*fakeTestCase(R"(spec {a} char)"))
true
spec.matches(*fakeTestCase(R"(spec [a] char)"))
true
!(spec.matches(*fakeTestCase("differs but has similar tag", "[a]")))
!false
spec.matches(*fakeTestCase(R"(spec \ char)"))
true
counter < 7
3 < 7
counter < 7
6 < 7
i != j
1 != 3
i != j
1 != 4
i != j
2 != 3
i != j
2 != 4
m
2
m
3
m
1
m
2
m
3
i := 1
j := 3
k := 5
i := 1
j := 3
k := 6
i := 1
j := 4
k := 5
i := 1
j := 4
k := 6
i := 2
j := 3
k := 5
i := 2
j := 3
k := 6
i := 2
j := 4
k := 5
i := 2
j := 4
k := 6
m
1
n
1
m
1
n
2
m
1
n
3
m
2
n
1
m
2
n
2
m
2
n
3
m
3
n
1
m
3
n
2
m
3
n
3
smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
failure to init
answer := 42
expected exception
answer := 42
thisThrows()
thisThrows()
expected exception
answer := 42
thisThrows()
thisThrows()
42 == f
42 == {?}
a == t
3 == 3
a == t
3 == 3
throws_int(true)
throws_int(true)
throws_int(true), int
throws_int(true), int
throws_int(false)
throws_int(false)
"aaa", Catch::Matchers::EndsWith("aaa")
"aaa" ends with: "aaa"
templated_tests<int>(3)
true
f() == 0
1 == 0
errno_after == 1
1 == 1
dummy := 0
x == 4
{?} == 4
false != false
false != false
true != true
true != true
!true
false
!(true)
!true
!trueValue
false
!(trueValue)
!true
!(1 == 1)
false
!(1 == 1)
!(1 == 1)
false == false
false == false
true == true
true == true
!false
true
!(false)
!false
!falseValue
true
!(falseValue)
!false
!(1 == 2)
true
!(1 == 2)
!(1 == 2)
is_true<true>::value == true
true == true
true == is_true<true>::value
true == true
is_true<false>::value == false
false == false
false == is_true<false>::value
false == false
!is_true<false>::value
true
!!is_true<true>::value
true
is_true<true>::value
true
!(is_true<false>::value)
!false
x < y
1 < 4
y < z
4 < 7
x < z
1 < 7
x < y
1 < 4
y < z
4 < 8
x < z
1 < 8
x < y
1 < 4
y < z
4 < 9
x < z
1 < 9
x < y
1 < 5
y < z
5 < 7
x < z
1 < 7
x < y
1 < 5
y < z
5 < 8
x < z
1 < 8
x < y
1 < 5
y < z
5 < 9
x < z
1 < 9
x < y
1 < 6
y < z
6 < 7
x < z
1 < 7
x < y
1 < 6
y < z
6 < 8
x < z
1 < 8
x < y
1 < 6
y < z
6 < 9
x < z
1 < 9
x < y
2 < 4
y < z
4 < 7
x < z
2 < 7
x < y
2 < 4
y < z
4 < 8
x < z
2 < 8
x < y
2 < 4
y < z
4 < 9
x < z
2 < 9
x < y
2 < 5
y < z
5 < 7
x < z
2 < 7
x < y
2 < 5
y < z
5 < 8
x < z
2 < 8
x < y
2 < 5
y < z
5 < 9
x < z
2 < 9
x < y
2 < 6
y < z
6 < 7
x < z
2 < 7
x < y
2 < 6
y < z
6 < 8
x < z
2 < 8
x < y
2 < 6
y < z
6 < 9
x < z
2 < 9
x < y
3 < 4
y < z
4 < 7
x < z
3 < 7
x < y
3 < 4
y < z
4 < 8
x < z
3 < 8
x < y
3 < 4
y < z
4 < 9
x < z
3 < 9
x < y
3 < 5
y < z
5 < 7
x < z
3 < 7
x < y
3 < 5
y < z
5 < 8
x < z
3 < 8
x < y
3 < 5
y < z
5 < 9
x < z
3 < 9
x < y
3 < 6
y < z
6 < 7
x < z
3 < 7
x < y
3 < 6
y < z
6 < 8
x < z
3 < 8
x < y
3 < 6
y < z
6 < 9
x < z
3 < 9
s == "world"
"hello" == "world"
s == "hello"
"hello" == "hello"
Template_Fixture_2<TestType>::m_a.size() == 1
0 == 1
Template_Fixture_2<TestType>::m_a.size() == 1
0 == 1
Template_Fixture_2<TestType>::m_a.size() == 1
0 == 1
Template_Fixture_2<TestType>::m_a.size() == 1
0 == 1
Template_Fixture_2<TestType>::m_a.size() == 0
0 == 0
Template_Fixture_2<TestType>::m_a.size() == 0
0 == 0
Template_Fixture_2<TestType>::m_a.size() == 0
0 == 0
Template_Fixture_2<TestType>::m_a.size() == 0
0 == 0
Template_Fixture_2<TestType>{}.m_a.size() < 2
6 < 2
Template_Fixture_2<TestType>{}.m_a.size() < 2
2 < 2
Template_Fixture_2<TestType>{}.m_a.size() < 2
6 < 2
Template_Fixture_2<TestType>{}.m_a.size() < 2
2 < 2
Template_Fixture_2<TestType>{}.m_a.size() >= 2
6 >= 2
Template_Fixture_2<TestType>{}.m_a.size() >= 2
2 >= 2
Template_Fixture_2<TestType>{}.m_a.size() >= 2
6 >= 2
Template_Fixture_2<TestType>{}.m_a.size() >= 2
2 >= 2
Template_Fixture<TestType>::m_a == 2
1.0 == 2
Template_Fixture<TestType>::m_a == 2
1.0f == 2
Template_Fixture<TestType>::m_a == 2
1 == 2
Template_Fixture<TestType>::m_a == 1
1.0 == 1
Template_Fixture<TestType>::m_a == 1
1.0f == 1
Template_Fixture<TestType>::m_a == 1
1 == 1
Nttp_Fixture<V>::value == 0
1 == 0
Nttp_Fixture<V>::value == 0
3 == 0
Nttp_Fixture<V>::value == 0
6 == 0
Nttp_Fixture<V>::value > 0
1 > 0
Nttp_Fixture<V>::value > 0
3 > 0
Nttp_Fixture<V>::value > 0
6 > 0
m_a == 2
1 == 2
m_a == 1
1 == 1
x.size() == 0
0 == 0
x.size() == 0
0 == 0
x.size() == 0
0 == 0
x.size() == 0
0 == 0
x.size() > 0
42 > 0
x.size() > 0
9 > 0
x.size() > 0
42 > 0
x.size() > 0
9 > 0
d == 1.23_a
1.23 == Approx( 1.23 )
d != 1.22_a
1.23 != Approx( 1.22 )
-d == -1.23_a
-1.23 == Approx( -1.23 )
d == 1.2_a .epsilon(.1)
1.23 == Approx( 1.2 )
d != 1.2_a .epsilon(.001)
1.23 != Approx( 1.2 )
d == 1_a .epsilon(.3)
1.23 == Approx( 1.0 )
to infinity and beyond
&o1 == &o2
0x == 0x
o1 == o2
{?} == {?}
104.0 != Approx(100.0)
104.0 != Approx( 100.0 )
104.0 == Approx(100.0).margin(5)
104.0 == Approx( 100.0 )
104.0 == Approx(100.0).margin(4)
104.0 == Approx( 100.0 )
104.0 != Approx(100.0).margin(3)
104.0 != Approx( 100.0 )
100.3 != Approx(100.0)
100.3 != Approx( 100.0 )
100.3 == Approx(100.0).margin(0.5)
100.3 == Approx( 100.0 )
i++ == 7
7 == 7
i++ == 8
8 == 8
1 == 1
1 == 1
{Unknown expression after the reported line}
{Unknown expression after the reported line}
unexpected exception
Approx(0).margin(0)
Approx(0).margin(0)
Approx(0).margin(1234656)
Approx(0).margin(1234656)
Approx(0).margin(-2), std::domain_error
Approx(0).margin(-2), std::domain_error
Approx(0).epsilon(0)
Approx(0).epsilon(0)
Approx(0).epsilon(1)
Approx(0).epsilon(1)
Approx(0).epsilon(-0.001), std::domain_error
Approx(0).epsilon(-0.001), std::domain_error
Approx(0).epsilon(1.0001), std::domain_error
Approx(0).epsilon(1.0001), std::domain_error
0.25f == Approx(0.0f).margin(0.25f)
0.25f == Approx( 0.0 )
0.0f == Approx(0.25f).margin(0.25f)
0.0f == Approx( 0.25 )
0.5f == Approx(0.25f).margin(0.25f)
0.5f == Approx( 0.25 )
245.0f == Approx(245.25f).margin(0.25f)
245.0f == Approx( 245.25 )
245.5f == Approx(245.25f).margin(0.25f)
245.5f == Approx( 245.25 )
divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 )
3.1428571429 == Approx( 3.141 )
divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 )
3.1428571429 != Approx( 3.141 )
d != Approx( 1.231 )
1.23 != Approx( 1.231 )
d == Approx( 1.231 ).epsilon( 0.1 )
1.23 == Approx( 1.231 )
1.23f == Approx( 1.23f )
1.23f == Approx( 1.2300000191 )
0.0f == Approx( 0.0f )
0.0f == Approx( 0.0 )
1 == Approx( 1 )
1 == Approx( 1.0 )
0 == Approx( 0 )
0 == Approx( 0.0 )
1.0f == Approx( 1 )
1.0f == Approx( 1.0 )
0 == Approx( dZero)
0 == Approx( 0.0 )
0 == Approx( dSmall ).margin( 0.001 )
0 == Approx( 0.00001 )
1.234f == Approx( dMedium )
1.234f == Approx( 1.234 )
dMedium == Approx( 1.234f )
1.234 == Approx( 1.2339999676 )
1, Predicate<int>( alwaysTrue, "always true" )
1 matches predicate: "always true"
1, !Predicate<int>( alwaysFalse, "always false" )
1 not matches predicate: "always false"
"Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" )
"Hello olleH" matches predicate: "First and last character should be equal"
"This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } )
"This wouldn't pass" not matches undescribed predicate
lhs | rhs
Val: 1 | Val: 2
!(lhs & rhs)
!(Val: 1 & Val: 2)
HasBitOperators{ 1 } & HasBitOperators{ 1 }
Val: 1 & Val: 1
lhs ^ rhs
Val: 1 ^ Val: 2
!(lhs ^ lhs)
!(Val: 1 ^ Val: 1)
true
true
true
true
a, Contains(1)
{ 1, 2, 3 } contains element 1
b, Contains(1)
{ 0, 1, 2 } contains element 1
c, !Contains(1)
{ 4, 5, 6 } not contains element 1
a, Contains(0, close_enough)
{ 1, 2, 3 } contains element 0
b, Contains(0, close_enough)
{ 0, 1, 2 } contains element 0
c, !Contains(0, close_enough)
{ 4, 5, 6 } not contains element 0
a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; })
{ "abc", "abcd", "abcde" } contains element 4
in, Contains(1)
{ 1, 2, 3, 4, 5 } contains element 1
in, !Contains(8)
{ 1, 2, 3, 4, 5 } not contains element 8
in, Contains(MoveOnlyTestElement{ 2 })
{ 1, 2, 3 } contains element 2
in, !Contains(MoveOnlyTestElement{ 9 })
{ 1, 2, 3 } not contains element 9
in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5))
{ 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
empty_array, IsEmpty()
{ } is empty
non_empty_array, !IsEmpty()
{ 0.0 } not is empty
empty_vec, IsEmpty()
{ } is empty
non_empty_vec, !IsEmpty()
{ 'a', 'b', 'c' } not is empty
inner_lists_are_empty, !IsEmpty()
{ { } } not is empty
inner_lists_are_empty.front(), IsEmpty()
{ } is empty
has_empty{}, !IsEmpty()
{?} not is empty
unrelated::ADL_empty{}, IsEmpty()
{?} is empty
a := 1
b := 2
c := 3
a + b := 3
a+b := 3
c > b := true
a == 1 := true
custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0
custom_index_op<int>{1, 2, 3}[(0, 1)] := 0
custom_index_op<int>{1, 2, 3}[0] := 0
(helper_1436<int, int>{12, -12}) := { 12, -12 }
(helper_1436<int, int>(-12, 12)) := { -12, 12 }
(1, 2) := 2
(2, 3) := 3
("comma, in string", "escaped, \", ") := "escaped, ", "
"single quote in string,'," := "single quote in string,',"
"some escapes, \\,\\\\" := "some escapes, \,\\"
"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"
'"' := '"'
'\'' := '''
',' := ','
'}' := '}'
')' := ')'
'(' := '('
'{' := '{'
eq( "", "" )
true
!(eq( "", "a" ))
!false
eq( "a", "a" )
true
eq( "a", "A" )
true
eq( "A", "a" )
true
eq( "A", "A" )
true
!(eq( "a", "b" ))
!false
!(eq( "a", "B" ))
!false
lt( "", "a" )
true
!(lt( "a", "a" ))
!false
!(lt( "", "" ))
!false
lt( "a", "b" )
true
lt( "a", "B" )
true
lt( "A", "b" )
true
lt( "A", "B" )
true
tab == '\t'
'\t' == '\t'
newline == '\n'
'\n' == '\n'
carr_return == '\r'
'\r' == '\r'
form_feed == '\f'
'\f' == '\f'
space == ' '
' ' == ' '
c == chars[i]
'a' == 'a'
c == chars[i]
'z' == 'z'
c == chars[i]
'A' == 'A'
c == chars[i]
'Z' == 'Z'
null_terminator == '\0'
0 == 0
c == i
2 == 2
c == i
3 == 3
c == i
4 == 4
c == i
5 == 5
name.empty()
true
name == "foo"
"foo" == "foo"
parse_result
{?}
res == std::vector<std::string>{ "aaa", "bbb" }
{ "aaa", "bbb" } == { "aaa", "bbb" }
streamWrapper.str().empty()
true
streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n"
"1
Using code: 2
2
Using code: 0
3
"
==
"1
Using code: 2
2
Using code: 0
3
"
streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n"
"Using code: 2
A
B
Using code: 0
C
"
==
"Using code: 2
A
B
Using code: 0
C
"
1, ( MatcherA() && MatcherB() ) && MatcherC()
1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
1, MatcherA() && ( MatcherB() && MatcherC() )
1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() )
1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
1, ( MatcherA() || MatcherB() ) || MatcherC()
1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
1, MatcherA() || ( MatcherB() || MatcherC() )
1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() )
1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
0, !MatcherA()
0 not equals: (int) 1 or (string) "1"
1, !!MatcherA()
1 equals: (int) 1 or (string) "1"
0, !!!MatcherA()
0 not equals: (int) 1 or (string) "1"
1, !!!!MatcherA()
1 equals: (int) 1 or (string) "1"
1, MatcherA() || MatcherB()
1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
1, MatcherA() && MatcherB()
1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
1, MatcherA() || !MatcherB()
1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a )
{ 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" )
"foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" )
"foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" )
"foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" )
"foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) )
"foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr )
"foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c )
{ 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
std::vector<int>{1, 2} == std::vector<int>{1, 2}
{ 1, 2 } == { 1, 2 }
std::vector<int>{1, 2} == std::vector<int>{1, 2}
{ 1, 2 } == { 1, 2 }
!(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3})
!({ 1, 2 } == { 1, 2, 3 })
!(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3})
!({ 1, 2 } == { 1, 2, 3 })
std::vector<int>{1, 2} == std::vector<int>{1, 2}
{ 1, 2 } == { 1, 2 }
std::vector<int>{1, 2} == std::vector<int>{1, 2}
{ 1, 2 } == { 1, 2 }
true
true
std::vector<int>{1, 2} == std::vector<int>{1, 2}
{ 1, 2 } == { 1, 2 }
a
0x
a == &foo
0x == 0x
SimplePcg32{} == SimplePcg32{}
{?} == {?}
SimplePcg32{ 0 } != SimplePcg32{}
{?} != {?}
!(SimplePcg32{ 1 } == SimplePcg32{ 2 })
!({?} == {?})
!(SimplePcg32{ 1 } != SimplePcg32{ 1 })
!({?} != {?})
td == Approx(10.0)
StrongDoubleTypedef(10) == Approx( 10.0 )
Approx(10.0) == td
Approx( 10.0 ) == StrongDoubleTypedef(10)
td != Approx(11.0)
StrongDoubleTypedef(10) != Approx( 11.0 )
Approx(11.0) != td
Approx( 11.0 ) != StrongDoubleTypedef(10)
td <= Approx(10.0)
StrongDoubleTypedef(10) <= Approx( 10.0 )
td <= Approx(11.0)
StrongDoubleTypedef(10) <= Approx( 11.0 )
Approx(10.0) <= td
Approx( 10.0 ) <= StrongDoubleTypedef(10)
Approx(9.0) <= td
Approx( 9.0 ) <= StrongDoubleTypedef(10)
td >= Approx(9.0)
StrongDoubleTypedef(10) >= Approx( 9.0 )
td >= Approx(td)
StrongDoubleTypedef(10) >= Approx( 10.0 )
Approx(td) >= td
Approx( 10.0 ) >= StrongDoubleTypedef(10)
Approx(11.0) >= td
Approx( 11.0 ) >= StrongDoubleTypedef(10)
54 == 6*9
54 == 54
( -1 > 2u )
true
-1 > 2u
-1 > 2
( 2u < -1 )
true
2u < -1
2 < -1
( minInt > 2u )
true
minInt > 2u
-2147483648 > 2
i == 1
1 == 1
ui == 2
2 == 2
l == 3
3 == 3
ul == 4
4 == 4
c == 5
5 == 5
uc == 6
6 == 6
1 == i
1 == 1
2 == ui
2 == 2
3 == l
3 == 3
4 == ul
4 == 4
5 == c
5 == 5
6 == uc
6 == 6
(std::numeric_limits<uint32_t>::max)() > ul
4294967295 (0x) > 4
!(matcher.match( 1 ))
!false
first.matchCalled
true
!second.matchCalled
true
matcher.match( 1 )
true
first.matchCalled
true
!second.matchCalled
true
!(matcher.match( 1 ))
!false
first.matchCalled
true
!second.matchCalled
true
matcher.match( 1 )
true
first.matchCalled
true
!second.matchCalled
true
testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" contains: "not there" (case insensitive)
testStringForMatching(), ContainsSubstring( "STRING" )
"this string contains 'abc' as a substring" contains: "STRING"
call_count == 1
1 == 1
make_data().size() == test_count
6 == 6
Catch::makeStream( "-" )->isConsole()
true
throwCustom()
throwCustom()
custom exception - not std
throwCustom(), std::exception
throwCustom(), std::exception
custom exception - not std
custom std exception
101.000001 != Approx(100).epsilon(0.01)
101.000001 != Approx( 100.0 )
std::pow(10, -5) != Approx(std::pow(10, -7))
0.00001 != Approx( 0.0000001 )
enumInfo->lookup(0) == "Value1"
Value1 == "Value1"
enumInfo->lookup(1) == "Value2"
Value2 == "Value2"
enumInfo->lookup(3) == "{** unexpected enum value **}"
{** unexpected enum value **}
==
"{** unexpected enum value **}"
This generator is empty
Catch::makeStream( "" )->isConsole()
true
testStringForMatching(), EndsWith( "Substring" )
"this string contains 'abc' as a substring" ends with: "Substring"
testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" ends with: "this" (case insensitive)
stringify( EnumClass3::Value1 ) == "Value1"
"Value1" == "Value1"
stringify( EnumClass3::Value2 ) == "Value2"
"Value2" == "Value2"
stringify( EnumClass3::Value3 ) == "Value3"
"Value3" == "Value3"
stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}"
"{** unexpected enum value **}"
==
"{** unexpected enum value **}"
stringify( ec3 ) == "Value2"
"Value2" == "Value2"
stringify( Bikeshed::Colours::Red ) == "Red"
"Red" == "Red"
stringify( Bikeshed::Colours::Blue ) == "Blue"
"Blue" == "Blue"
101.01 != Approx(100).epsilon(0.01)
101.01 != Approx( 100.0 )
data.int_seven == 6
7 == 6
data.int_seven == 8
7 == 8
data.int_seven == 0
7 == 0
data.float_nine_point_one == Approx( 9.11f )
9.1f == Approx( 9.1099996567 )
data.float_nine_point_one == Approx( 9.0f )
9.1f == Approx( 9.0 )
data.float_nine_point_one == Approx( 1 )
9.1f == Approx( 1.0 )
data.float_nine_point_one == Approx( 0 )
9.1f == Approx( 0.0 )
data.double_pi == Approx( 3.1415 )
3.1415926535 == Approx( 3.1415 )
data.str_hello == "goodbye"
"hello" == "goodbye"
data.str_hello == "hell"
"hello" == "hell"
data.str_hello == "hello1"
"hello" == "hello1"
data.str_hello.size() == 6
5 == 6
x == Approx( 1.301 )
1.3 == Approx( 1.301 )
data.int_seven == 7
7 == 7
data.float_nine_point_one == Approx( 9.1f )
9.1f == Approx( 9.1000003815 )
data.double_pi == Approx( 3.1415926535 )
3.1415926535 == Approx( 3.1415926535 )
data.str_hello == "hello"
"hello" == "hello"
"hello" == data.str_hello
"hello" == "hello"
data.str_hello.size() == 5
5 == 5
x == Approx( 1.3 )
1.3 == Approx( 1.3 )
testStringForMatching(), Equals( "this string contains 'abc' as a substring" )
"this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
testStringForMatching(), Equals( "this string contains 'ABC' as a substring" )
"this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" equals: "something else" (case insensitive)
::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method"
"This exception has overridden what() method"
==
"This exception has overridden what() method"
::Catch::Detail::stringify(OperatorException{}) == "OperatorException"
"OperatorException" == "OperatorException"
::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException"
"StringMakerException"
==
"StringMakerException"
doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
Unknown exception
throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
Unknown exception
throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 }
SpecialException::what special exception has value of 1
throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 }
SpecialException::what special exception has value of 1
throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 }
SpecialException::what special exception has value of 1
throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 }
SpecialException::what special exception has value of 2
throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) )
DerivedException::what matches "starts with: "Derived""
throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) )
DerivedException::what matches "ends with: "::what""
throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) )
DerivedException::what matches "not starts with: "::what""
throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) )
SpecialException::what matches "starts with: "Special""
thisThrows(), "expected exception"
"expected exception" equals: "expected exception"
thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No )
"expected exception" equals: "expected exception" (case insensitive)
thisThrows(), StartsWith( "expected" )
"expected exception" starts with: "expected"
thisThrows(), EndsWith( "exception" )
"expected exception" ends with: "exception"
thisThrows(), ContainsSubstring( "except" )
"expected exception" contains: "except"
thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No )
"expected exception" contains: "except" (case insensitive)
throwsDerivedException(), DerivedException, Message( "DerivedException::what" )
DerivedException::what exception message matches "DerivedException::what"
throwsDerivedException(), DerivedException, !Message( "derivedexception::what" )
DerivedException::what not exception message matches "derivedexception::what"
throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" )
SpecialException::what not exception message matches "DerivedException::what"
throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" )
SpecialException::what exception message matches "SpecialException::what"
thisThrows(), std::string
thisThrows(), std::string
expected exception
thisDoesntThrow(), std::domain_error
thisDoesntThrow(), std::domain_error
thisThrows()
thisThrows()
expected exception
This is a failure
This is a failure
This message appears in the output
Factorial(0) == 1
1 == 1
Factorial(1) == 1
1 == 1
Factorial(2) == 2
2 == 2
Factorial(3) == 6
6 == 6
Factorial(10) == 3628800
3628800 (0x) == 3628800 (0x)
filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
10., WithinRel( 11.1, 0.1 )
10.0 and 11.1 are within 10% of each other
10., !WithinRel( 11.2, 0.1 )
10.0 not and 11.2 are within 10% of each other
1., !WithinRel( 0., 0.99 )
1.0 not and 0 are within 99% of each other
-0., WithinRel( 0. )
-0.0 and 0 are within 2.22045e-12% of each other
v1, WithinRel( v2 )
0.0 and 2.22507e-308 are within 2.22045e-12% of each other
1., WithinAbs( 1., 0 )
1.0 is within 0.0 of 1.0
0., WithinAbs( 1., 1 )
0.0 is within 1.0 of 1.0
0., !WithinAbs( 1., 0.99 )
0.0 not is within 0.99 of 1.0
0., !WithinAbs( 1., 0.99 )
0.0 not is within 0.99 of 1.0
11., !WithinAbs( 10., 0.5 )
11.0 not is within 0.5 of 10.0
10., !WithinAbs( 11., 0.5 )
10.0 not is within 0.5 of 11.0
-10., WithinAbs( -10., 0.5 )
-10.0 is within 0.5 of -10.0
-10., WithinAbs( -9.6, 0.5 )
-10.0 is within 0.5 of -9.6
1., WithinULP( 1., 0 )
1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
nextafter( 1., 2. ), WithinULP( 1., 1 )
1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
0., WithinULP( nextafter( 0., 1. ), 1 )
0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
1., WithinULP( nextafter( 1., 0. ), 1 )
1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
1., !WithinULP( nextafter( 1., 2. ), 0 )
1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
1., WithinULP( 1., 0 )
1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
-0., WithinULP( 0., 0 )
-0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 )
1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 )
1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 )
0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other )
WithinAbs( 1., 0. )
WithinAbs( 1., 0. )
WithinAbs( 1., -1. ), std::domain_error
WithinAbs( 1., -1. ), std::domain_error
WithinULP( 1., 0 )
WithinULP( 1., 0 )
WithinRel( 1., 0. )
WithinRel( 1., 0. )
WithinRel( 1., -0.2 ), std::domain_error
WithinRel( 1., -0.2 ), std::domain_error
WithinRel( 1., 1. ), std::domain_error
WithinRel( 1., 1. ), std::domain_error
1., !IsNaN()
1.0 not is NaN
10.f, WithinRel( 11.1f, 0.1f )
10.0f and 11.1 are within 10% of each other
10.f, !WithinRel( 11.2f, 0.1f )
10.0f not and 11.2 are within 10% of each other
1.f, !WithinRel( 0.f, 0.99f )
1.0f not and 0 are within 99% of each other
-0.f, WithinRel( 0.f )
-0.0f and 0 are within 0.00119209% of each other
v1, WithinRel( v2 )
0.0f and 1.17549e-38 are within 0.00119209% of each other
1.f, WithinAbs( 1.f, 0 )
1.0f is within 0.0 of 1.0
0.f, WithinAbs( 1.f, 1 )
0.0f is within 1.0 of 1.0
0.f, !WithinAbs( 1.f, 0.99f )
0.0f not is within 0.9900000095 of 1.0
0.f, !WithinAbs( 1.f, 0.99f )
0.0f not is within 0.9900000095 of 1.0
0.f, WithinAbs( -0.f, 0 )
0.0f is within 0.0 of -0.0
11.f, !WithinAbs( 10.f, 0.5f )
11.0f not is within 0.5 of 10.0
10.f, !WithinAbs( 11.f, 0.5f )
10.0f not is within 0.5 of 11.0
-10.f, WithinAbs( -10.f, 0.5f )
-10.0f is within 0.5 of -10.0
-10.f, WithinAbs( -9.6f, 0.5f )
-10.0f is within 0.5 of -9.6000003815
1.f, WithinULP( 1.f, 0 )
1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
-1.f, WithinULP( -1.f, 0 )
-1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 )
1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
0.f, WithinULP( nextafter( 0.f, 1.f ), 1 )
0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
1.f, WithinULP( nextafter( 1.f, 0.f ), 1 )
1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 )
1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
1.f, WithinULP( 1.f, 0 )
1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
-0.f, WithinULP( 0.f, 0 )
-0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 )
1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 )
1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f )
0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other )
WithinAbs( 1.f, 0.f )
WithinAbs( 1.f, 0.f )
WithinAbs( 1.f, -1.f ), std::domain_error
WithinAbs( 1.f, -1.f ), std::domain_error
WithinULP( 1.f, 0 )
WithinULP( 1.f, 0 )
WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
WithinRel( 1.f, 0.f )
WithinRel( 1.f, 0.f )
WithinRel( 1.f, -0.2f ), std::domain_error
WithinRel( 1.f, -0.2f ), std::domain_error
WithinRel( 1.f, 1.f ), std::domain_error
WithinRel( 1.f, 1.f ), std::domain_error
1., !IsNaN()
1.0 not is NaN
i % 2 == 0
0 == 0
i % 2 == 0
0 == 0
i % 2 == 0
0 == 0
i % 2 == 0
0 == 0
filter([] (int) {return false; }, value(1)), Catch::GeneratorException
filter([] (int) {return false; }, value(1)), Catch::GeneratorException
chunk2.size() == 2
2 == 2
chunk2.front() == chunk2.back()
1 == 1
chunk2.size() == 2
2 == 2
chunk2.front() == chunk2.back()
2 == 2
chunk2.size() == 2
2 == 2
chunk2.front() == chunk2.back()
3 == 3
chunk2.size() == 2
2 == 2
chunk2.front() == chunk2.back()
1 == 1
chunk2.front() < 3
1 < 3
chunk2.size() == 2
2 == 2
chunk2.front() == chunk2.back()
2 == 2
chunk2.front() < 3
2 < 3
chunk2.size() == 0
0 == 0
chunk2.size() == 0
0 == 0
chunk2.size() == 0
0 == 0
chunk(2, value(1)), Catch::GeneratorException
chunk(2, value(1)), Catch::GeneratorException
4u * i > str.size()
4 > 1
4u * i > str.size()
4 > 2
4u * i > str.size()
4 > 3
4u * i > str.size()
8 > 1
4u * i > str.size()
8 > 2
4u * i > str.size()
8 > 3
4u * i > str.size()
12 > 1
4u * i > str.size()
12 > 2
4u * i > str.size()
12 > 3
gen.get() == 123
123 == 123
!(gen.next())
!false
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 3
3 == 3
gen.next()
true
gen.get() == 5
5 == 5
!(gen.next())
!false
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 5
5 == 5
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == 4
4 == 4
gen.next()
true
gen.get() == 0
0 == 0
!(gen.next())
!false
gen.get().size() == 2
2 == 2
gen.get() == "aa"
"aa" == "aa"
gen.next()
true
gen.get() == "bb"
"bb" == "bb"
gen.next()
true
gen.get() == "cc"
"cc" == "cc"
!(gen.next())
!false
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 3
3 == 3
!(gen.next())
!false
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 3
3 == 3
!(gen.next())
!false
filter([](int) { return false; }, value(1)), Catch::GeneratorException
filter([](int) { return false; }, value(1)), Catch::GeneratorException
filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 2
2 == 2
!(gen.next())
!false
gen.get() == 1
1 == 1
!(gen.next())
!false
gen.get() == 2.0
2.0 == 2.0
gen.next()
true
gen.get() == 4.0
4.0 == 4.0
gen.next()
true
gen.get() == 6.0
6.0 == 6.0
!(gen.next())
!false
gen.get() == 2.0
2.0 == 2.0
gen.next()
true
gen.get() == 4.0
4.0 == 4.0
gen.next()
true
gen.get() == 6.0
6.0 == 6.0
!(gen.next())
!false
gen.get() == 3
3 == 3
!(gen.next())
!false
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == 3
3 == 3
gen.next()
true
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == 3
3 == 3
!(gen.next())
!false
gen.get() == -2
-2 == -2
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == 0
0 == 0
gen.next()
true
gen.get() == 1
1 == 1
!(gen.next())
!false
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == 1
1 == 1
gen.next()
true
gen.get() == 0
0 == 0
gen.next()
true
gen.get() == -1
-1 == -1
!(gen.next())
!false
gen.get() == -7
-7 == -7
gen.next()
true
gen.get() == -4
-4 == -4
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == 2
2 == 2
!(gen.next())
!false
gen.get() == -7
-7 == -7
gen.next()
true
gen.get() == -4
-4 == -4
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == 2
2 == 2
!(gen.next())
!false
gen.get() == -7
-7 == -7
gen.next()
true
gen.get() == -4
-4 == -4
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == 5
5 == 5
!(gen.next())
!false
Current expected value is -1
gen.get() == Approx(expected)
-1.0 == Approx( -1.0 )
Current expected value is -1
gen.next()
true
Current expected value is -0.9
gen.get() == Approx(expected)
-0.9 == Approx( -0.9 )
Current expected value is -0.9
gen.next()
true
Current expected value is -0.8
gen.get() == Approx(expected)
-0.8 == Approx( -0.8 )
Current expected value is -0.8
gen.next()
true
Current expected value is -0.7
gen.get() == Approx(expected)
-0.7 == Approx( -0.7 )
Current expected value is -0.7
gen.next()
true
Current expected value is -0.6
gen.get() == Approx(expected)
-0.6 == Approx( -0.6 )
Current expected value is -0.6
gen.next()
true
Current expected value is -0.5
gen.get() == Approx(expected)
-0.5 == Approx( -0.5 )
Current expected value is -0.5
gen.next()
true
Current expected value is -0.4
gen.get() == Approx(expected)
-0.4 == Approx( -0.4 )
Current expected value is -0.4
gen.next()
true
Current expected value is -0.3
gen.get() == Approx(expected)
-0.3 == Approx( -0.3 )
Current expected value is -0.3
gen.next()
true
Current expected value is -0.2
gen.get() == Approx(expected)
-0.2 == Approx( -0.2 )
Current expected value is -0.2
gen.next()
true
Current expected value is -0.1
gen.get() == Approx(expected)
-0.1 == Approx( -0.1 )
Current expected value is -0.1
gen.next()
true
Current expected value is -1.38778e-16
gen.get() == Approx(expected)
-0.0 == Approx( -0.0 )
Current expected value is -1.38778e-16
gen.next()
true
Current expected value is 0.1
gen.get() == Approx(expected)
0.1 == Approx( 0.1 )
Current expected value is 0.1
gen.next()
true
Current expected value is 0.2
gen.get() == Approx(expected)
0.2 == Approx( 0.2 )
Current expected value is 0.2
gen.next()
true
Current expected value is 0.3
gen.get() == Approx(expected)
0.3 == Approx( 0.3 )
Current expected value is 0.3
gen.next()
true
Current expected value is 0.4
gen.get() == Approx(expected)
0.4 == Approx( 0.4 )
Current expected value is 0.4
gen.next()
true
Current expected value is 0.5
gen.get() == Approx(expected)
0.5 == Approx( 0.5 )
Current expected value is 0.5
gen.next()
true
Current expected value is 0.6
gen.get() == Approx(expected)
0.6 == Approx( 0.6 )
Current expected value is 0.6
gen.next()
true
Current expected value is 0.7
gen.get() == Approx(expected)
0.7 == Approx( 0.7 )
Current expected value is 0.7
gen.next()
true
Current expected value is 0.8
gen.get() == Approx(expected)
0.8 == Approx( 0.8 )
Current expected value is 0.8
gen.next()
true
Current expected value is 0.9
gen.get() == Approx(expected)
0.9 == Approx( 0.9 )
Current expected value is 0.9
gen.next()
true
gen.get() == Approx( rangeEnd )
1.0 == Approx( 1.0 )
!(gen.next())
!false
Current expected value is -1
gen.get() == Approx(expected)
-1.0 == Approx( -1.0 )
Current expected value is -1
gen.next()
true
Current expected value is -0.7
gen.get() == Approx(expected)
-0.7 == Approx( -0.7 )
Current expected value is -0.7
gen.next()
true
Current expected value is -0.4
gen.get() == Approx(expected)
-0.4 == Approx( -0.4 )
Current expected value is -0.4
gen.next()
true
Current expected value is -0.1
gen.get() == Approx(expected)
-0.1 == Approx( -0.1 )
Current expected value is -0.1
gen.next()
true
Current expected value is 0.2
gen.get() == Approx(expected)
0.2 == Approx( 0.2 )
Current expected value is 0.2
gen.next()
true
Current expected value is 0.5
gen.get() == Approx(expected)
0.5 == Approx( 0.5 )
Current expected value is 0.5
gen.next()
true
!(gen.next())
!false
Current expected value is -1
gen.get() == Approx(expected)
-1.0 == Approx( -1.0 )
Current expected value is -1
gen.next()
true
Current expected value is -0.7
gen.get() == Approx(expected)
-0.7 == Approx( -0.7 )
Current expected value is -0.7
gen.next()
true
Current expected value is -0.4
gen.get() == Approx(expected)
-0.4 == Approx( -0.4 )
Current expected value is -0.4
gen.next()
true
Current expected value is -0.1
gen.get() == Approx(expected)
-0.1 == Approx( -0.1 )
Current expected value is -0.1
gen.next()
true
Current expected value is 0.2
gen.get() == Approx(expected)
0.2 == Approx( 0.2 )
Current expected value is 0.2
gen.next()
true
Current expected value is 0.5
gen.get() == Approx(expected)
0.5 == Approx( 0.5 )
Current expected value is 0.5
gen.next()
true
!(gen.next())
!false
gen.get() == 5
5 == 5
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == -4
-4 == -4
!(gen.next())
!false
gen.get() == 5
5 == 5
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == -4
-4 == -4
!(gen.next())
!false
gen.get() == 5
5 == 5
gen.next()
true
gen.get() == 2
2 == 2
gen.next()
true
gen.get() == -1
-1 == -1
gen.next()
true
gen.get() == -4
-4 == -4
gen.next()
true
gen.get() == -7
-7 == -7
!(gen.next())
!false
d >= Approx( 1.22 )
1.23 >= Approx( 1.22 )
d >= Approx( 1.23 )
1.23 >= Approx( 1.23 )
!(d >= Approx( 1.24 ))
!(1.23 >= Approx( 1.24 ))
d >= Approx( 1.24 ).epsilon(0.1)
1.23 >= Approx( 1.24 )
h1( dummy ) != h2( dummy )
3422778688 (0x)
!=
130711275 (0x)
h1( dummy ) == h2( dummy )
3422778688 (0x)
==
3422778688 (0x)
h( dummy1 ) != h( dummy2 )
2903002874 (0x)
!=
2668622104 (0x)
h( dummy1 ) != h( dummy2 )
2673152918 (0x)
!=
3916075712 (0x)
h( dummy1 ) != h( dummy2 )
2074929312 (0x)
!=
3429949824 (0x)
h( dummy ) == h( dummy )
3422778688 (0x)
==
3422778688 (0x)
This info has multiple parts.
This unscoped info has multiple parts.
Show infos!
this is a message
this is a warning
this message should be logged
so should this
a == 1
2 == 1
this message may be logged later
a == 2
2 == 2
this message may be logged later
this message should be logged
a == 1
2 == 1
this message may be logged later
this message should be logged
and this, but later
a == 0
2 == 0
this message may be logged later
this message should be logged
and this, but later
but not this
a == 2
2 == 2
current counter 0
i := 0
i < 10
0 < 10
current counter 1
i := 1
i < 10
1 < 10
current counter 2
i := 2
i < 10
2 < 10
current counter 3
i := 3
i < 10
3 < 10
current counter 4
i := 4
i < 10
4 < 10
current counter 5
i := 5
i < 10
5 < 10
current counter 6
i := 6
i < 10
6 < 10
current counter 7
i := 7
i < 10
7 < 10
current counter 8
i := 8
i < 10
8 < 10
current counter 9
i := 9
i < 10
9 < 10
current counter 10
i := 10
i < 10
10 < 10
Dummy
Dummy
Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
data.int_seven != 7
7 != 7
data.float_nine_point_one != Approx( 9.1f )
9.1f != Approx( 9.1000003815 )
data.double_pi != Approx( 3.1415926535 )
3.1415926535 != Approx( 3.1415926535 )
data.str_hello != "hello"
"hello" != "hello"
data.str_hello.size() != 5
5 != 5
data.int_seven != 6
7 != 6
data.int_seven != 8
7 != 8
data.float_nine_point_one != Approx( 9.11f )
9.1f != Approx( 9.1099996567 )
data.float_nine_point_one != Approx( 9.0f )
9.1f != Approx( 9.0 )
data.float_nine_point_one != Approx( 1 )
9.1f != Approx( 1.0 )
data.float_nine_point_one != Approx( 0 )
9.1f != Approx( 0.0 )
data.double_pi != Approx( 3.1415 )
3.1415926535 != Approx( 3.1415 )
data.str_hello != "goodbye"
"hello" != "goodbye"
data.str_hello != "hell"
"hello" != "hell"
data.str_hello != "hello1"
"hello" != "hello1"
data.str_hello.size() != 6
5 != 6
stream.str() == ""
"" == ""
stream.str() == "{\n}"
"{
}"
==
"{
}"
stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" )
"{
"int": 1,
"double": 1.5,
"true": true,
"false": false,
"string": "this is a string",
"array": [
1,
2
]
}" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [
1,
2
]
}" )
stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" )
"{
"empty_object": {
},
"fully_object": {
"key": 1
}
}" ( contains: ""empty_object": {
}," and contains: ""fully_object": {
"key": 1
}" )
stream.str() == "[\n]"
"[
]"
==
"[
]"
stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]"
"[
1,
1.5,
true,
false,
"this is a string",
{
"object": 42
},
[
"array",
42.5
]
]"
==
"[
1,
1.5,
true,
false,
"this is a string",
{
"object": 42
},
[
"array",
42.5
]
]"
stream.str() == "{\n}"
"{
}"
==
"{
}"
stream.str() == "[\n]"
"[
]"
==
"[
]"
stream.str() == "\"custom\""
""custom"" == ""custom""
sstream.str() == "\"\\\"\""
""\""" == ""\"""
sstream.str() == "\"\\\\\""
""\\"" == ""\\""
sstream.str() == "\"/\""
""/"" == ""/""
sstream.str() == "\"\\b\""
""\b"" == ""\b""
sstream.str() == "\"\\f\""
""\f"" == ""\f""
sstream.str() == "\"\\n\""
""\n"" == ""\n""
sstream.str() == "\"\\r\""
""\r"" == ""\r""
sstream.str() == "\"\\t\""
""\t"" == ""\t""
sstream.str() == "\"\\\\/\\t\\r\\n\""
""\\/\t\r\n"" == ""\\/\t\r\n""
[]() { return true; }()
true
d <= Approx( 1.24 )
1.23 <= Approx( 1.24 )
d <= Approx( 1.23 )
1.23 <= Approx( 1.23 )
!(d <= Approx( 1.22 ))
!(1.23 <= Approx( 1.22 ))
d <= Approx( 1.22 ).epsilon(0.1)
1.23 <= Approx( 1.22 )
testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" )
"this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
"this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
"some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" )
"this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" )
"this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
testStringForMatching(), !ContainsSubstring( "different" )
"this string contains 'abc' as a substring" not contains: "different"
testStringForMatching(), !ContainsSubstring( "substring" )
"this string contains 'abc' as a substring" not contains: "substring"
thisThrows(), "expected exception"
"expected exception" equals: "expected exception"
thisThrows(), "should fail"
"expected exception" equals: "should fail"
records == expected
{ "Hello", "world", "Goodbye", "world" }
==
{ "Hello", "world", "Goodbye", "world" }
multiReporter.getPreferences().shouldRedirectStdOut == false
false == false
multiReporter.getPreferences().shouldReportAllAssertions == false
false == false
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == false
false == false
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == true
true == true
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == true
true == true
multiReporter.getPreferences().shouldRedirectStdOut == false
false == false
multiReporter.getPreferences().shouldReportAllAssertions == false
false == false
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == false
false == false
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == true
true == true
multiReporter.getPreferences().shouldRedirectStdOut == true
true == true
multiReporter.getPreferences().shouldReportAllAssertions == true
true == true
values > -6
3 > -6
values > -6
4 > -6
values > -6
5 > -6
values > -6
6 > -6
values > -6
-5 > -6
values > -6
-4 > -6
values > -6
90 > -6
values > -6
91 > -6
values > -6
92 > -6
values > -6
93 > -6
values > -6
94 > -6
values > -6
95 > -6
values > -6
96 > -6
values > -6
97 > -6
values > -6
98 > -6
values > -6
99 > -6
This one ran
custom exception
True
{?}
!False
true
!(False)
!{?}
data.int_seven > 7
7 > 7
data.int_seven < 7
7 < 7
data.int_seven > 8
7 > 8
data.int_seven < 6
7 < 6
data.int_seven < 0
7 < 0
data.int_seven < -1
7 < -1
data.int_seven >= 8
7 >= 8
data.int_seven <= 6
7 <= 6
data.float_nine_point_one < 9
9.1f < 9
data.float_nine_point_one > 10
9.1f > 10
data.float_nine_point_one > 9.2
9.1f > 9.2
data.str_hello > "hello"
"hello" > "hello"
data.str_hello < "hello"
"hello" < "hello"
data.str_hello > "hellp"
"hello" > "hellp"
data.str_hello > "z"
"hello" > "z"
data.str_hello < "hellm"
"hello" < "hellm"
data.str_hello < "a"
"hello" < "a"
data.str_hello >= "z"
"hello" >= "z"
data.str_hello <= "a"
"hello" <= "a"
data.int_seven < 8
7 < 8
data.int_seven > 6
7 > 6
data.int_seven > 0
7 > 0
data.int_seven > -1
7 > -1
data.int_seven >= 7
7 >= 7
data.int_seven >= 6
7 >= 6
data.int_seven <= 7
7 <= 7
data.int_seven <= 8
7 <= 8
data.float_nine_point_one > 9
9.1f > 9
data.float_nine_point_one < 10
9.1f < 10
data.float_nine_point_one < 9.2
9.1f < 9.2
data.str_hello <= "hello"
"hello" <= "hello"
data.str_hello >= "hello"
"hello" >= "hello"
data.str_hello < "hellp"
"hello" < "hellp"
data.str_hello < "zebra"
"hello" < "zebra"
data.str_hello > "hellm"
"hello" > "hellm"
data.str_hello > "a"
"hello" > "a"
rng() == 0x
4242248763 (0x)
==
4242248763 (0x)
rng() == 0x
1867888929 (0x)
==
1867888929 (0x)
rng() == 0x
1276619030 (0x)
==
1276619030 (0x)
rng() == 0x
1911218783 (0x)
==
1911218783 (0x)
rng() == 0x
1827115164 (0x)
==
1827115164 (0x)
rng() == 0x
1472234645 (0x)
==
1472234645 (0x)
rng() == 0x
868832940 (0x)
==
868832940 (0x)
rng() == 0x
570883446 (0x)
==
570883446 (0x)
rng() == 0x
889299803 (0x)
==
889299803 (0x)
rng() == 0x
4261393167 (0x)
==
4261393167 (0x)
rng() == 0x
1472234645 (0x)
==
1472234645 (0x)
rng() == 0x
868832940 (0x)
==
868832940 (0x)
rng() == 0x
570883446 (0x)
==
570883446 (0x)
rng() == 0x
889299803 (0x)
==
889299803 (0x)
rng() == 0x
4261393167 (0x)
==
4261393167 (0x)
( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
&EvilMatcher(), EvilAddressOfOperatorUsed
&EvilMatcher(), EvilAddressOfOperatorUsed
EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
parseUInt( "0" ) == Optional<unsigned int>{ 0 }
{?} == {?}
parseUInt( "100" ) == Optional<unsigned int>{ 100 }
{?} == {?}
parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 }
{?} == {?}
parseUInt( "0x", 16 ) == Optional<unsigned int>{ 255 }
{?} == {?}
!(parseUInt( "" ))
!{?}
!(parseUInt( "!!KJHF*#" ))
!{?}
!(parseUInt( "-1" ))
!{?}
!(parseUInt( "4294967296" ))
!{?}
!(parseUInt( "42949672964294967296429496729642949672964294967296" ))
!{?}
!(parseUInt( "2 4" ))
!{?}
!(parseUInt( "0x", 10 ))
!{?}
spec.hasFilters()
true
spec.getInvalidSpecs().empty()
true
spec.matches( testCase )
true
cli.parse({ "test", "--shard-count=8" })
{?}
config.shardCount == 8
8 == 8
!(result)
!{?}
result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" )
"Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
!(result)
!{?}
result.errorMessage(), ContainsSubstring( "Shard count must be positive" )
"Shard count must be positive" contains: "Shard count must be positive"
cli.parse({ "test", "--shard-index=2" })
{?}
config.shardIndex == 2
2 == 2
!(result)
!{?}
result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" )
"Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
cli.parse({ "test", "--shard-index=0" })
{?}
config.shardIndex == 0
0 == 0
tagString := "[tag with spaces]"
spec.hasFilters()
true
tagString := "[tag with spaces]"
spec.getInvalidSpecs().empty()
true
tagString := "[tag with spaces]"
spec.matches( testCase )
true
tagString := "[I said "good day" sir!]"
spec.hasFilters()
true
tagString := "[I said "good day" sir!]"
spec.getInvalidSpecs().empty()
true
tagString := "[I said "good day" sir!]"
spec.matches( testCase )
true
cli.parse( { "test", "-w", "NoAssertions" } )
{?}
config.warnings == WarnAbout::NoAssertions
1 == 1
!(cli.parse( { "test", "-w", "NoTests" } ))
!{?}
cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } )
{?}
config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec )
3 == 3
p == 0
0 == 0
p == pNULL
0 == 0
p != 0
0x != 0
cp != 0
0x != 0
cpc != 0
0x != 0
returnsNull() == 0
{null string} == 0
returnsConstNull() == 0
{null string} == 0
0 != p
0 != 0x
str1.size() == 3 + 5
8 == 8
str2.size() == 3 + 10
13 == 13
str1.size() == 2 + 5
7 == 7
str2.size() == 2 + 15
17 == 17
"foo", Predicate<const char*>( []( const char* const& ) { return true; } )
"foo" matches undescribed predicate
result
{?}
config.processName == ""
"" == ""
result
{?}
config.processName == "test"
"test" == "test"
config.shouldDebugBreak == false
false == false
config.abortAfter == -1
-1 == -1
config.noThrow == false
false == false
config.reporterSpecifications.empty()
true
!(cfg.hasTestFilters())
!false
cfg.getReporterSpecs().size() == 1
1 == 1
cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} }
{?} == {?}
cfg.getProcessedReporterSpecs().size() == 1
1 == 1
cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} }
{?} == {?}
result
{?}
cfg.hasTestFilters()
true
cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false
false == false
cfg.testSpec().matches(*fakeTestCase("test1"))
true
result
{?}
cfg.hasTestFilters()
true
cfg.testSpec().matches(*fakeTestCase("test1")) == false
false == false
cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
true
result
{?}
cfg.hasTestFilters()
true
cfg.testSpec().matches(*fakeTestCase("test1")) == false
false == false
cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
true
result.errorMessage() := ""
result
{?}
result.errorMessage() := ""
config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } }
{ {?} } == { {?} }
result.errorMessage() := ""
result
{?}
result.errorMessage() := ""
config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } }
{ {?} } == { {?} }
result.errorMessage() := ""
result
{?}
result.errorMessage() := ""
config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } }
{ {?} } == { {?} }
!result
true
result.errorMessage(), ContainsSubstring("Unrecognized reporter")
"Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
result.errorMessage() := ""
result
{?}
result.errorMessage() := ""
config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } }
{ {?} } == { {?} }
result.errorMessage() := ""
result
{?}
result.errorMessage() := ""
config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } }
{ {?} } == { {?} }
cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" })
{?}
config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } }
{ {?}, {?} } == { {?}, {?} }
cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" })
{?}
config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } }
{ {?}, {?} } == { {?}, {?} }
!result
true
result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.")
"Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
cli.parse({"test", "-b"})
{?}
config.shouldDebugBreak == true
true == true
cli.parse({"test", "--break"})
{?}
config.shouldDebugBreak
true
cli.parse({"test", "-a"})
{?}
config.abortAfter == 1
1 == 1
cli.parse({"test", "-x", "2"})
{?}
config.abortAfter == 2
2 == 2
!result
true
result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops")
"Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
cli.parse({"test", "--wait-for-keypress", std::get<0>(input)})
{?}
config.waitForKeypress == std::get<1>(input)
0 == 0
cli.parse({"test", "--wait-for-keypress", std::get<0>(input)})
{?}
config.waitForKeypress == std::get<1>(input)
1 == 1
cli.parse({"test", "--wait-for-keypress", std::get<0>(input)})
{?}
config.waitForKeypress == std::get<1>(input)
2 == 2
cli.parse({"test", "--wait-for-keypress", std::get<0>(input)})
{?}
config.waitForKeypress == std::get<1>(input)
3 == 3
!result
true
result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both")
"keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
cli.parse({"test", "-e"})
{?}
config.noThrow
true
cli.parse({"test", "--nothrow"})
{?}
config.noThrow
true
cli.parse({"test", "-o", "filename.ext"})
{?}
config.defaultOutputFilename == "filename.ext"
"filename.ext" == "filename.ext"
cli.parse({"test", "--out", "filename.ext"})
{?}
config.defaultOutputFilename == "filename.ext"
"filename.ext" == "filename.ext"
cli.parse({"test", "-abe"})
{?}
config.abortAfter == 1
1 == 1
config.shouldDebugBreak
true
config.noThrow == true
true == true
cli.parse({"test"})
{?}
config.defaultColourMode == ColourMode::PlatformDefault
0 == 0
cli.parse( { "test", "--colour-mode", "default" } )
{?}
config.defaultColourMode == ColourMode::PlatformDefault
0 == 0
cli.parse({"test", "--colour-mode", "ansi"})
{?}
config.defaultColourMode == ColourMode::ANSI
1 == 1
cli.parse({"test", "--colour-mode", "none"})
{?}
config.defaultColourMode == ColourMode::None
3 == 3
!result
true
result.errorMessage(), ContainsSubstring( "colour mode must be one of" )
"colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
cli.parse({ "test", "--benchmark-samples=200" })
{?}
config.benchmarkSamples == 200
200 == 200
cli.parse({ "test", "--benchmark-resamples=20000" })
{?}
config.benchmarkResamples == 20000
20000 (0x) == 20000 (0x)
cli.parse({ "test", "--benchmark-confidence-interval=0.99" })
{?}
config.benchmarkConfidenceInterval == Catch::Approx(0.99)
0.99 == Approx( 0.99 )
cli.parse({ "test", "--benchmark-no-analysis" })
{?}
config.benchmarkNoAnalysis
true
cli.parse({ "test", "--benchmark-warmup-time=10" })
{?}
config.benchmarkWarmupTime == 10
10 == 10
std::tuple_size<TestType>::value >= 1
3 >= 1
std::tuple_size<TestType>::value >= 1
2 >= 1
std::tuple_size<TestType>::value >= 1
1 >= 1
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(method)
Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
Catch::Detail::stringify(UsesSentinel{}) == "{ }"
"{ }" == "{ }"
truthy(false)
Hey, its truthy!
testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" )
"this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
testStringForMatching(), Matches( "contains 'abc' as a substring" )
"this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
testStringForMatching(), Matches( "this string contains 'abc' as a" )
"this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'"
"'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
actual, !UnorderedEquals( expected )
{ 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
!(factories.empty())
!false
Tested reporter: Automake
listingString, ContainsSubstring("fakeTag"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: Automake
listingString, ContainsSubstring("fake reporter"s)
"Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: Automake
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: compact
listingString, ContainsSubstring("fakeTag"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: compact
listingString, ContainsSubstring("fake reporter"s)
"Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: compact
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: console
listingString, ContainsSubstring("fakeTag"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: console
listingString, ContainsSubstring("fake reporter"s)
"Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: console
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: JSON
listingString, ContainsSubstring("fakeTag"s)
"{
"version": 1,
"metadata": {
"name": "",
"rng-seed": 1234,
"catch2-version": ""
},
"listings": {
"tags": [
{
"aliases": [
"fakeTag"
],
"count": 1
}
]" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: JSON
listingString, ContainsSubstring("fake reporter"s)
"{
"version": 1,
"metadata": {
"name": "",
"rng-seed": 1234,
"catch2-version": ""
},
"listings": {
"reporters": [
{
"name": "fake reporter",
"description": "fake description"
}
]" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: JSON
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"{
"version": 1,
"metadata": {
"name": "",
"rng-seed": 1234,
"catch2-version": ""
},
"listings": {
"tests": [
{
"name": "fake test name",
"class-name": "",
"tags": [
"fakeTestTag"
],
"source-location": {
"filename": "fake-file.cpp",
"line": 123456789
}
}
]" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: JUnit
listingString, ContainsSubstring("fakeTag"s)
"<?xml version="1.0" encoding="UTF-8"?>
All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: JUnit
listingString, ContainsSubstring("fake reporter"s)
"<?xml version="1.0" encoding="UTF-8"?>
Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: JUnit
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"<?xml version="1.0" encoding="UTF-8"?>
All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: SonarQube
listingString, ContainsSubstring("fakeTag"s)
"<?xml version="1.0" encoding="UTF-8"?>
All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: SonarQube
listingString, ContainsSubstring("fake reporter"s)
"<?xml version="1.0" encoding="UTF-8"?>
Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: SonarQube
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"<?xml version="1.0" encoding="UTF-8"?>
All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: TAP
listingString, ContainsSubstring("fakeTag"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: TAP
listingString, ContainsSubstring("fake reporter"s)
"Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: TAP
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: TeamCity
listingString, ContainsSubstring("fakeTag"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: TeamCity
listingString, ContainsSubstring("fake reporter"s)
"Available reporters:
fake reporter: fake description
" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: TeamCity
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
!(factories.empty())
!false
Tested reporter: XML
listingString, ContainsSubstring("fakeTag"s)
"<?xml version="1.0" encoding="UTF-8"?>
<TagsFromMatchingTests>
<Tag>
<Count>1</Count>
<Aliases>
<Alias>fakeTag</Alias>
</Aliases>
</Tag>
</TagsFromMatchingTests>" contains: "fakeTag"
!(factories.empty())
!false
Tested reporter: XML
listingString, ContainsSubstring("fake reporter"s)
"<?xml version="1.0" encoding="UTF-8"?>
<AvailableReporters>
<Reporter>
<Name>fake reporter</Name>
<Description>fake description</Description>
</Reporter>
</AvailableReporters>" contains: "fake reporter"
!(factories.empty())
!false
Tested reporter: XML
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"<?xml version="1.0" encoding="UTF-8"?>
<MatchingTests>
<TestCase>
<Name>fake test name</Name>
<ClassName/>
<Tags>[fakeTestTag]</Tags>
<SourceInfo>
<File>fake-file.cpp</File>
<Line>123456789</Line>
</SourceInfo>
</TestCase>
</MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
v.size() == 0
0 == 0
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 0
0 == 0
v.capacity() >= 10
10 >= 10
v.size() == 0
0 == 0
A string sent directly to stdout
A string sent directly to stderr
A string sent to stderr via clog
d == Approx( 1.23 )
1.23 == Approx( 1.23 )
d != Approx( 1.22 )
1.23 != Approx( 1.22 )
d != Approx( 1.24 )
1.23 != Approx( 1.24 )
d == 1.23_a
1.23 == Approx( 1.23 )
d != 1.22_a
1.23 != Approx( 1.22 )
Approx( d ) == 1.23
Approx( 1.23 ) == 1.23
Approx( d ) != 1.22
Approx( 1.23 ) != 1.22
Approx( d ) != 1.24
Approx( 1.23 ) != 1.24
Message from section one
Message from section two
testStringForMatching(), StartsWith( "This String" )
"this string contains 'abc' as a substring" starts with: "This String"
testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" starts with: "string" (case insensitive)
Catch::Detail::stringify(singular) == "{ 1 }"
"{ 1 }" == "{ 1 }"
Catch::Detail::stringify(arr) == "{ 3, 2, 1 }"
"{ 3, 2, 1 }" == "{ 3, 2, 1 }"
Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })"
"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
==
"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
testStringForMatching(), ContainsSubstring( "string" )
"this string contains 'abc' as a substring" contains: "string"
testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" contains: "string" (case insensitive)
testStringForMatching(), ContainsSubstring( "abc" )
"this string contains 'abc' as a substring" contains: "abc"
testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" contains: "abc" (case insensitive)
testStringForMatching(), StartsWith( "this" )
"this string contains 'abc' as a substring" starts with: "this"
testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" starts with: "this" (case insensitive)
testStringForMatching(), EndsWith( "substring" )
"this string contains 'abc' as a substring" ends with: "substring"
testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No )
"this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
empty.empty()
true
empty.size() == 0
0 == 0
std::strcmp( empty.data(), "" ) == 0
0 == 0
s.empty() == false
false == false
s.size() == 5
5 == 5
std::strcmp( rawChars, "hello" ) == 0
0 == 0
s.data() == rawChars
"hello" == "hello"
original == "original"
original == "original"
original.data()
original.data()
original.begin() == copy.begin()
"original string" == "original string"
original.begin() == copy.begin()
"original string" == "original string"
ss.empty() == false
false == false
ss.size() == 5
5 == 5
std::strncmp( ss.data(), "hello", 5 ) == 0
0 == 0
ss == "hello"
hello == "hello"
ss.size() == 6
6 == 6
std::strcmp( ss.data(), "world!" ) == 0
0 == 0
s.data() == s2.data()
"hello world!" == "hello world!"
s.data() == ss.data()
"hello world!" == "hello world!"
s.substr(s.size() + 1, 123).empty()
true
std::strcmp(ss.data(), "world!") == 0
0 == 0
s.substr(1'000'000, 1).empty()
true
reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2)
"Hello" != "Hello"
left == right
Hello == Hello
left != left.substr(0, 3)
Hello != Hel
sr == "a standard string"
a standard string == "a standard string"
sr.size() == stdStr.size()
17 == 17
sr == "a standard string"
a standard string == "a standard string"
sr.size() == stdStr.size()
17 == 17
sr == "a standard string"
a standard string == "a standard string"
sr.size() == stdStr.size()
17 == 17
stdStr == "a stringref"
"a stringref" == "a stringref"
stdStr.size() == sr.size()
11 == 11
stdStr == "a stringref"
"a stringref" == "a stringref"
stdStr.size() == sr.size()
11 == 11
lhs == "some string += the stringref contents"
"some string += the stringref contents"
==
"some string += the stringref contents"
together == "abrakadabra"
"abrakadabra" == "abrakadabra"
::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
""abc"" == ""abc""
minute == seconds
1 m == 60 s
hour != seconds
1 h != 60 s
micro != milli
1 us != 1 ms
nano != micro
1 ns != 1 us
half_minute != femto_second
1 [30/1]s != 1 fs
pico_second != atto_second
1 ps != 1 as
now != later
{iso8601-timestamp}
!=
{iso8601-timestamp}
s1 == s2
"if ($b == 10) {
$a = 20;
}"
==
"if ($b == 10) {
$a = 20;
}
"
what, ContainsSubstring( "[@zzz]" )
"error: tag alias, '[@zzz]' already registered.
First seen at: file:2
Redefined at: file:10" contains: "[@zzz]"
what, ContainsSubstring( "file" )
"error: tag alias, '[@zzz]' already registered.
First seen at: file:2
Redefined at: file:10" contains: "file"
what, ContainsSubstring( "2" )
"error: tag alias, '[@zzz]' already registered.
First seen at: file:2
Redefined at: file:10" contains: "2"
what, ContainsSubstring( "10" )
"error: tag alias, '[@zzz]' already registered.
First seen at: file:2
Redefined at: file:10" contains: "10"
registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
testCase.tags.size() == 2
2 == 2
testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) )
{ {?}, {?} } ( Contains: {?} and Contains: {?} )
Template_Fixture<TestType>::m_a == 1
1 == 1
Template_Fixture<TestType>::m_a == 1
1 == 1
Template_Fixture<TestType>::m_a == 1
1.0 == 1
sizeof(TestType) > 0
1 > 0
sizeof(TestType) > 0
4 > 0
sizeof(TestType) > 0
1 > 0
sizeof(TestType) > 0
4 > 0
sizeof(TestType) > 0
4 > 0
sizeof(TestType) > 0
1 > 0
sizeof(TestType) > 0
4 > 0
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == V
6 == 6
v.capacity() >= V
6 >= 6
v.size() == 2 * V
12 == 12
v.capacity() >= 2 * V
12 >= 12
v.size() == V
6 == 6
v.capacity() >= V
6 >= 6
v.size() == 0
0 == 0
v.capacity() >= V
6 >= 6
v.size() == V
6 == 6
v.capacity() >= V
6 >= 6
v.size() == V
6 == 6
v.capacity() >= 2 * V
12 >= 12
v.size() == V
6 == 6
v.capacity() >= V
6 >= 6
v.size() == V
6 == 6
v.capacity() >= V
6 >= 6
v.size() == V
4 == 4
v.capacity() >= V
4 >= 4
v.size() == 2 * V
8 == 8
v.capacity() >= 2 * V
8 >= 8
v.size() == V
4 == 4
v.capacity() >= V
4 >= 4
v.size() == 0
0 == 0
v.capacity() >= V
4 >= 4
v.size() == V
4 == 4
v.capacity() >= V
4 >= 4
v.size() == V
4 == 4
v.capacity() >= 2 * V
8 >= 8
v.size() == V
4 == 4
v.capacity() >= V
4 >= 4
v.size() == V
4 == 4
v.capacity() >= V
4 >= 4
v.size() == V
5 == 5
v.capacity() >= V
5 >= 5
v.size() == 2 * V
10 == 10
v.capacity() >= 2 * V
10 >= 10
v.size() == V
5 == 5
v.capacity() >= V
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= V
5 >= 5
v.size() == V
5 == 5
v.capacity() >= V
5 >= 5
v.size() == V
5 == 5
v.capacity() >= 2 * V
10 >= 10
v.size() == V
5 == 5
v.capacity() >= V
5 >= 5
v.size() == V
5 == 5
v.capacity() >= V
5 >= 5
v.size() == V
15 == 15
v.capacity() >= V
15 >= 15
v.size() == 2 * V
30 == 30
v.capacity() >= 2 * V
30 >= 30
v.size() == V
15 == 15
v.capacity() >= V
15 >= 15
v.size() == 0
0 == 0
v.capacity() >= V
15 >= 15
v.size() == V
15 == 15
v.capacity() >= V
15 >= 15
v.size() == V
15 == 15
v.capacity() >= 2 * V
30 >= 30
v.size() == V
15 == 15
v.capacity() >= V
15 >= 15
v.size() == V
15 == 15
v.capacity() >= V
15 >= 15
testCase.tags.size() == 1
1 == 1
testCase.tags[0] == Tag( "tag1" )
{?} == {?}
0x == bit30and31
3221225472 (0x) == 3221225472
true
true
false
false
true
true
false
false
true
true
false
false
true
true
{Unknown expression after the reported line}
{Unknown expression after the reported line}
Uncaught exception should fail!
false
false
{Unknown expression after the reported line}
{Unknown expression after the reported line}
Uncaught exception should fail!
1 == 2
1 == 2
listingString, ContainsSubstring("[fakeTag]"s)
"All available tags:
1 [fakeTag]
1 tag
" contains: "[fakeTag]"
listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s )
"Available reporters:
fake reporter: fake description
" ( contains: "fake reporter" and contains: "fake description" )
listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s )
"All available test cases:
fake test name
[fakeTestTag]
1 test case
" ( contains: "fake test name" and contains: "fakeTestTag" )
listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s )
"Registered listeners:
fakeListener: fake description
" ( contains: "fakeListener" and contains: "fake description" )
For some reason someone is throwing a string literal!
testCase.isOpen()
true
s1.isOpen()
true
s1.isSuccessfullyCompleted()
true
testCase.isComplete() == false
false == false
ctx.completedCycle()
true
testCase.isSuccessfullyCompleted()
true
testCase.isOpen()
true
s1.isOpen()
true
s1.isComplete()
true
s1.isSuccessfullyCompleted() == false
false == false
testCase.isComplete() == false
false == false
ctx.completedCycle()
true
testCase.isSuccessfullyCompleted() == false
false == false
testCase2.isOpen()
true
s1b.isOpen() == false
false == false
ctx.completedCycle()
true
testCase.isComplete()
true
testCase.isSuccessfullyCompleted()
true
testCase.isOpen()
true
s1.isOpen()
true
s1.isComplete()
true
s1.isSuccessfullyCompleted() == false
false == false
testCase.isComplete() == false
false == false
ctx.completedCycle()
true
testCase.isSuccessfullyCompleted() == false
false == false
testCase2.isOpen()
true
s1b.isOpen() == false
false == false
s2.isOpen()
true
ctx.completedCycle()
true
testCase.isComplete()
true
testCase.isSuccessfullyCompleted()
true
testCase.isOpen()
true
s1.isOpen()
true
s2.isOpen() == false
false == false
testCase.isComplete() == false
false == false
testCase2.isOpen()
true
s1b.isOpen() == false
false == false
s2b.isOpen()
true
ctx.completedCycle() == false
false == false
ctx.completedCycle()
true
s2b.isSuccessfullyCompleted()
true
testCase2.isComplete() == false
false == false
testCase2.isSuccessfullyCompleted()
true
testCase.isOpen()
true
s1.isOpen()
true
s2.isOpen() == false
false == false
testCase.isComplete() == false
false == false
testCase2.isOpen()
true
s1b.isOpen() == false
false == false
s2b.isOpen()
true
ctx.completedCycle() == false
false == false
ctx.completedCycle()
true
s2b.isComplete()
true
s2b.isSuccessfullyCompleted() == false
false == false
testCase2.isSuccessfullyCompleted() == false
false == false
testCase3.isOpen()
true
s1c.isOpen() == false
false == false
s2c.isOpen() == false
false == false
testCase3.isSuccessfullyCompleted()
true
testCase.isOpen()
true
s1.isOpen()
true
s2.isOpen()
true
s2.isComplete()
true
s1.isComplete() == false
false == false
s1.isComplete()
true
testCase.isComplete() == false
false == false
testCase.isComplete()
true
trim(std::string(no_whitespace)) == no_whitespace
"There is no extra whitespace here"
==
"There is no extra whitespace here"
trim(std::string(leading_whitespace)) == no_whitespace
"There is no extra whitespace here"
==
"There is no extra whitespace here"
trim(std::string(trailing_whitespace)) == no_whitespace
"There is no extra whitespace here"
==
"There is no extra whitespace here"
trim(std::string(whitespace_at_both_ends)) == no_whitespace
"There is no extra whitespace here"
==
"There is no extra whitespace here"
trim(StringRef(no_whitespace)) == StringRef(no_whitespace)
There is no extra whitespace here
==
There is no extra whitespace here
trim(StringRef(leading_whitespace)) == StringRef(no_whitespace)
There is no extra whitespace here
==
There is no extra whitespace here
trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace)
There is no extra whitespace here
==
There is no extra whitespace here
trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace)
There is no extra whitespace here
==
There is no extra whitespace here
array_int_a, RangeEquals( c_array )
{ 1, 2, 3 } elements are { 1, 2, 3 }
array_int_a, UnorderedRangeEquals( c_array )
{ 1, 2, 3 } unordered elements are { 1, 2, 3 }
array_int_3, !RangeEquals( array_int_4 )
{ 1, 2, 3 } not elements are { 1, 2, 3, 4 }
array_int_3, !UnorderedRangeEquals( array_int_4 )
{ 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
array_int_a, RangeEquals( vector_char_a )
{ 1, 2, 3 } elements are { 1, 2, 3 }
array_int_a, UnorderedRangeEquals( vector_char_a )
{ 1, 2, 3 } unordered elements are { 1, 2, 3 }
array_int_a, RangeEquals( list_char_a )
{ 1, 2, 3 } elements are { 1, 2, 3 }
array_int_a, UnorderedRangeEquals( list_char_a )
{ 1, 2, 3 } unordered elements are { 1, 2, 3 }
vector_int_a, RangeEquals( vector_char_a )
{ 1, 2, 3 } elements are { 1, 2, 3 }
vector_int_a, UnorderedRangeEquals( vector_char_a )
{ 1, 2, 3 } unordered elements are { 1, 2, 3 }
vector_int_a, !RangeEquals( vector_char_b )
{ 1, 2, 3 } not elements are { 1, 2, 2 }
vector_int_a, !UnorderedRangeEquals( vector_char_b )
{ 1, 2, 3 } not unordered elements are { 1, 2, 2 }
a, !RangeEquals( b )
{ 1, 2, 3 } not elements are { 3, 2, 1 }
a, UnorderedRangeEquals( b )
{ 1, 2, 3 } unordered elements are { 3, 2, 1 }
vector_a, RangeEquals( array_a_plus_1, close_enough )
{ 1, 2, 3 } elements are { 2, 3, 4 }
vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough )
{ 1, 2, 3 } unordered elements are { 2, 3, 4 }
3.14
data, AllMatch(SizeIs(5))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
data, !AllMatch(Contains(0) && Contains(1))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) )
{ 1, 2, 3, 4, 5 } all match matches undescribed predicate
mocked, allMatch
{ 1, 2, 3, 4, 5 } all match matches undescribed predicate
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, !allMatch
{ 1, 2, 3, 4, 5 } not all match matches undescribed predicate
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
data, AllTrue()
{ true, true, true, true, true } contains only true
data, AllTrue()
{ } contains only true
data, !AllTrue()
{ true, true, false, true, true } not contains only true
data, !AllTrue()
{ false, false, false, false, false } not contains only true
data, AllTrue()
{ true, true, true, true, true } contains only true
data, !AllTrue()
{ true, true, false, true, true } not contains only true
data, !AllTrue()
{ false, false, false, false, false } not contains only true
mocked, AllTrue()
{ true, true, true, true, true } contains only true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, !AllTrue()
{ true, true, false, true, true } not contains only true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
data, AnyMatch(SizeIs(5))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
data, !AnyMatch(Contains(0) && Contains(10))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) )
{ 1, 2, 3, 4, 5 } any match matches undescribed predicate
mocked, !anyMatch
{ 1, 2, 3, 4, 5 } not any match matches undescribed predicate
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, anyMatch
{ 1, 2, 3, 4, 5 } any match matches undescribed predicate
mocked.m_derefed[0]
true
!(mocked.m_derefed[1])
!false
!(mocked.m_derefed[2])
!false
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
data, AnyTrue()
{ true, true, true, true, true } contains at least one true
data, !AnyTrue()
{ } not contains at least one true
data, AnyTrue()
{ false, false, true, false, false } contains at least one true
data, !AnyTrue()
{ false, false, false, false, false } not contains at least one true
data, AnyTrue()
{ true, true, true, true, true } contains at least one true
data, AnyTrue()
{ false, false, true, false, false } contains at least one true
data, !AnyTrue()
{ false, false, false, false, false } not contains at least one true
mocked, AnyTrue()
{ false, false, false, false, true } contains at least one true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, AnyTrue()
{ false, false, true, true, true } contains at least one true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
data, NoneMatch(SizeIs(6))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
data, !NoneMatch(Contains(0) && Contains(1))
{ { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) )
{ 1, 2, 3, 4, 5 } none match matches undescribed predicate
mocked, noneMatch
{ 1, 2, 3, 4, 5 } none match matches undescribed predicate
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, !noneMatch
{ 1, 2, 3, 4, 5 } not none match matches undescribed predicate
mocked.m_derefed[0]
true
!(mocked.m_derefed[1])
!false
!(mocked.m_derefed[2])
!false
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
data, !NoneTrue()
{ true, true, true, true, true } not contains no true
data, NoneTrue()
{ } contains no true
data, !NoneTrue()
{ false, false, true, false, false } not contains no true
data, NoneTrue()
{ false, false, false, false, false } contains no true
data, !NoneTrue()
{ true, true, true, true, true } not contains no true
data, !NoneTrue()
{ false, false, true, false, false } not contains no true
data, NoneTrue()
{ false, false, false, false, false } contains no true
mocked, NoneTrue()
{ false, false, false, false, false } contains no true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
mocked.m_derefed[3]
true
mocked.m_derefed[4]
true
mocked, !NoneTrue()
{ false, false, true, true, true } not contains no true
mocked.m_derefed[0]
true
mocked.m_derefed[1]
true
mocked.m_derefed[2]
true
!(mocked.m_derefed[3])
!false
!(mocked.m_derefed[4])
!false
empty_vector, RangeEquals( empty_vector )
{ } elements are { }
empty_vector, !RangeEquals( non_empty_vector )
{ } not elements are { 1 }
non_empty_vector, !RangeEquals( empty_vector )
{ 1 } not elements are { }
non_empty_array, RangeEquals( non_empty_array )
{ 1 } elements are { 1 }
array_a, RangeEquals( array_a )
{ 1, 2, 3 } elements are { 1, 2, 3 }
array_a, !RangeEquals( array_b )
{ 1, 2, 3 } not elements are { 2, 2, 3 }
array_a, !RangeEquals( array_c )
{ 1, 2, 3 } not elements are { 1, 2, 2 }
vector_a, !RangeEquals( vector_b )
{ 1, 2, 3 } not elements are { 1, 2, 3, 4 }
vector_a, RangeEquals( vector_a_plus_1, close_enough )
{ 1, 2, 3 } elements are { 2, 3, 4 }
vector_a, !RangeEquals( vector_b, close_enough )
{ 1, 2, 3 } not elements are { 3, 3, 4 }
needs_adl1, RangeEquals( needs_adl2 )
{ 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } )
{ 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
mocked1, !RangeEquals( arr )
{ 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
mocked1.m_derefed[0]
true
mocked1.m_derefed[1]
true
mocked1.m_derefed[2]
true
!(mocked1.m_derefed[3])
!false
mocked1, RangeEquals( arr )
{ 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
mocked1.m_derefed[0]
true
mocked1.m_derefed[1]
true
mocked1.m_derefed[2]
true
mocked1.m_derefed[3]
true
empty_vector, UnorderedRangeEquals( empty_vector )
{ } unordered elements are { }
empty_vector, !UnorderedRangeEquals( non_empty_vector )
{ } not unordered elements are { 1 }
non_empty_vector, !UnorderedRangeEquals( empty_vector )
{ 1 } not unordered elements are { }
non_empty_array, UnorderedRangeEquals( non_empty_array )
{ 1 } unordered elements are { 1 }
array_a, UnorderedRangeEquals( array_a )
{ 1, 2, 3 } unordered elements are { 1, 2, 3 }
array_a, !UnorderedRangeEquals( array_b )
{ 1, 2, 3 } not unordered elements are { 2, 2, 3 }
vector_a, !UnorderedRangeEquals( vector_b )
{ 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough )
{ 1, 10, 20 } unordered elements are { 11, 21, 2 }
vector_a, !UnorderedRangeEquals( vector_b, close_enough )
{ 1, 10, 21 } not unordered elements are { 11, 21, 3 }
needs_adl1, UnorderedRangeEquals( needs_adl2 )
{ 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
empty_vec, SizeIs(0)
{ } has size == 0
empty_vec, !SizeIs(2)
{ } not has size == 2
empty_vec, SizeIs(Lt(2))
{ } size matches is less than 2
arr, SizeIs(2)
{ 0, 0 } has size == 2
arr, SizeIs( Lt(3))
{ 0, 0 } size matches is less than 3
arr, !SizeIs(!Lt(3))
{ 0, 0 } not size matches not is less than 3
map, SizeIs(3)
{ {?}, {?}, {?} } has size == 3
unrelated::ADL_size{}, SizeIs(12)
{?} has size == 12
has_size{}, SizeIs(13)
{?} has size == 13
d == approx( 1.23 )
1.23 == Approx( 1.23 )
d == approx( 1.22 )
1.23 == Approx( 1.22 )
d == approx( 1.24 )
1.23 == Approx( 1.24 )
d != approx( 1.25 )
1.23 != Approx( 1.25 )
approx( d ) == 1.23
Approx( 1.23 ) == 1.23
approx( d ) == 1.22
Approx( 1.23 ) == 1.22
approx( d ) == 1.24
Approx( 1.23 ) == 1.24
approx( d ) != 1.25
Approx( 1.23 ) != 1.25
empty, Approx( empty )
{ } is approx: { }
v1, Approx( v1 )
{ 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
v1, Approx<double>( { 1., 2., 3. } )
{ 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
v1, !Approx( temp )
{ 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
v1, !Approx( v2 )
{ 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
v1, Approx( v2 ).margin( 0.5 )
{ 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
v1, Approx( v2 ).epsilon( 0.5 )
{ 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 )
{ 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
empty, Approx( t1 )
{ } is approx: { 1.0, 2.0 }
v1, Approx( v2 )
{ 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
v, VectorContains( 1 )
{ 1, 2, 3 } Contains: 1
v, VectorContains( 2 )
{ 1, 2, 3 } Contains: 2
v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) )
{ 1, 2, 3 } Contains: 2
v, Contains( v2 )
{ 1, 2, 3 } Contains: { 1, 2 }
v, Contains<int>( { 1, 2 } )
{ 1, 2, 3 } Contains: { 1, 2 }
v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) )
{ 1, 2, 3 } Contains: { 1, 2 }
v, Contains( v2 )
{ 1, 2, 3 } Contains: { 1, 2, 3 }
v, Contains( empty )
{ 1, 2, 3 } Contains: { }
empty, Contains( empty )
{ } Contains: { }
v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) )
{ 1, 2, 3 } Contains: { 1, 2, 3 }
v5, Contains( v6 )
{ 1, 2, 3 } Contains: { 1, 2 }
v, VectorContains( 1 ) && VectorContains( 2 )
{ 1, 2, 3 } ( Contains: 1 and Contains: 2 )
v, Equals( v )
{ 1, 2, 3 } Equals: { 1, 2, 3 }
empty, Equals( empty )
{ } Equals: { }
v, Equals<int>( { 1, 2, 3 } )
{ 1, 2, 3 } Equals: { 1, 2, 3 }
v, Equals( v2 )
{ 1, 2, 3 } Equals: { 1, 2, 3 }
v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) )
{ 1, 2, 3 } Equals: { 1, 2, 3 }
v5, Equals( v6 )
{ 1, 2, 3 } Equals: { 1, 2, 3 }
v, UnorderedEquals( v )
{ 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
v, UnorderedEquals<int>( { 3, 2, 1 } )
{ 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
empty, UnorderedEquals( empty )
{ } UnorderedEquals: { }
permuted, UnorderedEquals( v )
{ 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
permuted, UnorderedEquals( v )
{ 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) )
{ 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
v5_permuted, UnorderedEquals( v5 )
{ 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
v, VectorContains( -1 )
{ 1, 2, 3 } Contains: -1
empty, VectorContains( 1 )
{ } Contains: 1
empty, Contains( v )
{ } Contains: { 1, 2, 3 }
v, Contains( v2 )
{ 1, 2, 3 } Contains: { 1, 2, 4 }
v, Equals( v2 )
{ 1, 2, 3 } Equals: { 1, 2 }
v2, Equals( v )
{ 1, 2 } Equals: { 1, 2, 3 }
empty, Equals( v )
{ } Equals: { 1, 2, 3 }
v, Equals( empty )
{ 1, 2, 3 } Equals: { }
v, UnorderedEquals( empty )
{ 1, 2, 3 } UnorderedEquals: { }
empty, UnorderedEquals( v )
{ } UnorderedEquals: { 1, 2, 3 }
permuted, UnorderedEquals( v )
{ 1, 3 } UnorderedEquals: { 1, 2, 3 }
permuted, UnorderedEquals( v )
{ 3, 1 } UnorderedEquals: { 1, 2, 3 }
thisThrows(), std::domain_error
thisThrows(), std::domain_error
thisDoesntThrow()
thisDoesntThrow()
thisThrows()
thisThrows()
unexpected exception
thisThrows() == 0
thisThrows() == 0
expected exception
thisThrows() == 0
thisThrows() == 0
expected exception
thisThrows() == 0
thisThrows() == 0
expected exception
encode( "normal string" ) == "normal string"
"normal string" == "normal string"
encode( "" ) == ""
"" == ""
encode( "smith & jones" ) == "smith & jones"
"smith & jones" == "smith & jones"
encode( "smith < jones" ) == "smith < jones"
"smith < jones" == "smith < jones"
encode( "smith > jones" ) == "smith > jones"
"smith > jones" == "smith > jones"
encode( "smith ]]> jones" ) == "smith ]]> jones"
"smith ]]> jones"
==
"smith ]]> jones"
encode( stringWithQuotes ) == stringWithQuotes
"don't "quote" me on that"
==
"don't "quote" me on that"
encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't "quote" me on that"
"don't "quote" me on that"
==
"don't "quote" me on that"
encode( "[\x01]" ) == "[\\x01]"
"[\x01]" == "[\x01]"
encode( "[\x7F]" ) == "[\\x7F]"
"[\x7F]" == "[\x7F]"
stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")")
"<?xml version="1.0" encoding="UTF-8"?>
<Element1 attr1="true" attr2="false"/>
" ( contains: "attr1="true"" and contains: "attr2="false"" )
analysis.mean.point.count() == 23
23.0 == 23
analysis.mean.lower_bound.count() == 23
23.0 == 23
analysis.mean.upper_bound.count() == 23
23.0 == 23
analysis.standard_deviation.point.count() == 0
0.0 == 0
analysis.standard_deviation.lower_bound.count() == 0
0.0 == 0
analysis.standard_deviation.upper_bound.count() == 0
0.0 == 0
analysis.outliers.total() == 0
0 == 0
analysis.outliers.low_mild == 0
0 == 0
analysis.outliers.low_severe == 0
0 == 0
analysis.outliers.high_mild == 0
0 == 0
analysis.outliers.high_severe == 0
0 == 0
analysis.outliers.samples_seen == 0
0 == 0
analysis.outlier_variance == 0
0.0 == 0
Catch::Detail::stringify( empty ) == "{ }"
"{ }" == "{ }"
Catch::Detail::stringify( oneValue ) == "{ 42 }"
"{ 42 }" == "{ 42 }"
Catch::Detail::stringify( twoValues ) == "{ 42, 250 }"
"{ 42, 250 }" == "{ 42, 250 }"
model.started == 1
1 == 1
model.finished == 0
0 == 0
model.started == 1
1 == 1
model.finished == 1
1 == 1
called == 1
1 == 1
model.started == 0
0 == 0
model.finished == 0
0 == 0
model.started == 0
0 == 0
model.finished == 0
0 == 0
called == 1
1 == 1
obj.prop != 0
0x != 0
flag
true
testCheckedElse( true )
true
flag
false
testCheckedElse( false )
false
flag
true
testCheckedIf( true )
true
flag
false
testCheckedIf( false )
false
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
0 == 0
o.low_mild == lom
0 == 0
o.high_mild == him
0 == 0
o.high_severe == his
0 == 0
o.total() == los + lom + him + his
0 == 0
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
1 == 1
o.low_mild == lom
0 == 0
o.high_mild == him
0 == 0
o.high_severe == his
0 == 0
o.total() == los + lom + him + his
1 == 1
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
0 == 0
o.low_mild == lom
1 == 1
o.high_mild == him
0 == 0
o.high_severe == his
0 == 0
o.total() == los + lom + him + his
1 == 1
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
0 == 0
o.low_mild == lom
0 == 0
o.high_mild == him
1 == 1
o.high_severe == his
0 == 0
o.total() == los + lom + him + his
1 == 1
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
0 == 0
o.low_mild == lom
0 == 0
o.high_mild == him
0 == 0
o.high_severe == his
1 == 1
o.total() == los + lom + him + his
1 == 1
o.samples_seen == static_cast<int>(x.size())
6 == 6
o.low_severe == los
1 == 1
o.low_mild == lom
0 == 0
o.high_mild == him
1 == 1
o.high_severe == his
0 == 0
o.total() == los + lom + him + his
2 == 2
unsigned_char_var == 1
1 == 1
unsigned_short_var == 1
1 == 1
unsigned_int_var == 1
1 == 1
unsigned_long_var == 1
1 == 1
long_var == unsigned_char_var
1 == 1
long_var == unsigned_short_var
1 == 1
long_var == unsigned_int_var
1 == 1
long_var == unsigned_long_var
1 == 1
convertToBits( 0.f ) == 0
0 == 0
convertToBits( -0.f ) == ( 1ULL << 31 )
2147483648 (0x)
==
2147483648 (0x)
convertToBits( 0. ) == 0
0 == 0
convertToBits( -0. ) == ( 1ULL << 63 )
9223372036854775808 (0x)
==
9223372036854775808 (0x)
convertToBits( std::numeric_limits<float>::denorm_min() ) == 1
1 == 1
convertToBits( std::numeric_limits<double>::denorm_min() ) == 1
1 == 1
skipping because answer = 41
skipping because answer = 43
Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
erfc_inv(1.103560) == Approx(-0.09203687623843015)
-0.0920368762 == Approx( -0.0920368762 )
erfc_inv(1.067400) == Approx(-0.05980291115763361)
-0.0598029112 == Approx( -0.0598029112 )
erfc_inv(0.050000) == Approx(1.38590382434967796)
1.3859038243 == Approx( 1.3859038243 )
res.mean.count() == rate
2000.0 == 2000 (0x)
res.outliers.total() == 0
0 == 0
3 == 4
3 == 4
Previous info should not be seen
previous unscoped info SHOULD not be seen
l == std::numeric_limits<long long>::max()
9223372036854775807 (0x)
==
9223372036854775807 (0x)
Testing if fib[0] (1) is even
( fib[i] % 2 ) == 0
1 == 0
Testing if fib[1] (1) is even
( fib[i] % 2 ) == 0
1 == 0
Testing if fib[2] (2) is even
( fib[i] % 2 ) == 0
0 == 0
Testing if fib[3] (3) is even
( fib[i] % 2 ) == 0
1 == 0
Testing if fib[4] (5) is even
( fib[i] % 2 ) == 0
1 == 0
Testing if fib[5] (8) is even
( fib[i] % 2 ) == 0
0 == 0
Testing if fib[6] (13) is even
( fib[i] % 2 ) == 0
1 == 0
Testing if fib[7] (21) is even
( fib[i] % 2 ) == 0
1 == 0
Catch::makeStream( "%debug" )
Catch::makeStream( "%debug" )
*ptr == std::tuple<int, double, int>{1, 2., 3}
{?} == {?}
m == 19.
19.0 == 19.0
x == 17
17 == 17
x == 23
23 == 23
r.elapsed.count() == 42
42 == 42
r.result == 23
23 == 23
r.iterations == 1
1 == 1
s.elapsed.count() == 69
69 == 69
s.result == 17
17 == 17
s.iterations == 1
1 == 1
info
unscoped info
and warn may mix
info
unscoped info
they are not cleared after warnings
a != b
1 != 2
b != a
2 != 1
a!
b1!
!
s == "7"
"7" == "7"
ti == typeid(int)
{?} == {?}
normal_cdf(0.000000) == Approx(0.50000000000000000)
0.5 == Approx( 0.5 )
normal_cdf(1.000000) == Approx(0.84134474606854293)
0.8413447461 == Approx( 0.8413447461 )
normal_cdf(-1.000000) == Approx(0.15865525393145705)
0.1586552539 == Approx( 0.1586552539 )
normal_cdf(2.809729) == Approx(0.99752083845315409)
0.9975208385 == Approx( 0.9975208385 )
normal_cdf(-1.352570) == Approx(0.08809652095066035)
0.088096521 == Approx( 0.088096521 )
normal_quantile(0.551780) == Approx(0.13015979861484198)
0.1301597986 == Approx( 0.1301597986 )
normal_quantile(0.533700) == Approx(0.08457408802851875)
0.084574088 == Approx( 0.084574088 )
normal_quantile(0.025000) == Approx(-1.95996398454005449)
-1.9599639845 == Approx( -1.9599639845 )
this MAY be seen only for the FIRST assertion IF info is printed for passing assertions
true
true
this MAY be seen only for the SECOND assertion IF info is printed for passing assertions
true
true
this SHOULD be seen
false
false
makeString( false ) != static_cast<char*>(0)
"valid string" != {null string}
makeString( true ) == static_cast<char*>(0)
{null string} == {null string}
ptr.get() == 0
0 == 0
::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }"
"{ { 42, "Arthur" }, { "Ford", 24 } }"
==
"{ { 42, "Arthur" }, { "Ford", 24 } }"
parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} )
{ } Equals: { }
parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} )
{ Value1 } Equals: { Value1 }
parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} )
{ Value1 } Equals: { Value1 }
parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} )
{ Value1 } Equals: { Value1 }
parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} )
{ Value1, Value2 } Equals: { Value1, Value2 }
parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} )
{ Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} )
{ Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
p == 0
0 == 0
this MAY be seen IF info is printed for passing assertions
true
true
this SHOULD be seen
this SHOULD also be seen
false
false
this SHOULD be seen only ONCE
false
false
true
true
this MAY also be seen only ONCE IF info is printed for passing assertions
true
true
true
true
a != b
1 != 2
b != a
2 != 1
Catch::replaceInPlace(letters, "b", "z")
true
letters == "azcdefcg"
"azcdefcg" == "azcdefcg"
Catch::replaceInPlace(letters, "c", "z")
true
letters == "abzdefzg"
"abzdefzg" == "abzdefzg"
Catch::replaceInPlace(letters, "a", "z")
true
letters == "zbcdefcg"
"zbcdefcg" == "zbcdefcg"
Catch::replaceInPlace(letters, "g", "z")
true
letters == "abcdefcz"
"abcdefcz" == "abcdefcz"
Catch::replaceInPlace(letters, letters, "replaced")
true
letters == "replaced"
"replaced" == "replaced"
!(Catch::replaceInPlace(letters, "x", "z"))
!false
letters == letters
"abcdefcg" == "abcdefcg"
Catch::replaceInPlace(s, "'", "|'")
true
s == "didn|'t"
"didn|'t" == "didn|'t"
Catch::makeStream( "%somestream" )
Catch::makeStream( "%somestream" )
res.size() == count
10 == 10
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
res[i] == rate
1000.0 == 1000 (0x)
meter.runs() >= old_runs
1 >= 1
meter.runs() >= old_runs
2 >= 1
meter.runs() >= old_runs
4 >= 2
meter.runs() >= old_runs
8 >= 4
meter.runs() >= old_runs
16 >= 8
meter.runs() >= old_runs
32 >= 16
meter.runs() >= old_runs
64 >= 32
meter.runs() >= old_runs
128 >= 64
Timing.elapsed >= time
128 ns >= 100 ns
Timing.result == Timing.iterations + 17
145 == 145
Timing.iterations >= time.count()
128 >= 100
x >= old_x
1 >= 1
x >= old_x
2 >= 1
x >= old_x
4 >= 2
x >= old_x
8 >= 4
x >= old_x
16 >= 8
x >= old_x
32 >= 16
x >= old_x
64 >= 32
x >= old_x
128 >= 64
Timing.elapsed >= time
128 ns >= 100 ns
Timing.result == Timing.iterations + 17
145 == 145
Timing.iterations >= time.count()
128 >= 100
3
false
false
hi
i := 7
false
false
testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) )
{ {?}, {?} } ( Contains: {?} and Contains: {?} )
skipping because answer = 43
splitStringRef("", ','), Equals(std::vector<StringRef>())
{ } Equals: { }
splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"})
{ abc } Equals: { abc }
splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"})
{ abc, def } Equals: { abc, def }
Count 1 to 3...
1
2
3
false
false
Count 4 to 6...
4
5
6
false
false
!(startsWith("", 'c'))
!false
startsWith(std::string("abc"), 'a')
true
startsWith("def"_catch_sr, 'd')
true
Catch::Detail::stringify( emptyMap ) == "{ }"
"{ }" == "{ }"
Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }"
"{ { "one", 1 } }" == "{ { "one", 1 } }"
Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }"
"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
==
"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }"
"{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }"
"{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
Catch::Detail::stringify( emptySet ) == "{ }"
"{ }" == "{ }"
Catch::Detail::stringify( set ) == "{ \"one\" }"
"{ "one" }" == "{ "one" }"
Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }"
"{ "abc", "def", "ghi" }"
==
"{ "abc", "def", "ghi" }"
::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }"
"{ { "green", 55 } }"
==
"{ { "green", 55 } }"
Catch::makeStream( "%stderr" )->isConsole()
true
Catch::makeStream( "%stdout" )->isConsole()
true
::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)"
"op<<(streamable_range)"
==
"op<<(streamable_range)"
::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)"
"stringmaker(streamable_range)"
==
"stringmaker(streamable_range)"
::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }"
"{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
::Catch::Detail::stringify(disabled_range{}) == "{?}"
"{?}" == "{?}"
::Catch::Detail::stringify( item ) == "StringMaker<has_maker>"
"StringMaker<has_maker>"
==
"StringMaker<has_maker>"
::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>"
"StringMaker<has_maker_and_operator>"
==
"StringMaker<has_maker_and_operator>"
::Catch::Detail::stringify(item) == "{?}"
"{?}" == "{?}"
::Catch::Detail::stringify( item ) == "operator<<( has_operator )"
"operator<<( has_operator )"
==
"operator<<( has_operator )"
::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )"
"operator<<( has_template_operator )"
==
"operator<<( has_template_operator )"
::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }"
"{ StringMaker<has_maker> }"
==
"{ StringMaker<has_maker> }"
::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }"
"{ StringMaker<has_maker_and_operator> }"
==
"{ StringMaker<has_maker_and_operator> }"
::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }"
"{ operator<<( has_operator ) }"
==
"{ operator<<( has_operator ) }"
data.str.size() == data.len
3 == 3
data.str.size() == data.len
3 == 3
data.str.size() == data.len
5 == 5
data.str.size() == data.len
4 == 4
strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data))
5 == 5
strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data))
6 == 6
strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data))
5 == 5
strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data))
6 == 6
testcase.tags.size() == 1
1 == 1
testcase.tags[0].original == "magic.tag"_catch_sr
magic.tag == magic.tag
Why would you throw a std::string?
result == "\"wide load\""
""wide load"" == ""wide load""
result == "\"wide load\""
""wide load"" == ""wide load""
result == "\"wide load\""
""wide load"" == ""wide load""
result == "\"wide load\""
""wide load"" == ""wide load""
::Catch::Detail::stringify(e0) == "E2/V0"
"E2/V0" == "E2/V0"
::Catch::Detail::stringify(e1) == "E2/V1"
"E2/V1" == "E2/V1"
::Catch::Detail::stringify(e3) == "Unknown enum value 10"
"Unknown enum value 10"
==
"Unknown enum value 10"
::Catch::Detail::stringify(e0) == "0"
"0" == "0"
::Catch::Detail::stringify(e1) == "1"
"1" == "1"
::Catch::Detail::stringify(e0) == "E2{0}"
"E2{0}" == "E2{0}"
::Catch::Detail::stringify(e1) == "E2{1}"
"E2{1}" == "E2{1}"
::Catch::Detail::stringify(e0) == "0"
"0" == "0"
::Catch::Detail::stringify(e1) == "1"
"1" == "1"
"{ }" == ::Catch::Detail::stringify(type{})
"{ }" == "{ }"
"{ }" == ::Catch::Detail::stringify(value)
"{ }" == "{ }"
"1.2f" == ::Catch::Detail::stringify(float(1.2))
"1.2f" == "1.2f"
"{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0})
"{ 1.2f, 0 }" == "{ 1.2f, 0 }"
"{ 0 }" == ::Catch::Detail::stringify(type{0})
"{ 0 }" == "{ 0 }"
"{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"})
"{ "hello", "world" }"
==
"{ "hello", "world" }"
"{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value)
"{ { 42 }, { }, 1.2f }"
==
"{ { 42 }, { }, 1.2f }"
e.point == 23
23.0 == 23
e.upper_bound == 23
23.0 == 23
e.lower_bound == 23
23.0 == 23
e.confidence_interval == 0.95
0.95 == 0.95
!(ptr)
!{?}
ptr.get() == 0
0 == 0
ptr
{?}
*ptr == 0
0 == 0
ptr.get() == naked_ptr
0x == 0x
!(ptr)
!{?}
ptr.get() == 0
0 == 0
ptr
{?}
*ptr == 0
0 == 0
ptr.get() == naked_ptr
0x == 0x
ptr
{?}
ptr.get() != 0
0x != 0
*ptr == 2
2 == 2
!(ptr)
!{?}
ptr.get() == 0
0 == 0
!(ptr1)
!{?}
ptr2
{?}
*ptr2 == 1
1 == 1
!(ptr2)
!{?}
ptr1
{?}
*ptr1 == 2
2 == 2
*ptr1 == 2
2 == 2
*ptr2 == 1
1 == 1
::Catch::Detail::stringify(v) == "{ }"
"{ }" == "{ }"
::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }"
"{ { "hello" }, { "world" } }"
==
"{ { "hello" }, { "world" } }"
::Catch::Detail::stringify(bools) == "{ }"
"{ }" == "{ }"
::Catch::Detail::stringify(bools) == "{ true }"
"{ true }" == "{ true }"
::Catch::Detail::stringify(bools) == "{ true, false }"
"{ true, false }" == "{ true, false }"
::Catch::Detail::stringify(vv) == "{ }"
"{ }" == "{ }"
::Catch::Detail::stringify(vv) == "{ 42 }"
"{ 42 }" == "{ 42 }"
::Catch::Detail::stringify(vv) == "{ 42, 250 }"
"{ 42, 250 }" == "{ 42, 250 }"
::Catch::Detail::stringify(vv) == "{ }"
"{ }" == "{ }"
::Catch::Detail::stringify(vv) == "{ 42 }"
"{ 42 }" == "{ 42 }"
::Catch::Detail::stringify(vv) == "{ 42, 250 }"
"{ 42, 250 }" == "{ 42, 250 }"
::Catch::Detail::stringify(vv) == "{ }"
"{ }" == "{ }"
::Catch::Detail::stringify(vv) == "{ \"hello\" }"
"{ "hello" }" == "{ "hello" }"
::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }"
"{ "hello", "world" }"
==
"{ "hello", "world" }"
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 10
10 == 10
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 0
0 == 0
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 10
10 >= 10
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
v.size() == 5
5 == 5
v.capacity() >= 5
5 >= 5
(iterations * rate) > Catch::Benchmark::Detail::warmup_time.count()
160000000 (0x) > 100
(end - start) > Catch::Benchmark::Detail::warmup_time
310016000 ns > 100 ms
q1 == 14.5
14.5 == 14.5
med == 18.
18.0 == 18.0
q3 == 23.
23.0 == 23.0