| 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();
 | 
| 
 |