mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-25 23:06:10 +01:00
parent
5e8df1c384
commit
126850e76b
@ -387,7 +387,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename R>
|
template<typename R>
|
||||||
struct StringMaker<R, typename std::enable_if<is_range<R>::value && !std::is_array<R>::value>::type> {
|
struct StringMaker<R, typename std::enable_if<is_range<R>::value && !::Catch::Detail::IsStreamInsertable<R>::value>::type> {
|
||||||
static std::string convert( R const& range ) {
|
static std::string convert( R const& range ) {
|
||||||
return rangeToString( range );
|
return rangeToString( range );
|
||||||
}
|
}
|
||||||
|
@ -987,6 +987,14 @@ Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load
|
|||||||
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
||||||
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
||||||
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
|
||||||
|
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)"
|
||||||
|
==
|
||||||
|
"op<<(streamable_range)"
|
||||||
|
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)"
|
||||||
|
==
|
||||||
|
"stringmaker(streamable_range)"
|
||||||
|
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
|
||||||
|
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
|
||||||
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }"
|
ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }"
|
||||||
==
|
==
|
||||||
"{ StringMaker<has_maker> }"
|
"{ StringMaker<has_maker> }"
|
||||||
|
@ -1064,6 +1064,6 @@ with expansion:
|
|||||||
"first" == "second"
|
"first" == "second"
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 197 | 146 passed | 47 failed | 4 failed as expected
|
test cases: 198 | 147 passed | 47 failed | 4 failed as expected
|
||||||
assertions: 992 | 866 passed | 105 failed | 21 failed as expected
|
assertions: 996 | 870 passed | 105 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -7894,6 +7894,40 @@ PASSED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
""wide load"" == ""wide load""
|
""wide load"" == ""wide load""
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
toString streamable range
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ToStringWhich.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ToStringWhich.tests.cpp:<line number>:
|
||||||
|
PASSED:
|
||||||
|
REQUIRE( ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" )
|
||||||
|
with expansion:
|
||||||
|
"op<<(streamable_range)"
|
||||||
|
==
|
||||||
|
"op<<(streamable_range)"
|
||||||
|
|
||||||
|
ToStringWhich.tests.cpp:<line number>:
|
||||||
|
PASSED:
|
||||||
|
REQUIRE( ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" )
|
||||||
|
with expansion:
|
||||||
|
"stringmaker(streamable_range)"
|
||||||
|
==
|
||||||
|
"stringmaker(streamable_range)"
|
||||||
|
|
||||||
|
ToStringWhich.tests.cpp:<line number>:
|
||||||
|
PASSED:
|
||||||
|
REQUIRE( ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" )
|
||||||
|
with expansion:
|
||||||
|
"{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
|
||||||
|
|
||||||
|
ToStringWhich.tests.cpp:<line number>:
|
||||||
|
PASSED:
|
||||||
|
REQUIRE( ::Catch::Detail::stringify(disabled_range{}) == "{?}" )
|
||||||
|
with expansion:
|
||||||
|
"{?}" == "{?}"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
toString( vectors<has_maker> )
|
toString( vectors<has_maker> )
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -8407,6 +8441,6 @@ Misc.tests.cpp:<line number>:
|
|||||||
PASSED:
|
PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 197 | 132 passed | 61 failed | 4 failed as expected
|
test cases: 198 | 133 passed | 61 failed | 4 failed as expected
|
||||||
assertions: 1003 | 862 passed | 120 failed | 21 failed as expected
|
assertions: 1007 | 866 passed | 120 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuitesloose text artifact
|
<testsuitesloose text artifact
|
||||||
>
|
>
|
||||||
<testsuite name="<exe-name>" errors="15" failures="106" tests="1004" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
<testsuite name="<exe-name>" errors="15" failures="106" tests="1008" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||||
<testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="#1005: Comparing pointer to int and long (NULL can be either on various systems)" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="#1005: Comparing pointer to int and long (NULL can be either on various systems)" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="#1027" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="#1027" time="{duration}"/>
|
||||||
@ -825,6 +825,7 @@ Tricky.tests.cpp:<line number>
|
|||||||
<testcase classname="<exe-name>.global" name="toString on const wchar_t pointer returns the string contents" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString on const wchar_t pointer returns the string contents" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="toString on wchar_t const pointer returns the string contents" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString on wchar_t const pointer returns the string contents" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="toString on wchar_t returns the string contents" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString on wchar_t returns the string contents" time="{duration}"/>
|
||||||
|
<testcase classname="<exe-name>.global" name="toString streamable range" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="toString( vectors<has_maker> )" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString( vectors<has_maker> )" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="toString( vectors<has_maker_and_operator> )" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString( vectors<has_maker_and_operator> )" time="{duration}"/>
|
||||||
<testcase classname="<exe-name>.global" name="toString( vectors<has_operator> )" time="{duration}"/>
|
<testcase classname="<exe-name>.global" name="toString( vectors<has_operator> )" time="{duration}"/>
|
||||||
|
@ -8750,6 +8750,45 @@ loose text artifact
|
|||||||
</Expression>
|
</Expression>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="toString streamable range" tags="[toString]" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)"
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
"op<<(streamable_range)"
|
||||||
|
==
|
||||||
|
"op<<(streamable_range)"
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)"
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
"stringmaker(streamable_range)"
|
||||||
|
==
|
||||||
|
"stringmaker(streamable_range)"
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }"
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
"{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
::Catch::Detail::stringify(disabled_range{}) == "{?}"
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
"{?}" == "{?}"
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="toString( vectors<has_maker> )" tags="[toString]" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
<TestCase name="toString( vectors<has_maker> )" tags="[toString]" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
|
||||||
<Original>
|
<Original>
|
||||||
@ -9257,7 +9296,7 @@ loose text artifact
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="862" failures="121" expectedFailures="21"/>
|
<OverallResults successes="866" failures="121" expectedFailures="21"/>
|
||||||
</Group>
|
</Group>
|
||||||
<OverallResults successes="862" failures="120" expectedFailures="21"/>
|
<OverallResults successes="866" failures="120" expectedFailures="21"/>
|
||||||
</Catch>
|
</Catch>
|
||||||
|
@ -71,3 +71,76 @@ TEST_CASE( "toString( vectors<has_maker_and_operator> )", "[toString]" ) {
|
|||||||
std::vector<has_maker_and_operator> v(1);
|
std::vector<has_maker_and_operator> v(1);
|
||||||
REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" );
|
REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Conversion should go
|
||||||
|
// StringMaker specialization, operator<<, range/enum detection, unprintable
|
||||||
|
struct int_iterator {
|
||||||
|
using iterator_category = std::input_iterator_tag;
|
||||||
|
using difference_type = std::ptrdiff_t;
|
||||||
|
using value_type = int;
|
||||||
|
using reference = int&;
|
||||||
|
using pointer = int*;
|
||||||
|
|
||||||
|
int_iterator() = default;
|
||||||
|
int_iterator(int i) :val(i) {}
|
||||||
|
|
||||||
|
value_type operator*() const { return val; }
|
||||||
|
bool operator==(int_iterator rhs) const { return val == rhs.val; }
|
||||||
|
bool operator!=(int_iterator rhs) const { return val != rhs.val; }
|
||||||
|
int_iterator operator++() { ++val; return *this; }
|
||||||
|
int_iterator operator++(int) {
|
||||||
|
auto temp(*this);
|
||||||
|
++val;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
int val = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct streamable_range {
|
||||||
|
int_iterator begin() const { return int_iterator{ 1 }; }
|
||||||
|
int_iterator end() const { return {}; }
|
||||||
|
};
|
||||||
|
|
||||||
|
std::ostream& operator<<(std::ostream& os, const streamable_range&) {
|
||||||
|
os << "op<<(streamable_range)";
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct stringmaker_range {
|
||||||
|
int_iterator begin() const { return int_iterator{ 1 }; }
|
||||||
|
int_iterator end() const { return {}; }
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
template <>
|
||||||
|
struct StringMaker<stringmaker_range> {
|
||||||
|
static std::string convert(stringmaker_range const&) {
|
||||||
|
return "stringmaker(streamable_range)";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
struct just_range {
|
||||||
|
int_iterator begin() const { return int_iterator{ 1 }; }
|
||||||
|
int_iterator end() const { return {}; }
|
||||||
|
};
|
||||||
|
|
||||||
|
struct disabled_range {
|
||||||
|
int_iterator begin() const { return int_iterator{ 1 }; }
|
||||||
|
int_iterator end() const { return {}; }
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
template <>
|
||||||
|
struct is_range<disabled_range> {
|
||||||
|
static const bool value = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("toString streamable range", "[toString]") {
|
||||||
|
REQUIRE(::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)");
|
||||||
|
REQUIRE(::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)");
|
||||||
|
REQUIRE(::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }");
|
||||||
|
REQUIRE(::Catch::Detail::stringify(disabled_range{}) == "{?}");
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user