You've already forked openscreen

Removes two more absl utility functions. Bug: 158433927 Change-Id: I9c2ba086c289efc0beafe5deeefc56c9494a3be3 Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/5836032 Commit-Queue: Jordan Bayles <jophba@chromium.org> Reviewed-by: Jordan Bayles <jophba@chromium.org>
132 lines
4.2 KiB
C++
132 lines
4.2 KiB
C++
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "util/string_util.h"
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace openscreen::string_util {
|
|
|
|
// Reference: https://ascii-code.com
|
|
TEST(StringUtilTest, AsciiTest) {
|
|
constexpr char kAlpha[] = "aAzZ";
|
|
constexpr char kDigits[] = "09";
|
|
constexpr char kPrintable[] = "*&$^ ";
|
|
constexpr char kNonPrintable[] = "\000\010\015\177\202";
|
|
|
|
for (size_t i = 0; i < sizeof(kAlpha) - 1; i++) {
|
|
EXPECT_TRUE(ascii_isalpha(kAlpha[i])) << i;
|
|
EXPECT_FALSE(ascii_isdigit(kAlpha[i])) << i;
|
|
EXPECT_TRUE(ascii_isprint(kAlpha[i])) << i;
|
|
}
|
|
|
|
for (size_t i = 0; i < sizeof(kDigits) - 1; i++) {
|
|
EXPECT_FALSE(ascii_isalpha(kDigits[i])) << i;
|
|
EXPECT_TRUE(ascii_isdigit(kDigits[i])) << i;
|
|
EXPECT_TRUE(ascii_isprint(kDigits[i])) << i;
|
|
}
|
|
|
|
for (size_t i = 0; i < sizeof(kPrintable) - 1; i++) {
|
|
EXPECT_FALSE(ascii_isalpha(kPrintable[i])) << i;
|
|
EXPECT_FALSE(ascii_isdigit(kPrintable[i])) << i;
|
|
EXPECT_TRUE(ascii_isprint(kPrintable[i])) << i;
|
|
}
|
|
|
|
for (size_t i = 0; i < sizeof(kNonPrintable) - 1; i++) {
|
|
EXPECT_FALSE(ascii_isalpha(kNonPrintable[i])) << i;
|
|
EXPECT_FALSE(ascii_isdigit(kNonPrintable[i])) << i;
|
|
EXPECT_FALSE(ascii_isprint(kNonPrintable[i])) << i;
|
|
}
|
|
|
|
EXPECT_EQ(ascii_tolower('A'), 'a');
|
|
EXPECT_EQ(ascii_tolower('a'), 'a');
|
|
EXPECT_EQ(ascii_tolower('0'), '0');
|
|
EXPECT_EQ(ascii_toupper('A'), 'A');
|
|
EXPECT_EQ(ascii_toupper('a'), 'A');
|
|
EXPECT_EQ(ascii_toupper('0'), '0');
|
|
}
|
|
|
|
TEST(StringUtilTest, StartsAndEndsWith) {
|
|
constexpr char kString[] = "United Federation of Planets";
|
|
EXPECT_TRUE(starts_with("", ""));
|
|
EXPECT_TRUE(starts_with(kString, ""));
|
|
EXPECT_TRUE(starts_with(kString, "United"));
|
|
EXPECT_FALSE(starts_with(kString, "Klingons"));
|
|
|
|
EXPECT_TRUE(ends_with("", ""));
|
|
EXPECT_TRUE(ends_with(kString, ""));
|
|
EXPECT_TRUE(ends_with(kString, "Planets"));
|
|
EXPECT_FALSE(ends_with(kString, "Borg"));
|
|
}
|
|
|
|
TEST(StringUtilTest, EqualsIgnoreCase) {
|
|
constexpr char kString[] = "Vulcans!";
|
|
EXPECT_TRUE(EqualsIgnoreCase("", ""));
|
|
EXPECT_FALSE(EqualsIgnoreCase("", kString));
|
|
EXPECT_FALSE(EqualsIgnoreCase("planet vulcan", kString));
|
|
EXPECT_TRUE(EqualsIgnoreCase("Vulcans!", kString));
|
|
EXPECT_TRUE(EqualsIgnoreCase("vUlCaNs!", kString));
|
|
EXPECT_FALSE(EqualsIgnoreCase("vUlKaNs!", kString));
|
|
}
|
|
|
|
TEST(StringUtilTest, AsciiStrToUpperLower) {
|
|
constexpr char kString[] = "Vulcans!";
|
|
EXPECT_EQ("", AsciiStrToUpper(""));
|
|
EXPECT_EQ("", AsciiStrToLower(""));
|
|
|
|
EXPECT_EQ("VULCANS!", AsciiStrToUpper("Vulcans!"));
|
|
std::string s1(kString);
|
|
AsciiStrToUpper(s1);
|
|
EXPECT_EQ("VULCANS!", s1);
|
|
|
|
EXPECT_EQ("vulcans!", AsciiStrToLower("Vulcans!"));
|
|
std::string s2(kString);
|
|
AsciiStrToLower(s2);
|
|
EXPECT_EQ("vulcans!", s2);
|
|
}
|
|
|
|
TEST(StringUtilTest, StrCat) {
|
|
EXPECT_EQ(std::string(), StrCat({}));
|
|
EXPECT_EQ(std::string(), StrCat({"", ""}));
|
|
EXPECT_EQ(std::string("abcdef"), StrCat({"abc", std::string("def")}));
|
|
}
|
|
|
|
TEST(StringUtilTest, Split) {
|
|
std::vector<std::string_view> result;
|
|
std::vector<std::string_view> empty;
|
|
auto single = std::vector<std::string_view>({"donut"});
|
|
auto expected = std::vector<std::string_view>({"a", "b", "ccc"});
|
|
|
|
result = Split("", ';');
|
|
EXPECT_EQ(result, empty);
|
|
result = Split(";;;;;", ';');
|
|
EXPECT_EQ(result, empty);
|
|
result = Split("donut", ';');
|
|
EXPECT_EQ(result, single);
|
|
result = Split(";;;donut", ';');
|
|
EXPECT_EQ(result, single);
|
|
result = Split("donut;;;", ';');
|
|
EXPECT_EQ(result, single);
|
|
result = Split("a;;b;;;ccc", ';');
|
|
EXPECT_EQ(result, expected);
|
|
result = Split(";;;a;;b;;;ccc", ';');
|
|
EXPECT_EQ(result, expected);
|
|
result = Split(";;;a;;b;;;ccc;;;;", ';');
|
|
EXPECT_EQ(result, expected);
|
|
}
|
|
|
|
TEST(StringUtilTest, Join) {
|
|
std::vector<std::string_view> empty;
|
|
auto single = std::vector<std::string_view>({"donut"});
|
|
auto input = std::vector<std::string_view>({"a", "b", "ccc"});
|
|
|
|
EXPECT_EQ("", Join(empty.begin(), empty.end(), ","));
|
|
EXPECT_EQ("donut", Join(single.begin(), single.end(), ","));
|
|
EXPECT_EQ("abccc", Join(input.begin(), input.end(), ""));
|
|
EXPECT_EQ("a,b,ccc", Join(input.begin(), input.end(), ","));
|
|
EXPECT_EQ("a<->b<->ccc", Join(input.begin(), input.end(), "<->"));
|
|
}
|
|
|
|
} // namespace openscreen::string_util
|