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 |