Export of internal Abseil changes.
-- 714347c156cfe01575c1830a92bc6dea3030065b by Emma Christie <emmachristie@google.com>: Release absl::EqualsIgnoreCase PiperOrigin-RevId: 216243900 -- 688106e2b9d2924799d597682690851cfba87818 by Abseil Team <absl-team@google.com>: Import of CCTZ from GitHub. PiperOrigin-RevId: 216208373 -- 53638e4da238b230af0e56dc31b9fb790e708f36 by Emma Christie <emmachristie@google.com>: Update StartsWithIgnoreCase(), EndsWithIgnoreCase(), and EqualsIgnoreCase() headers to say that these functions only consider ASCII case inputs. PiperOrigin-RevId: 215930962 GitOrigin-RevId: 714347c156cfe01575c1830a92bc6dea3030065b Change-Id: I7fb3506234185b1a961e0110c1f8302ffe7228fa
This commit is contained in:
parent
e821380d69
commit
445998d7ac
7 changed files with 60 additions and 10 deletions
|
|
@ -27,6 +27,13 @@ bool CaseEqual(absl::string_view piece1, absl::string_view piece2) {
|
|||
}
|
||||
} // namespace
|
||||
|
||||
bool EqualsIgnoreCase(absl::string_view piece1, absl::string_view piece2) {
|
||||
return (piece1.size() == piece2.size() &&
|
||||
0 == absl::strings_internal::memcasecmp(piece1.data(), piece2.data(),
|
||||
piece1.size()));
|
||||
// memcasecmp uses absl::ascii_tolower().
|
||||
}
|
||||
|
||||
bool StartsWithIgnoreCase(absl::string_view text, absl::string_view prefix) {
|
||||
return (text.size() >= prefix.size()) &&
|
||||
CaseEqual(text.substr(0, prefix.size()), prefix);
|
||||
|
|
|
|||
|
|
@ -66,16 +66,22 @@ inline bool EndsWith(absl::string_view text, absl::string_view suffix) {
|
|||
);
|
||||
}
|
||||
|
||||
// EqualsIgnoreCase()
|
||||
//
|
||||
// Returns whether given ASCII strings `piece1` and `piece2` are equal, ignoring
|
||||
// case in the comparison.
|
||||
bool EqualsIgnoreCase(absl::string_view piece1, absl::string_view piece2);
|
||||
|
||||
// StartsWithIgnoreCase()
|
||||
//
|
||||
// Returns whether a given string `text` starts with `starts_with`, ignoring
|
||||
// case in the comparison.
|
||||
// Returns whether a given ASCII string `text` starts with `starts_with`,
|
||||
// ignoring case in the comparison.
|
||||
bool StartsWithIgnoreCase(absl::string_view text, absl::string_view prefix);
|
||||
|
||||
// EndsWithIgnoreCase()
|
||||
//
|
||||
// Returns whether a given string `text` ends with `ends_with`, ignoring case
|
||||
// in the comparison.
|
||||
// Returns whether a given ASCII string `text` ends with `ends_with`, ignoring
|
||||
// case in the comparison.
|
||||
bool EndsWithIgnoreCase(absl::string_view text, absl::string_view suffix);
|
||||
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -80,6 +80,17 @@ TEST(MatchTest, ContainsNull) {
|
|||
EXPECT_FALSE(absl::StrContains(cs, sv2));
|
||||
}
|
||||
|
||||
TEST(MatchTest, EqualsIgnoreCase) {
|
||||
std::string text = "the";
|
||||
absl::string_view data(text);
|
||||
|
||||
EXPECT_TRUE(absl::EqualsIgnoreCase(data, "The"));
|
||||
EXPECT_TRUE(absl::EqualsIgnoreCase(data, "THE"));
|
||||
EXPECT_TRUE(absl::EqualsIgnoreCase(data, "the"));
|
||||
EXPECT_FALSE(absl::EqualsIgnoreCase(data, "Quick"));
|
||||
EXPECT_FALSE(absl::EqualsIgnoreCase(data, "then"));
|
||||
}
|
||||
|
||||
TEST(MatchTest, StartsWithIgnoreCase) {
|
||||
EXPECT_TRUE(absl::StartsWithIgnoreCase("foo", "foo"));
|
||||
EXPECT_TRUE(absl::StartsWithIgnoreCase("foo", "Fo"));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue