Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: base/file_path_unittest.cc

Issue 343003: Get rid of FilePath::AppendAndResolveRelative().... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698