| OLD | NEW |
| 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/file_path.h" | 6 #include "base/file_path.h" |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "testing/platform_test.h" | 10 #include "testing/platform_test.h" |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 FilePath::StringType observed; | 490 FilePath::StringType observed; |
| 491 for (size_t j = 0; j < comps.size(); ++j) { | 491 for (size_t j = 0; j < comps.size(); ++j) { |
| 492 observed.append(FILE_PATH_LITERAL("|"), 1); | 492 observed.append(FILE_PATH_LITERAL("|"), 1); |
| 493 observed.append(comps[j]); | 493 observed.append(comps[j]); |
| 494 } | 494 } |
| 495 EXPECT_EQ(FilePath::StringType(cases[i].expected), observed) << | 495 EXPECT_EQ(FilePath::StringType(cases[i].expected), observed) << |
| 496 "i: " << i << ", input: " << input.value(); | 496 "i: " << i << ", input: " << input.value(); |
| 497 } | 497 } |
| 498 } | 498 } |
| 499 | 499 |
| 500 TEST_F(FilePathTest, AppendAndResolveRelativeTest) { | |
| 501 const struct BinaryTestData cases[] = { | |
| 502 #if defined(FILE_PATH_USES_DRIVE_LETTERS) | |
| 503 { { FPL("c:/"), FPL("foo") }, FPL("c:/foo") }, | |
| 504 { { FPL("f:/foo/bar"), FPL("..") }, FPL("f:/foo") }, | |
| 505 { { FPL("f:/foo.bar"), FPL("..") }, FPL("f:/") }, | |
| 506 { { FPL("F:/foo/.."), FPL("./bar/.") }, FPL("F:/bar") }, | |
| 507 { { FPL("E:/Foo/bar"), FPL("../..") }, FPL("E:/") }, | |
| 508 { { FPL("E:/Foo/bar/."), FPL("../..") }, FPL("E:/") }, | |
| 509 { { FPL("e:/foo/.."), FPL("bar/..") }, FPL("e:/") }, | |
| 510 { { FPL("c:/foo/./bar/.."), FPL("../baz") }, FPL("c:/baz") }, | |
| 511 { { FPL("E:/./foo/bar/.."), FPL("../baz/..") }, FPL("E:/") }, | |
| 512 { { FPL("x:/foo/../bar/.."), FPL("baz/../boo") }, FPL("x:/boo") }, | |
| 513 { { FPL("E:/foo.bar/.."), FPL("../baz/..") }, FPL("") }, | |
| 514 { { FPL("Z:/foo"), FPL("../..") }, FPL("") }, | |
| 515 { { FPL("y:/"), FPL("..") }, FPL("") }, | |
| 516 { { FPL("B:/.."), FPL("bar/.") }, FPL("") }, | |
| 517 { { FPL("a:/foo/.."), FPL("..") }, FPL("") }, | |
| 518 { { FPL("r:/.."), FPL("..") }, FPL("") }, | |
| 519 { { FPL("F:/foo/.."), FPL("../..") }, FPL("") }, | |
| 520 { { FPL("O:/foo/bar/.."), FPL("../..") }, FPL("") }, | |
| 521 #endif // FILE_PATH_USES_DRIVE_LETTERS | |
| 522 #if defined(FILE_PATH_USES_WIN_SEPARATORS) | |
| 523 { { FPL("\\\\"), FPL("foo") }, FPL("\\\\foo") }, | |
| 524 { { FPL("\\\\foo"), FPL("bar") }, FPL("\\\\foo\\bar") }, | |
| 525 { { FPL("\\\\foo\\bar"), FPL("..") }, FPL("\\\\foo") }, | |
| 526 { { FPL("\\\\foo.bar"), FPL("..") }, FPL("\\\\") }, | |
| 527 { { FPL("\\\\Foo\\bar"), FPL("..\\..") }, FPL("\\\\") }, | |
| 528 { { FPL("\\\\Foo\\bar\\."), FPL("..\\..") }, FPL("\\\\") }, | |
| 529 { { FPL("\\\\foo\\bar"), FPL("foo\\..\\baz") }, FPL("\\\\foo\\bar\\baz") }, | |
| 530 { { FPL("\\\\foo\\.\\bar"), FPL("..\\baz\\.") }, FPL("\\\\foo\\baz") }, | |
| 531 { { FPL("\\\\.\\foo\\.."), FPL("bar") }, FPL("\\\\bar") }, | |
| 532 { { FPL("\\\\foo\\.."), FPL(".\\bar\\..") }, FPL("\\\\") }, | |
| 533 { { FPL("\\\\foo\\bar\\.."), FPL("..\\baz") }, FPL("\\\\baz") }, | |
| 534 { { FPL("\\\\foo\\bar\\.."), FPL("..\\baz\\..") }, FPL("\\\\") }, | |
| 535 { { FPL("\\\\foo\\..\\bar\\.."), FPL("baz\\..\\boo") }, FPL("\\\\boo"), }, | |
| 536 { { FPL("\\\\foo.bar\\.."), FPL("..\\baz\\..") }, FPL("") }, | |
| 537 { { FPL("\\\\foo"), FPL("..\\..") }, FPL("") }, | |
| 538 { { FPL("\\\\"), FPL("..") }, FPL("") }, | |
| 539 { { FPL("\\\\.."), FPL("bar\\.") }, FPL("") }, | |
| 540 { { FPL("\\\\foo\\.."), FPL("..") }, FPL("") }, | |
| 541 { { FPL("\\\\.."), FPL("..") }, FPL("") }, | |
| 542 { { FPL("\\\\foo\\.."), FPL("..\\..") }, FPL("") }, | |
| 543 { { FPL("\\\\foo\\bar\\.."), FPL("..\\..") }, FPL("") }, | |
| 544 #if defined(FILE_PATH_USES_DRIVE_LETTERS) | |
| 545 { { FPL("E:/foo"), FPL("bar") }, FPL("E:/foo\\bar") }, | |
| 546 { { FPL("C:/foo/bar"), FPL("foo/../baz") }, FPL("C:/foo\\bar\\baz") }, | |
| 547 { { FPL("e:/foo/bar"), FPL("../baz") }, FPL("e:/foo\\baz") }, | |
| 548 #endif | |
| 549 #else // FILE_PATH_USES_WIN_SEPARAORS | |
| 550 { { FPL("/"), FPL("foo") }, FPL("/foo") }, | |
| 551 { { FPL("/foo"), FPL("bar") }, FPL("/foo/bar") }, | |
| 552 { { FPL("/foo/bar/"), FPL("..") }, FPL("/foo") }, | |
| 553 { { FPL("/foo.bar"), FPL("..") }, FPL("/") }, | |
| 554 { { FPL("//foo"), FPL("..") }, FPL("//") }, | |
| 555 { { FPL("/foo/./bar"), FPL("../..") }, FPL("/") }, | |
| 556 { { FPL("/foo/bar/."), FPL("foo/../baz") }, FPL("/foo/bar/baz") }, | |
| 557 { { FPL("/./foo/bar"), FPL("../baz/.") }, FPL("/foo/baz") }, | |
| 558 { { FPL("/foo/.."), FPL("./bar") }, FPL("/bar") }, | |
| 559 { { FPL("/foo/.."), FPL("bar/..") }, FPL("/") }, | |
| 560 { { FPL("//foo/bar/.."), FPL("../baz") }, FPL("//baz") }, | |
| 561 { { FPL("/foo/bar/.."), FPL("../baz/..") }, FPL("/") }, | |
| 562 { { FPL("/foo/../bar/.."), FPL("baz/../boo") }, FPL("/boo") }, | |
| 563 { { FPL("//foo.bar/.."), FPL("../baz") }, FPL("") }, | |
| 564 { { FPL("/foo"), FPL("../..") }, FPL("") }, | |
| 565 { { FPL("//"), FPL("..") }, FPL("") }, | |
| 566 { { FPL("/.."), FPL("./bar") }, FPL("") }, | |
| 567 { { FPL("/foo/.."), FPL("..") }, FPL("") }, | |
| 568 { { FPL("/.."), FPL("..") }, FPL("") }, | |
| 569 { { FPL("/foo/.."), FPL("../..") }, FPL("") }, | |
| 570 { { FPL("/foo/bar/.."), FPL("../..") }, FPL("") }, | |
| 571 #if defined(FILE_PATH_USES_DRIVE_LETTERS) | |
| 572 { { FPL("E:/foo"), FPL("bar") }, FPL("E:/foo/bar") }, | |
| 573 { { FPL("C:/foo/bar"), FPL("foo/../baz") }, FPL("C:/foo/bar/baz") }, | |
| 574 { { FPL("e:/foo/bar"), FPL("../baz") }, FPL("e:/foo/baz") }, | |
| 575 #endif | |
| 576 #endif // FILE_PATH_USES_WIN_SEPARAORS | |
| 577 }; | |
| 578 | |
| 579 for (size_t i = 0; i < arraysize(cases); ++i) { | |
| 580 FilePath parent(cases[i].inputs[0]); | |
| 581 FilePath child(cases[i].inputs[1]); | |
| 582 | |
| 583 FilePath result; | |
| 584 EXPECT_EQ(cases[i].expected[0] != '\0', | |
| 585 parent.AppendAndResolveRelative(child, &result)) << | |
| 586 "i: " << i << ", parent: " << parent.value() << ", child: " << | |
| 587 child.value(); | |
| 588 EXPECT_STREQ(cases[i].expected, result.value().c_str()); | |
| 589 } | |
| 590 } | |
| 591 | |
| 592 TEST_F(FilePathTest, IsParentTest) { | 500 TEST_F(FilePathTest, IsParentTest) { |
| 593 const struct BinaryBooleanTestData cases[] = { | 501 const struct BinaryBooleanTestData cases[] = { |
| 594 { { FPL("/"), FPL("/foo/bar/baz") }, true}, | 502 { { FPL("/"), FPL("/foo/bar/baz") }, true}, |
| 595 { { FPL("/foo/bar"), FPL("/foo/bar/baz") }, true}, | 503 { { FPL("/foo/bar"), FPL("/foo/bar/baz") }, true}, |
| 596 { { FPL("/foo/bar/"), FPL("/foo/bar/baz") }, true}, | 504 { { FPL("/foo/bar/"), FPL("/foo/bar/baz") }, true}, |
| 597 { { FPL("//foo/bar/"), FPL("//foo/bar/baz") }, true}, | 505 { { FPL("//foo/bar/"), FPL("//foo/bar/baz") }, true}, |
| 598 { { FPL("/foo/bar"), FPL("/foo2/bar/baz") }, false}, | 506 { { FPL("/foo/bar"), FPL("/foo2/bar/baz") }, false}, |
| 599 { { FPL("/foo/bar.txt"), FPL("/foo/bar/baz") }, false}, | 507 { { FPL("/foo/bar.txt"), FPL("/foo/bar/baz") }, false}, |
| 600 { { FPL("/foo/bar"), FPL("/foo/bar2/baz") }, false}, | 508 { { FPL("/foo/bar"), FPL("/foo/bar2/baz") }, false}, |
| 601 { { FPL("/foo/bar"), FPL("/foo/bar") }, false}, | 509 { { FPL("/foo/bar"), FPL("/foo/bar") }, false}, |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 { FPL("a/b/c"), false }, | 901 { FPL("a/b/c"), false }, |
| 994 }; | 902 }; |
| 995 | 903 |
| 996 for (size_t i = 0; i < arraysize(cases); ++i) { | 904 for (size_t i = 0; i < arraysize(cases); ++i) { |
| 997 FilePath input(cases[i].input); | 905 FilePath input(cases[i].input); |
| 998 bool observed = input.ReferencesParent(); | 906 bool observed = input.ReferencesParent(); |
| 999 EXPECT_EQ(cases[i].expected, observed) << | 907 EXPECT_EQ(cases[i].expected, observed) << |
| 1000 "i: " << i << ", input: " << input.value(); | 908 "i: " << i << ", input: " << input.value(); |
| 1001 } | 909 } |
| 1002 } | 910 } |
| OLD | NEW |