wrong result for empty string find/rfind
Closed this issue · 2 comments
reluctantbugreporter commented
{
using string = std::string;
using string_view = boost::string_ref;
string es1;
string es2;
string_view ev1{es1};
string_view ev2{es2};
{
const auto rs = es1.find(es2);
const auto rv = ev1.find(ev2);
assert(rs == rv);
}
{
const auto rs = es1.rfind(es2);
const auto rv = ev1.rfind(ev2);
assert(rs == rv);
}
}
reluctantbugreporter commented
Missing functions:
string s10{"0123456789"};
string_view v10{s10};
string s456789{"456789"};
string_view v456789{s456789};
{
const auto rs = s10.find_last_not_of(s456789, 2);
const auto rv = v10.find_last_not_of(v456789, 2);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.rfind("", 9);
const auto rv = string_view{"0123456789"}.rfind("", 9);
assert(rs == rv);
}
{
const auto rs = string{"01234567890123456789"}.rfind("", 19);
const auto rv = string_view{"01234567890123456789"}.rfind("", 19);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.rfind("89", 8);
const auto rv = string_view{"0123456789"}.rfind("89", 8);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.rfind("", 9);
const auto rv = string_view{"0123456789"}.rfind("", 9);
assert(rs == rv);
}
{
const auto rs = string{"01234567890123456789"}.rfind("", 19);
const auto rv = string_view{"01234567890123456789"}.rfind("", 19);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.rfind("89", 8);
const auto rv = string_view{"0123456789"}.rfind("89", 8);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.find_last_not_of("", 5);
const auto rv = string_view{"0123456789"}.find_last_not_of("", 5);
assert(rs == rv);
}
{
const auto rs = string{"0123456789"}.find_last_of("123456789", 1);
const auto rv = string_view{"0123456789"}.find_last_of("123456789", 1);
assert(rs == rv);
}