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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 std::wstring path; | 302 std::wstring path; |
303 std::wstring wrapped_path; | 303 std::wstring wrapped_path; |
304 } PathAndWrappedPath; | 304 } PathAndWrappedPath; |
305 | 305 |
306 TEST_F(L10nUtilTest, WrapPathWithLTRFormatting) { | 306 TEST_F(L10nUtilTest, WrapPathWithLTRFormatting) { |
307 std::wstring kSeparator; | 307 std::wstring kSeparator; |
308 kSeparator.push_back(static_cast<wchar_t>(FilePath::kSeparators[0])); | 308 kSeparator.push_back(static_cast<wchar_t>(FilePath::kSeparators[0])); |
309 const PathAndWrappedPath test_data[] = { | 309 const PathAndWrappedPath test_data[] = { |
310 // Test common path, such as "c:\foo\bar". | 310 // Test common path, such as "c:\foo\bar". |
311 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar", | 311 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar", |
312 L"\x202a"L"c:" + kSeparator + L"\x200e"L"foo" + kSeparator + | 312 L"\x202a"L"c:" + kSeparator + L"foo" + kSeparator + |
313 L"\x200e"L"bar\x202c" | 313 L"bar\x202c" |
314 }, | 314 }, |
315 // Test path with file name, such as "c:\foo\bar\test.jpg". | 315 // Test path with file name, such as "c:\foo\bar\test.jpg". |
316 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar" + kSeparator + | 316 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar" + kSeparator + |
317 L"test.jpg", | 317 L"test.jpg", |
318 L"\x202a"L"c:" + kSeparator + L"\x200e"L"foo" + kSeparator + | 318 L"\x202a"L"c:" + kSeparator + L"foo" + kSeparator + |
319 L"\x200e"L"bar" + kSeparator + L"\x200e"L"test.jpg\x202c" | 319 L"bar" + kSeparator + L"test.jpg\x202c" |
320 }, | 320 }, |
321 // Test path ending with punctuation, such as "c:\(foo)\bar.". | 321 // Test path ending with punctuation, such as "c:\(foo)\bar.". |
322 { L"c:" + kSeparator + L"(foo)" + kSeparator + L"bar.", | 322 { L"c:" + kSeparator + L"(foo)" + kSeparator + L"bar.", |
323 L"\x202a"L"c:" + kSeparator + L"\x200e"L"(foo)" + kSeparator + | 323 L"\x202a"L"c:" + kSeparator + L"(foo)" + kSeparator + |
324 L"\x200e"L"bar.\x202c" | 324 L"bar.\x202c" |
325 }, | 325 }, |
326 // Test path ending with separator, such as "c:\foo\bar\". | 326 // Test path ending with separator, such as "c:\foo\bar\". |
327 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar" + kSeparator, | 327 { L"c:" + kSeparator + L"foo" + kSeparator + L"bar" + kSeparator, |
328 L"\x202a"L"c:" + kSeparator + L"\x200e"L"foo" + kSeparator + | 328 L"\x202a"L"c:" + kSeparator + L"foo" + kSeparator + |
329 L"\x200e"L"bar" + kSeparator + L"\x200e\x202c" | 329 L"bar" + kSeparator + L"\x202c", |
330 }, | 330 }, |
331 // Test path with RTL character. | 331 // Test path with RTL character. |
332 { L"c:" + kSeparator + L"\x05d0", | 332 { L"c:" + kSeparator + L"\x05d0", |
333 L"\x202a"L"c:" + kSeparator + L"\x200e\x05d0\x202c", | 333 L"\x202a"L"c:" + kSeparator + L"\x05d0\x202c", |
334 }, | 334 }, |
335 // Test path with 2 level RTL directory names. | 335 // Test path with 2 level RTL directory names. |
336 { L"c:" + kSeparator + L"\x05d0" + kSeparator + L"\x0622", | 336 { L"c:" + kSeparator + L"\x05d0" + kSeparator + L"\x0622", |
337 L"\x202a"L"c:" + kSeparator + L"\x200e\x05d0" + kSeparator + | 337 L"\x202a"L"c:" + kSeparator + L"\x05d0" + kSeparator + |
338 L"\x200e\x0622\x202c", | 338 L"\x0622\x202c", |
339 }, | 339 }, |
340 // Test path with mixed RTL/LTR directory names and ending with punctuation. | 340 // Test path with mixed RTL/LTR directory names and ending with punctuation. |
341 { L"c:" + kSeparator + L"\x05d0" + kSeparator + L"\x0622" + kSeparator + | 341 { L"c:" + kSeparator + L"\x05d0" + kSeparator + L"\x0622" + kSeparator + |
342 L"(foo)" + kSeparator + L"b.a.r.", | 342 L"(foo)" + kSeparator + L"b.a.r.", |
343 L"\x202a"L"c:" + kSeparator + L"\x200e\x05d0" + kSeparator + | 343 L"\x202a"L"c:" + kSeparator + L"\x05d0" + kSeparator + |
344 L"\x200e\x0622" + kSeparator + L"\x200e"L"(foo)" + kSeparator + | 344 L"\x0622" + kSeparator + L"(foo)" + kSeparator + |
345 L"\x200e"L"b.a.r.\x202c", | 345 L"b.a.r.\x202c", |
346 }, | 346 }, |
347 // Test path without driver name, such as "/foo/bar/test/jpg". | 347 // Test path without driver name, such as "/foo/bar/test/jpg". |
348 { kSeparator + L"foo" + kSeparator + L"bar" + kSeparator + L"test.jpg", | 348 { kSeparator + L"foo" + kSeparator + L"bar" + kSeparator + L"test.jpg", |
349 L"\x202a" + kSeparator + L"foo" + kSeparator + L"\x200e" + L"bar" + | 349 L"\x202a" + kSeparator + L"foo" + kSeparator + L"bar" + |
350 kSeparator + L"\x200e" + L"test.jpg" + L"\x202c" | 350 kSeparator + L"test.jpg" + L"\x202c" |
351 }, | 351 }, |
352 // Test path start with current directory, such as "./foo". | 352 // Test path start with current directory, such as "./foo". |
353 { L"." + kSeparator + L"foo", | 353 { L"." + kSeparator + L"foo", |
354 L"\x202a"L"." + kSeparator + L"\x200e" + L"foo" + L"\x202c" | 354 L"\x202a"L"." + kSeparator + L"foo" + L"\x202c" |
355 }, | 355 }, |
356 // Test path start with parent directory, such as "../foo/bar.jpg". | 356 // Test path start with parent directory, such as "../foo/bar.jpg". |
357 { L".." + kSeparator + L"foo" + kSeparator + L"bar.jpg", | 357 { L".." + kSeparator + L"foo" + kSeparator + L"bar.jpg", |
358 L"\x202a"L".." + kSeparator + L"\x200e" + L"foo" + kSeparator + | 358 L"\x202a"L".." + kSeparator + L"foo" + kSeparator + |
359 L"\x200e" + L"bar.jpg" + L"\x202c" | 359 L"bar.jpg" + L"\x202c" |
360 }, | 360 }, |
361 // Test absolute path, such as "//foo/bar.jpg". | 361 // Test absolute path, such as "//foo/bar.jpg". |
362 { kSeparator + kSeparator + L"foo" + kSeparator + L"bar.jpg", | 362 { kSeparator + kSeparator + L"foo" + kSeparator + L"bar.jpg", |
363 L"\x202a" + kSeparator + kSeparator + L"\x200e"L"foo" + kSeparator + | 363 L"\x202a" + kSeparator + kSeparator + L"foo" + kSeparator + |
364 L"\x200e"L"bar.jpg" + L"\x202c" | 364 L"bar.jpg" + L"\x202c" |
| 365 }, |
| 366 // Test path with mixed RTL/LTR directory names. |
| 367 { L"c:" + kSeparator + L"foo" + kSeparator + L"\x05d0" + kSeparator + |
| 368 L"\x0622" + kSeparator + L"\x05d1.jpg", |
| 369 L"\x202a"L"c:" + kSeparator + L"foo" + kSeparator + L"\x05d0" + |
| 370 kSeparator + L"\x0622" + kSeparator + L"\x05d1.jpg" + L"\x202c", |
365 }, | 371 }, |
366 // Test empty path. | 372 // Test empty path. |
367 { L"", | 373 { L"", |
368 L"\x202a\x202c" | 374 L"\x202a\x202c" |
369 } | 375 } |
370 }; | 376 }; |
371 for (unsigned int i = 0; i < arraysize(test_data); ++i) { | 377 for (unsigned int i = 0; i < arraysize(test_data); ++i) { |
372 string16 localized_file_path_string; | 378 string16 localized_file_path_string; |
373 FilePath path = FilePath::FromWStringHack(test_data[i].path); | 379 FilePath path = FilePath::FromWStringHack(test_data[i].path); |
374 l10n_util::WrapPathWithLTRFormatting(path, &localized_file_path_string); | 380 l10n_util::WrapPathWithLTRFormatting(path, &localized_file_path_string); |
375 std::wstring wrapped_path = UTF16ToWide(localized_file_path_string); | 381 std::wstring wrapped_path = UTF16ToWide(localized_file_path_string); |
376 EXPECT_EQ(wrapped_path, test_data[i].wrapped_path); | 382 EXPECT_EQ(wrapped_path, test_data[i].wrapped_path); |
377 } | 383 } |
378 } | 384 } |
OLD | NEW |