| Index: base/strings/string_split_unittest.cc
|
| diff --git a/base/strings/string_split_unittest.cc b/base/strings/string_split_unittest.cc
|
| index 32bbe28b65f2f160c837d9d9b11e31e08b19c4c3..c745ab58f08e97d1d0cf72a9d1854ad39f220855 100644
|
| --- a/base/strings/string_split_unittest.cc
|
| +++ b/base/strings/string_split_unittest.cc
|
| @@ -169,7 +169,81 @@ TEST(SplitStringUsingSubstrTest, EmptyString) {
|
| EXPECT_THAT(results, ElementsAre(""));
|
| }
|
|
|
| -TEST(StringUtilTest, SplitString) {
|
| +TEST(StringUtilTest, SplitString_Basics) {
|
| + std::vector<std::string> r;
|
| +
|
| + r = SplitString(std::string(), ",:;", KEEP_WHITESPACE, SPLIT_WANT_ALL);
|
| + EXPECT_TRUE(r.empty());
|
| +
|
| + // Empty separator list
|
| + r = SplitString("hello, world", "", KEEP_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(1u, r.size());
|
| + EXPECT_EQ("hello, world", r[0]);
|
| +
|
| + // Should split on any of the separators.
|
| + r = SplitString("::,,;;", ",:;", KEEP_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(7u, r.size());
|
| + for (auto str : r)
|
| + ASSERT_TRUE(str.empty());
|
| +
|
| + r = SplitString("red, green; blue:", ",:;", TRIM_WHITESPACE,
|
| + SPLIT_WANT_NONEMPTY);
|
| + ASSERT_EQ(3u, r.size());
|
| + EXPECT_EQ("red", r[0]);
|
| + EXPECT_EQ("green", r[1]);
|
| + EXPECT_EQ("blue", r[2]);
|
| +
|
| + // Want to split a string along whitespace sequences.
|
| + r = SplitString(" red green \tblue\n", " \t\n", TRIM_WHITESPACE,
|
| + SPLIT_WANT_NONEMPTY);
|
| + ASSERT_EQ(3u, r.size());
|
| + EXPECT_EQ("red", r[0]);
|
| + EXPECT_EQ("green", r[1]);
|
| + EXPECT_EQ("blue", r[2]);
|
| +
|
| + // Weird case of splitting on spaces but not trimming.
|
| + r = SplitString(" red ", " ", TRIM_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(3u, r.size());
|
| + EXPECT_EQ("", r[0]); // Before the first space.
|
| + EXPECT_EQ("red", r[1]);
|
| + EXPECT_EQ("", r[2]); // After the last space.
|
| +}
|
| +
|
| +TEST(StringUtilTest, SplitString_WhitespaceAndResultType) {
|
| + std::vector<std::string> r;
|
| +
|
| + // Empty input handling.
|
| + r = SplitString(std::string(), ",", KEEP_WHITESPACE, SPLIT_WANT_ALL);
|
| + EXPECT_TRUE(r.empty());
|
| + r = SplitString(std::string(), ",", KEEP_WHITESPACE, SPLIT_WANT_NONEMPTY);
|
| + EXPECT_TRUE(r.empty());
|
| +
|
| + // Input string is space and we're trimming.
|
| + r = SplitString(" ", ",", TRIM_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(1u, r.size());
|
| + EXPECT_EQ("", r[0]);
|
| + r = SplitString(" ", ",", TRIM_WHITESPACE, SPLIT_WANT_NONEMPTY);
|
| + EXPECT_TRUE(r.empty());
|
| +
|
| + // Test all 4 combinations of flags on ", ,".
|
| + r = SplitString(", ,", ",", KEEP_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(3u, r.size());
|
| + EXPECT_EQ("", r[0]);
|
| + EXPECT_EQ(" ", r[1]);
|
| + EXPECT_EQ("", r[2]);
|
| + r = SplitString(", ,", ",", KEEP_WHITESPACE, SPLIT_WANT_NONEMPTY);
|
| + ASSERT_EQ(1u, r.size());
|
| + ASSERT_EQ(" ", r[0]);
|
| + r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_ALL);
|
| + ASSERT_EQ(3u, r.size());
|
| + EXPECT_EQ("", r[0]);
|
| + EXPECT_EQ("", r[1]);
|
| + EXPECT_EQ("", r[2]);
|
| + r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_NONEMPTY);
|
| + ASSERT_TRUE(r.empty());
|
| +}
|
| +
|
| +TEST(StringUtilTest, SplitString_Legacy) {
|
| std::vector<std::wstring> r;
|
|
|
| SplitString(std::wstring(), L',', &r);
|
| @@ -197,6 +271,13 @@ TEST(StringUtilTest, SplitString) {
|
| EXPECT_EQ(r[2], L"c");
|
| r.clear();
|
|
|
| + SplitString(L"a, ,c", L',', &r);
|
| + ASSERT_EQ(3U, r.size());
|
| + EXPECT_EQ(r[0], L"a");
|
| + EXPECT_EQ(r[1], L"");
|
| + EXPECT_EQ(r[2], L"c");
|
| + r.clear();
|
| +
|
| SplitString(L" ", L'*', &r);
|
| EXPECT_EQ(0U, r.size());
|
| r.clear();
|
|
|