Use std::string_view

This commit is contained in:
Chris Thrasher
2025-09-21 18:05:21 -06:00
parent 44f9adebc1
commit 1307d51a35
119 changed files with 905 additions and 3425 deletions

View File

@@ -1023,11 +1023,11 @@ ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.000000999999
# Default scale is invisible to comparison
ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
ok {test-number} - enumInfo->lookup(0) == "Value1" for: "Value1" == "Value1"
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
ok {test-number} - enumInfo->lookup(1) == "Value2" for: "Value2" == "Value2"
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **} == "{** unexpected enum value **}"
ok {test-number} - enumInfo->lookup(3) == "{** unexpected enum value **}" for: "{** unexpected enum value **}" == "{** unexpected enum value **}"
# Empty generators can SKIP in constructor
ok {test-number} - # SKIP 'This generator is empty'
# Empty stream name opens cout stream
@@ -2714,112 +2714,6 @@ ok {test-number} - testStringForMatching(), StartsWith( "THIS", Catch::CaseSensi
ok {test-number} - testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
# String matchers
ok {test-number} - testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
# StringRef
ok {test-number} - empty.empty() for: true
# StringRef
ok {test-number} - empty.size() == 0 for: 0 == 0
# StringRef
ok {test-number} - std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.empty() == false for: false == false
# StringRef
ok {test-number} - s.size() == 5 for: 5 == 5
# StringRef
ok {test-number} - std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.data() == rawChars for: "hello" == "hello"
# StringRef
ok {test-number} - original == "original"
# StringRef
ok {test-number} - original.data()
# StringRef
ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
# StringRef
ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
# StringRef
ok {test-number} - ss.empty() == false for: false == false
# StringRef
ok {test-number} - ss.size() == 5 for: 5 == 5
# StringRef
ok {test-number} - std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
# StringRef
ok {test-number} - ss == "hello" for: hello == "hello"
# StringRef
ok {test-number} - ss.size() == 6 for: 6 == 6
# StringRef
ok {test-number} - std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.data() == s2.data() for: "hello world!" == "hello world!"
# StringRef
ok {test-number} - s.data() == ss.data() for: "hello world!" == "hello world!"
# StringRef
ok {test-number} - s.substr(s.size() + 1, 123).empty() for: true
# StringRef
ok {test-number} - std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
# StringRef
ok {test-number} - s.substr(1'000'000, 1).empty() for: true
# StringRef
ok {test-number} - reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
# StringRef
ok {test-number} - left == right for: Hello == Hello
# StringRef
ok {test-number} - left != left.substr(0, 3) for: Hello != Hel
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
# StringRef
ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
# StringRef
ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
# StringRef
ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
# StringRef
ok {test-number} - lhs == "some string += the stringref contents" for: "some string += the stringref contents" == "some string += the stringref contents"
# StringRef
ok {test-number} - together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
# StringRef at compilation time
ok {test-number} - with 1 message: 'empty.size() == 0'
# StringRef at compilation time
ok {test-number} - with 1 message: 'empty.begin() == empty.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.size() == 3'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.data() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.begin() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.begin() != stringref.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.substr(10, 0).empty()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref[1] == 'b''
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.size() == 2'
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.data() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.begin() != shortened.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: '!(sr1.empty())'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr1.size() == 3'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr2.empty()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr2.size() == 0'
# Stringifying char arrays with statically known sizes - char
ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - char
@@ -2867,7 +2761,7 @@ ok {test-number} - registry.add( "[@no square bracket at end", "", Catch::Source
# Tags with spaces and non-alphanumerical characters are accepted
ok {test-number} - testCase.tags.size() == 2 for: 2 == 2
# Tags with spaces and non-alphanumerical characters are accepted
ok {test-number} - testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
ok {test-number} - testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!" ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
# Template test case method with test types specified inside std::tuple - MyTypes - 0
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
# Template test case method with test types specified inside std::tuple - MyTypes - 1
@@ -3355,13 +3249,13 @@ ok {test-number} - trim(std::string(trailing_whitespace)) == no_whitespace for:
# Trim strings
ok {test-number} - trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
ok {test-number} - trim(std::string_view(no_whitespace)) == std::string_view(no_whitespace) for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
ok {test-number} - trim(std::string_view(leading_whitespace)) == std::string_view(no_whitespace) for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
ok {test-number} - trim(std::string_view(trailing_whitespace)) == std::string_view(no_whitespace) for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
ok {test-number} - trim(std::string_view(whitespace_at_both_ends)) == std::string_view(no_whitespace) for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
@@ -4205,19 +4099,19 @@ ok {test-number} - ptr.get() == 0 for: 0 == 0
# pair<pair<int,const char *,pair<std::string,int> > -> toString
ok {test-number} - ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }" == "{ { 42, "Arthur" }, { "Ford", 24 } }"
# parseEnums
ok {test-number} - parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
ok {test-number} - parseEnums( "" ), Equals( std::vector<std::string_view>{} ) for: { } Equals: { }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
ok {test-number} - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<std::string_view>{"Value1"} ) for: { "Value1" } Equals: { "Value1" }
# parseEnums
ok {test-number} - parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
ok {test-number} - parseEnums( "Value1" ), Equals( std::vector<std::string_view>{"Value1"} ) for: { "Value1" } Equals: { "Value1" }
# parseEnums
ok {test-number} - parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
ok {test-number} - parseEnums( "EnumName::Value1" ), Equals(std::vector<std::string_view>{"Value1"} ) for: { "Value1" } Equals: { "Value1" }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<std::string_view>{"Value1", "Value2"} ) for: { "Value1", "Value2" } Equals: { "Value1", "Value2" }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<std::string_view>{"Value1", "Value2", "Value3"} ) for: { "Value1", "Value2", "Value3" } Equals: { "Value1", "Value2", "Value3" }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
ok {test-number} - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<std::string_view>{"Value1", "Value2", "Value3"} ) for: { "Value1", "Value2", "Value3" } Equals: { "Value1", "Value2", "Value3" }
# pointer to class
ok {test-number} - p == 0 for: 0 == 0
# print unscoped info if passing unscoped info is printed
@@ -4351,15 +4245,15 @@ not ok {test-number} - false with 1 message: '3'
# sends information to INFO
not ok {test-number} - false with 2 messages: 'hi' and 'i := 7'
# shortened hide tags are split apart
ok {test-number} - testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
ok {test-number} - testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "." ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
# skipped tests can optionally provide a reason
ok {test-number} - # SKIP 'skipping because answer = 43'
# splitString
ok {test-number} - splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
ok {test-number} - splitStringRef("", ','), Equals(std::vector<std::string_view>()) for: { } Equals: { }
# splitString
ok {test-number} - splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
ok {test-number} - splitStringRef("abc", ','), Equals(std::vector<std::string_view>{"abc"}) for: { "abc" } Equals: { "abc" }
# splitString
ok {test-number} - splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
ok {test-number} - splitStringRef("abc,def", ','), Equals(std::vector<std::string_view>{"abc", "def"}) for: { "abc", "def" } Equals: { "abc", "def" }
# stacks unscoped info in loops
not ok {test-number} - false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
# stacks unscoped info in loops
@@ -4369,7 +4263,7 @@ ok {test-number} - !(startsWith("", 'c')) for: !false
# startsWith
ok {test-number} - startsWith(std::string("abc"), 'a') for: true
# startsWith
ok {test-number} - startsWith("def"_catch_sr, 'd') for: true
ok {test-number} - startsWith("def", 'd') for: true
# std::map is convertible string
ok {test-number} - Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
# std::map is convertible string
@@ -4437,7 +4331,7 @@ ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(
# tags with dots in later positions are not parsed as hidden
ok {test-number} - testcase.tags.size() == 1 for: 1 == 1
# tags with dots in later positions are not parsed as hidden
ok {test-number} - testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
ok {test-number} - testcase.tags[0].original == "magic.tag" for: "magic.tag" == "magic.tag"
# tests can be skipped dynamically at runtime
ok {test-number} - # SKIP
# thrown std::strings are translated
@@ -4616,5 +4510,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
ok {test-number} -
# xmlentitycheck
ok {test-number} -
1..2315
1..2262