mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 05:59:32 +01:00 
			
		
		
		
	Make StringRef's operator std::string explicit
This way it is explicit when there is a `StringRef` -> `std::string` conversion and makes it easier to look for allocations that could be avoided. Doing this has already removed one allocation per registered test case, as there was a completely pointless `StringRef` -> `std::string` conversion when parsing tags of a test case.
This commit is contained in:
		@@ -1043,8 +1043,6 @@ String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringre
 | 
			
		||||
String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
 | 
			
		||||
String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
 | 
			
		||||
String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
 | 
			
		||||
String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
 | 
			
		||||
String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
 | 
			
		||||
ToStringChrono.tests.cpp:<line number>: passed: minute == seconds for: 1 m == 60 s
 | 
			
		||||
ToStringChrono.tests.cpp:<line number>: passed: hour != seconds for: 1 h != 60 s
 | 
			
		||||
ToStringChrono.tests.cpp:<line number>: passed: micro != milli for: 1 us != 1 ms
 | 
			
		||||
 
 | 
			
		||||
@@ -1381,5 +1381,5 @@ due to unexpected exception with message:
 | 
			
		||||
 | 
			
		||||
===============================================================================
 | 
			
		||||
test cases:  300 |  226 passed |  70 failed |  4 failed as expected
 | 
			
		||||
assertions: 1559 | 1407 passed | 131 failed | 21 failed as expected
 | 
			
		||||
assertions: 1557 | 1405 passed | 131 failed | 21 failed as expected
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7783,24 +7783,6 @@ String.tests.cpp:<line number>: PASSED:
 | 
			
		||||
with expansion:
 | 
			
		||||
  17 == 17
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
StringRef
 | 
			
		||||
  to std::string
 | 
			
		||||
  implicitly constructed
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
String.tests.cpp:<line number>
 | 
			
		||||
...............................................................................
 | 
			
		||||
 | 
			
		||||
String.tests.cpp:<line number>: PASSED:
 | 
			
		||||
  REQUIRE( stdStr == "a stringref" )
 | 
			
		||||
with expansion:
 | 
			
		||||
  "a stringref" == "a stringref"
 | 
			
		||||
 | 
			
		||||
String.tests.cpp:<line number>: PASSED:
 | 
			
		||||
  REQUIRE( stdStr.size() == sr.size() )
 | 
			
		||||
with expansion:
 | 
			
		||||
  11 == 11
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
StringRef
 | 
			
		||||
  to std::string
 | 
			
		||||
@@ -12462,5 +12444,5 @@ Misc.tests.cpp:<line number>: PASSED:
 | 
			
		||||
 | 
			
		||||
===============================================================================
 | 
			
		||||
test cases:  300 |  210 passed |  86 failed |  4 failed as expected
 | 
			
		||||
assertions: 1576 | 1407 passed | 148 failed | 21 failed as expected
 | 
			
		||||
assertions: 1574 | 1405 passed | 148 failed | 21 failed as expected
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<testsuitesloose text artifact
 | 
			
		||||
>
 | 
			
		||||
  <testsuite name="<exe-name>" errors="17" failures="132" tests="1577" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
			
		||||
  <testsuite name="<exe-name>" errors="17" failures="132" tests="1575" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
			
		||||
    <properties>
 | 
			
		||||
      <property name="filters" value="~[!nonportable]~[!benchmark]~[approvals]"/>
 | 
			
		||||
      <property name="random-seed" value="1"/>
 | 
			
		||||
@@ -726,7 +726,6 @@ Matchers.tests.cpp:<line number>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/from std::string/implicitly constructed" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/from std::string/explicitly constructed" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/from std::string/assigned" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/to std::string/implicitly constructed" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/to std::string/explicitly constructed" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="StringRef/to std::string/assigned" time="{duration}"/>
 | 
			
		||||
    <testcase classname="<exe-name>.global" name="Stringifying std::chrono::duration helpers" time="{duration}"/>
 | 
			
		||||
 
 | 
			
		||||
@@ -9601,28 +9601,6 @@ Message from section two
 | 
			
		||||
        </Section>
 | 
			
		||||
        <OverallResults successes="2" failures="0" expectedFailures="0"/>
 | 
			
		||||
      </Section>
 | 
			
		||||
      <Section name="to std::string" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
        <Section name="implicitly constructed" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
          <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
            <Original>
 | 
			
		||||
              stdStr == "a stringref"
 | 
			
		||||
            </Original>
 | 
			
		||||
            <Expanded>
 | 
			
		||||
              "a stringref" == "a stringref"
 | 
			
		||||
            </Expanded>
 | 
			
		||||
          </Expression>
 | 
			
		||||
          <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
            <Original>
 | 
			
		||||
              stdStr.size() == sr.size()
 | 
			
		||||
            </Original>
 | 
			
		||||
            <Expanded>
 | 
			
		||||
              11 == 11
 | 
			
		||||
            </Expanded>
 | 
			
		||||
          </Expression>
 | 
			
		||||
          <OverallResults successes="2" failures="0" expectedFailures="0"/>
 | 
			
		||||
        </Section>
 | 
			
		||||
        <OverallResults successes="2" failures="0" expectedFailures="0"/>
 | 
			
		||||
      </Section>
 | 
			
		||||
      <Section name="to std::string" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
        <Section name="explicitly constructed" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
          <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/String.tests.cpp" >
 | 
			
		||||
@@ -14834,7 +14812,7 @@ loose text artifact
 | 
			
		||||
      </Section>
 | 
			
		||||
      <OverallResult success="true"/>
 | 
			
		||||
    </TestCase>
 | 
			
		||||
    <OverallResults successes="1407" failures="149" expectedFailures="21"/>
 | 
			
		||||
    <OverallResults successes="1405" failures="149" expectedFailures="21"/>
 | 
			
		||||
  </Group>
 | 
			
		||||
  <OverallResults successes="1407" failures="148" expectedFailures="21"/>
 | 
			
		||||
  <OverallResults successes="1405" failures="148" expectedFailures="21"/>
 | 
			
		||||
</Catch>
 | 
			
		||||
 
 | 
			
		||||
@@ -142,11 +142,6 @@ TEST_CASE( "StringRef", "[Strings][StringRef]" ) {
 | 
			
		||||
    SECTION( "to std::string" ) {
 | 
			
		||||
        StringRef sr = "a stringref";
 | 
			
		||||
 | 
			
		||||
        SECTION( "implicitly constructed" ) {
 | 
			
		||||
            std::string stdStr = sr;
 | 
			
		||||
            REQUIRE( stdStr == "a stringref" );
 | 
			
		||||
            REQUIRE( stdStr.size() == sr.size() );
 | 
			
		||||
        }
 | 
			
		||||
        SECTION( "explicitly constructed" ) {
 | 
			
		||||
            std::string stdStr( sr );
 | 
			
		||||
            REQUIRE( stdStr == "a stringref" );
 | 
			
		||||
@@ -154,7 +149,7 @@ TEST_CASE( "StringRef", "[Strings][StringRef]" ) {
 | 
			
		||||
        }
 | 
			
		||||
        SECTION( "assigned" ) {
 | 
			
		||||
            std::string stdStr;
 | 
			
		||||
            stdStr = sr;
 | 
			
		||||
            stdStr = static_cast<std::string>(sr);
 | 
			
		||||
            REQUIRE( stdStr == "a stringref" );
 | 
			
		||||
            REQUIRE( stdStr.size() == sr.size() );
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user