Index: src/libchcore/Tests/TestsTDestinationPathProvider.cpp =================================================================== diff -u -N -rc0120993b38b7f0759e0887fd0e5a03dcced68de -ref2ea2589f6eeed54f8001fee72936198172ceed --- src/libchcore/Tests/TestsTDestinationPathProvider.cpp (.../TestsTDestinationPathProvider.cpp) (revision c0120993b38b7f0759e0887fd0e5a03dcced68de) +++ src/libchcore/Tests/TestsTDestinationPathProvider.cpp (.../TestsTDestinationPathProvider.cpp) (revision ef2ea2589f6eeed54f8001fee72936198172ceed) @@ -60,8 +60,59 @@ } }; +// base src path, full src path, is file, destination path, ignore folders, force directories, expected resulting path INSTANTIATE_TEST_CASE_P(BasicTransformTests, TransformTest, ::testing::Values( - std::make_tuple(TString(L"c:"), TString(L"c:"), true, TString(L"x:\\"), false, false, TString(L"x:\\c")) + ///////////////////////////////////////// + // full drive copy, std options, root + std::make_tuple(TString(L"c:"), TString(L"c:"), false, TString(L"x:\\"), false, false, TString(L"x:\\c")), // 0 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\"), false, TString(L"x:\\"), false, false, TString(L"x:\\c")), // 1 + // full drive copy, ignore folders, root + std::make_tuple(TString(L"c:"), TString(L"c:"), false, TString(L"x:\\"), true, false, TString(L"x:\\c")), // 2 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\"), false, TString(L"x:\\"), true, false, TString(L"x:\\c")), // 3 + // full drive copy, force directories, root + std::make_tuple(TString(L"c:"), TString(L"c:"), false, TString(L"x:\\"), false, true, TString(L"x:\\c")), // 4 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\"), false, TString(L"x:\\"), false, true, TString(L"x:\\c")), // 5 + + ///////////////////////////////////////// + // full drive copy, std options, non-root + std::make_tuple(TString(L"c:"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), false, false, TString(L"x:\\c\\folder\\file.txt")), // 6 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), false, false, TString(L"x:\\c\\folder\\file.txt")), // 7 + // full drive copy, ignore folders, non-root + std::make_tuple(TString(L"c:"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), true, false, TString(L"x:\\file.txt")), // 8 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), true, false, TString(L"x:\\file.txt")), // 9 + // full drive copy, force directories, non-root + std::make_tuple(TString(L"c:"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder\\file.txt")), // 10 + std::make_tuple(TString(L"c:\\"), TString(L"c:\\folder\\file.txt"), true, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder\\file.txt")), // 11 + + ///////////////////////////////////////// + // folder copy, std options, folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder"), false, TString(L"x:\\"), false, false, TString(L"x:\\folder")), // 12 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\"), false, TString(L"x:\\"), false, false, TString(L"x:\\folder")), // 13 + // folder copy, ignore folders, folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder"), false, TString(L"x:\\"), true, false, TString(L"x:\\folder")), // 14 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\"), false, TString(L"x:\\"), true, false, TString(L"x:\\folder")), // 15 + // folder copy, force directories, folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder"), false, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder")), // 16 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\"), false, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder")), // 17 + + ///////////////////////////////////////// + // folder copy, std options, non folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), false, false, TString(L"x:\\folder\\folder2\\file.txt")), // 18 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), false, false, TString(L"x:\\folder\\folder2\\file.txt")), // 19 + // folder copy, ignore folders, non folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), true, false, TString(L"x:\\file.txt")), // 20 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), true, false, TString(L"x:\\file.txt")), // 21 + // folder copy, force directories, non folder root + std::make_tuple(TString(L"c:\\folder"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder\\folder2\\file.txt")), // 22 + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder\\folder2\\file.txt"), true, TString(L"x:\\"), false, true, TString(L"x:\\c\\folder\\folder2\\file.txt")), // 23 + + ///////////////////////////////////////// + // special cases + // base path slightly differs from normal path (by a separator which should be ignored) + std::make_tuple(TString(L"c:\\folder\\"), TString(L"c:\\folder"), false, TString(L"x:\\"), false, false, TString(L"x:\\folder")), // 24 + + // case insensitivity + std::make_tuple(TString(L"c:\\Folder"), TString(L"c:\\folder"), false, TString(L"x:\\"), false, false, TString(L"x:\\Folder")) // 25 )); TEST_P(TransformTest, PathTest) @@ -79,9 +130,9 @@ bool bForceDirectories = std::get<5>(rTestData); // setup - std::shared_ptr > spFilesystemMock(new StrictMock); + std::shared_ptr > spFilesystemMock(new NiceMock); EXPECT_CALL(*spFilesystemMock, PathExist(_)) - .Times(0); + .WillRepeatedly(Return(false)); // test execution TSmartPath pathResult = TransformPath(spFilesystemMock, @@ -93,5 +144,5 @@ bForceDirectories); // verification - EXPECT_STREQ(L"x:\\c", pathResult.ToString()); + ASSERT_STREQ(strExpectedResultPath.c_str(), pathResult.ToString()); }