| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/strings/string_split.h" | 5 #include "base/strings/string_split.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 ',', // Key-value pair delimiter | 143 ',', // Key-value pair delimiter |
| 144 &kv_pairs)); | 144 &kv_pairs)); |
| 145 ASSERT_EQ(2U, kv_pairs.size()); | 145 ASSERT_EQ(2U, kv_pairs.size()); |
| 146 EXPECT_EQ("key1", kv_pairs[0].first); | 146 EXPECT_EQ("key1", kv_pairs[0].first); |
| 147 EXPECT_EQ("va:ue1", kv_pairs[0].second); | 147 EXPECT_EQ("va:ue1", kv_pairs[0].second); |
| 148 EXPECT_EQ("key2", kv_pairs[1].first); | 148 EXPECT_EQ("key2", kv_pairs[1].first); |
| 149 EXPECT_EQ("value2", kv_pairs[1].second); | 149 EXPECT_EQ("value2", kv_pairs[1].second); |
| 150 } | 150 } |
| 151 | 151 |
| 152 TEST(SplitStringUsingSubstrTest, EmptyString) { | 152 TEST(SplitStringUsingSubstrTest, EmptyString) { |
| 153 std::vector<std::string> results; | 153 std::vector<std::string> results = SplitStringUsingSubstr( |
| 154 SplitStringUsingSubstr(std::string(), "DELIMITER", &results); | 154 std::string(), "DELIMITER", TRIM_WHITESPACE, SPLIT_WANT_ALL); |
| 155 ASSERT_EQ(1u, results.size()); | 155 ASSERT_EQ(1u, results.size()); |
| 156 EXPECT_THAT(results, ElementsAre("")); | 156 EXPECT_THAT(results, ElementsAre("")); |
| 157 } | 157 } |
| 158 | 158 |
| 159 TEST(StringUtilTest, SplitString_Basics) { | 159 TEST(StringUtilTest, SplitString_Basics) { |
| 160 std::vector<std::string> r; | 160 std::vector<std::string> r; |
| 161 | 161 |
| 162 r = SplitString(std::string(), ",:;", KEEP_WHITESPACE, SPLIT_WANT_ALL); | 162 r = SplitString(std::string(), ",:;", KEEP_WHITESPACE, SPLIT_WANT_ALL); |
| 163 EXPECT_TRUE(r.empty()); | 163 EXPECT_TRUE(r.empty()); |
| 164 | 164 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_ALL); | 224 r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_ALL); |
| 225 ASSERT_EQ(3u, r.size()); | 225 ASSERT_EQ(3u, r.size()); |
| 226 EXPECT_EQ("", r[0]); | 226 EXPECT_EQ("", r[0]); |
| 227 EXPECT_EQ("", r[1]); | 227 EXPECT_EQ("", r[1]); |
| 228 EXPECT_EQ("", r[2]); | 228 EXPECT_EQ("", r[2]); |
| 229 r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_NONEMPTY); | 229 r = SplitString(", ,", ",", TRIM_WHITESPACE, SPLIT_WANT_NONEMPTY); |
| 230 ASSERT_TRUE(r.empty()); | 230 ASSERT_TRUE(r.empty()); |
| 231 } | 231 } |
| 232 | 232 |
| 233 TEST(SplitStringUsingSubstrTest, StringWithNoDelimiter) { | 233 TEST(SplitStringUsingSubstrTest, StringWithNoDelimiter) { |
| 234 std::vector<std::string> results; | 234 std::vector<std::string> results = SplitStringUsingSubstr( |
| 235 SplitStringUsingSubstr("alongwordwithnodelimiter", "DELIMITER", &results); | 235 "alongwordwithnodelimiter", "DELIMITER", TRIM_WHITESPACE, |
| 236 SPLIT_WANT_ALL); |
| 236 ASSERT_EQ(1u, results.size()); | 237 ASSERT_EQ(1u, results.size()); |
| 237 EXPECT_THAT(results, ElementsAre("alongwordwithnodelimiter")); | 238 EXPECT_THAT(results, ElementsAre("alongwordwithnodelimiter")); |
| 238 } | 239 } |
| 239 | 240 |
| 240 TEST(SplitStringUsingSubstrTest, LeadingDelimitersSkipped) { | 241 TEST(SplitStringUsingSubstrTest, LeadingDelimitersSkipped) { |
| 241 std::vector<std::string> results; | 242 std::vector<std::string> results = SplitStringUsingSubstr( |
| 242 SplitStringUsingSubstr( | |
| 243 "DELIMITERDELIMITERDELIMITERoneDELIMITERtwoDELIMITERthree", | 243 "DELIMITERDELIMITERDELIMITERoneDELIMITERtwoDELIMITERthree", |
| 244 "DELIMITER", | 244 "DELIMITER", TRIM_WHITESPACE, SPLIT_WANT_ALL); |
| 245 &results); | |
| 246 ASSERT_EQ(6u, results.size()); | 245 ASSERT_EQ(6u, results.size()); |
| 247 EXPECT_THAT(results, ElementsAre("", "", "", "one", "two", "three")); | 246 EXPECT_THAT(results, ElementsAre("", "", "", "one", "two", "three")); |
| 248 } | 247 } |
| 249 | 248 |
| 250 TEST(SplitStringUsingSubstrTest, ConsecutiveDelimitersSkipped) { | 249 TEST(SplitStringUsingSubstrTest, ConsecutiveDelimitersSkipped) { |
| 251 std::vector<std::string> results; | 250 std::vector<std::string> results = SplitStringUsingSubstr( |
| 252 SplitStringUsingSubstr( | |
| 253 "unoDELIMITERDELIMITERDELIMITERdosDELIMITERtresDELIMITERDELIMITERcuatro", | 251 "unoDELIMITERDELIMITERDELIMITERdosDELIMITERtresDELIMITERDELIMITERcuatro", |
| 254 "DELIMITER", | 252 "DELIMITER", TRIM_WHITESPACE, SPLIT_WANT_ALL); |
| 255 &results); | |
| 256 ASSERT_EQ(7u, results.size()); | 253 ASSERT_EQ(7u, results.size()); |
| 257 EXPECT_THAT(results, ElementsAre("uno", "", "", "dos", "tres", "", "cuatro")); | 254 EXPECT_THAT(results, ElementsAre("uno", "", "", "dos", "tres", "", "cuatro")); |
| 258 } | 255 } |
| 259 | 256 |
| 260 TEST(SplitStringUsingSubstrTest, TrailingDelimitersSkipped) { | 257 TEST(SplitStringUsingSubstrTest, TrailingDelimitersSkipped) { |
| 261 std::vector<std::string> results; | 258 std::vector<std::string> results = SplitStringUsingSubstr( |
| 262 SplitStringUsingSubstr( | |
| 263 "unDELIMITERdeuxDELIMITERtroisDELIMITERquatreDELIMITERDELIMITERDELIMITER", | 259 "unDELIMITERdeuxDELIMITERtroisDELIMITERquatreDELIMITERDELIMITERDELIMITER", |
| 264 "DELIMITER", | 260 "DELIMITER", TRIM_WHITESPACE, SPLIT_WANT_ALL); |
| 265 &results); | |
| 266 ASSERT_EQ(7u, results.size()); | 261 ASSERT_EQ(7u, results.size()); |
| 267 EXPECT_THAT( | 262 EXPECT_THAT( |
| 268 results, ElementsAre("un", "deux", "trois", "quatre", "", "", "")); | 263 results, ElementsAre("un", "deux", "trois", "quatre", "", "", "")); |
| 269 } | 264 } |
| 270 | 265 |
| 271 TEST(SplitStringPieceUsingSubstrTest, StringWithNoDelimiter) { | 266 TEST(SplitStringPieceUsingSubstrTest, StringWithNoDelimiter) { |
| 272 std::vector<base::StringPiece> results = | 267 std::vector<base::StringPiece> results = |
| 273 SplitStringPieceUsingSubstr("alongwordwithnodelimiter", "DELIMITER", | 268 SplitStringPieceUsingSubstr("alongwordwithnodelimiter", "DELIMITER", |
| 274 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 269 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 275 ASSERT_EQ(1u, results.size()); | 270 ASSERT_EQ(1u, results.size()); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 base::SPLIT_WANT_NONEMPTY); | 377 base::SPLIT_WANT_NONEMPTY); |
| 383 ASSERT_EQ(data[i].expected_result_count, results.size()); | 378 ASSERT_EQ(data[i].expected_result_count, results.size()); |
| 384 if (data[i].expected_result_count > 0) | 379 if (data[i].expected_result_count > 0) |
| 385 ASSERT_EQ(data[i].output1, results[0]); | 380 ASSERT_EQ(data[i].output1, results[0]); |
| 386 if (data[i].expected_result_count > 1) | 381 if (data[i].expected_result_count > 1) |
| 387 ASSERT_EQ(data[i].output2, results[1]); | 382 ASSERT_EQ(data[i].output2, results[1]); |
| 388 } | 383 } |
| 389 } | 384 } |
| 390 | 385 |
| 391 } // namespace base | 386 } // namespace base |
| OLD | NEW |