OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_tokenizer.h" | 5 #include "base/strings/string_tokenizer.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 using std::string; | 9 using std::string; |
10 | 10 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 222 |
223 EXPECT_TRUE(t.GetNext()); | 223 EXPECT_TRUE(t.GetNext()); |
224 EXPECT_EQ(string("foo='a, b'"), t.token()); | 224 EXPECT_EQ(string("foo='a, b'"), t.token()); |
225 | 225 |
226 EXPECT_TRUE(t.GetNext()); | 226 EXPECT_TRUE(t.GetNext()); |
227 EXPECT_EQ(string("bar"), t.token()); | 227 EXPECT_EQ(string("bar"), t.token()); |
228 | 228 |
229 EXPECT_FALSE(t.GetNext()); | 229 EXPECT_FALSE(t.GetNext()); |
230 } | 230 } |
231 | 231 |
| 232 TEST(StringTokenizerTest, ParsePairQuotedString) { |
| 233 string input = "foo bar <hello world> baz"; |
| 234 StringTokenizer t(input, " "); |
| 235 t.set_paired_quote_chars("<", ">"); |
| 236 |
| 237 EXPECT_TRUE(t.GetNext()); |
| 238 EXPECT_EQ(string("foo"), t.token()); |
| 239 |
| 240 EXPECT_TRUE(t.GetNext()); |
| 241 EXPECT_EQ(string("bar"), t.token()); |
| 242 |
| 243 EXPECT_TRUE(t.GetNext()); |
| 244 EXPECT_EQ(string("<hello world>"), t.token()); |
| 245 |
| 246 EXPECT_TRUE(t.GetNext()); |
| 247 EXPECT_EQ(string("baz"), t.token()); |
| 248 |
| 249 EXPECT_FALSE(t.GetNext()); |
| 250 } |
| 251 |
| 252 TEST(StringTokenizerTest, ParsePairQuotedString_Malformed) { |
| 253 string input = "bar (hello wo"; |
| 254 StringTokenizer t(input, " "); |
| 255 t.set_paired_quote_chars("(", ")"); |
| 256 |
| 257 EXPECT_TRUE(t.GetNext()); |
| 258 EXPECT_EQ(string("bar"), t.token()); |
| 259 |
| 260 EXPECT_TRUE(t.GetNext()); |
| 261 EXPECT_EQ(string("(hello wo"), t.token()); |
| 262 |
| 263 EXPECT_FALSE(t.GetNext()); |
| 264 } |
| 265 |
| 266 TEST(StringTokenizerTest, ParsePairQuotedString_Multiple) { |
| 267 string input = "bar <hel\"lo\" wo> baz\""; |
| 268 StringTokenizer t(input, " "); |
| 269 t.set_paired_quote_chars("'\"<", "'\">"); |
| 270 |
| 271 EXPECT_TRUE(t.GetNext()); |
| 272 EXPECT_EQ(string("bar"), t.token()); |
| 273 |
| 274 EXPECT_TRUE(t.GetNext()); |
| 275 EXPECT_EQ(string("<hel\"lo\" wo>"), t.token()); |
| 276 |
| 277 EXPECT_TRUE(t.GetNext()); |
| 278 EXPECT_EQ(string("baz\""), t.token()); |
| 279 |
| 280 EXPECT_FALSE(t.GetNext()); |
| 281 } |
| 282 |
| 283 TEST(StringTokenizerTest, ParsePairQuotedString_EscapedQuotes) { |
| 284 string input = "foo <3\\<4>"; |
| 285 StringTokenizer t(input, " "); |
| 286 t.set_paired_quote_chars("<", ">"); |
| 287 |
| 288 EXPECT_TRUE(t.GetNext()); |
| 289 EXPECT_EQ(string("foo"), t.token()); |
| 290 |
| 291 EXPECT_TRUE(t.GetNext()); |
| 292 EXPECT_EQ(string("<3\\<4>"), t.token()); |
| 293 |
| 294 EXPECT_FALSE(t.GetNext()); |
| 295 } |
| 296 |
| 297 TEST(StringTokenizerTest, ParsePairQuotedString_EscapedQuotes2) { |
| 298 string input = "foo=<a, b>, bar"; |
| 299 StringTokenizer t(input, ", "); |
| 300 t.set_paired_quote_chars("<", ">"); |
| 301 |
| 302 EXPECT_TRUE(t.GetNext()); |
| 303 EXPECT_EQ(string("foo=<a, b>"), t.token()); |
| 304 |
| 305 EXPECT_TRUE(t.GetNext()); |
| 306 EXPECT_EQ(string("bar"), t.token()); |
| 307 |
| 308 EXPECT_FALSE(t.GetNext()); |
| 309 } |
| 310 |
232 } // namespace | 311 } // namespace |
233 | 312 |
234 } // namespace base | 313 } // namespace base |
OLD | NEW |