CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 10000000;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime + 20000000;
di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 0;
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_SIZE, 2, di));
-
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_SIZE, 2, di));
-
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 0;
di.diffFileInfo[2].size = 0;
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 10000000;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime + 20000000;
- di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
- di.diffFileInfo[1].size = 0;
- EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 2, di));
-
- di.diffFileInfo[0].size = 0;
- di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
- EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 2, di));
-
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 2;
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 2, di));
-
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 0;
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
-
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 0;
di.diffFileInfo[2].size = 1;
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
-
+
di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 1;
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
-
+
di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 2;
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 3, di));
}
+ TEST_F(TimeSizeCompareTest, SizeCompare_UniqueFile)
+ {
+ CompareEngines::TimeSizeCompare tsc;
+ DIFFITEM di;
+
+ di.diffFileInfo[0].mtime = Poco::Timestamp();
+ di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 10000000;
+ di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime + 20000000;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 2;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_SIZE, 3, di));
+ }
+
+ TEST_F(TimeSizeCompareTest, SizeCompare_TimeError)
+ {
+ CompareEngines::TimeSizeCompare tsc;
+ DIFFITEM di;
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 2, di));
+
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_SIZE, 3, di));
+ }
+
TEST_F(TimeSizeCompareTest, TimeCompare_SameTime)
{
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 2;
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime;
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
tsc.SetAdditionalOptions(true);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
tsc.SetAdditionalOptions(true);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime - (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
tsc.SetAdditionalOptions(false);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime;
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime + (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
tsc.SetAdditionalOptions(true);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime;
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
tsc.SetAdditionalOptions(true);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime - (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
tsc.SetAdditionalOptions(true);
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime - (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff - 1);
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
- di.diffFileInfo[0].size = 1;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 0;
di.diffFileInfo[1].size = 1;
- di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[2].size = 2;
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 1;
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff + 1);
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime - (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff + 1);
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 2, di));
-
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 1;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime;
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime;
di.diffFileInfo[2].mtime = di.diffFileInfo[0].mtime + 1;
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + 1;
di.diffFileInfo[2].mtime = di.diffFileInfo[1].mtime;
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE, 3, di));
-
+
di.diffFileInfo[0].mtime = Poco::Timestamp();
di.diffFileInfo[1].mtime = di.diffFileInfo[0].mtime + (Poco::Timestamp::resolution() * CompareEngines::TimeSizeCompare::SmallTimeDiff + 1);
di.diffFileInfo[2].mtime = di.diffFileInfo[1].mtime;
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE, 3, di));
}
+ TEST_F(TimeSizeCompareTest, TimeCompare_UniqueFile)
+ {
+ CompareEngines::TimeSizeCompare tsc;
+ DIFFITEM di;
+
+ di.diffFileInfo[0].size = 0;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 2;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 2, di));
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 2;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_DATE, 3, di));
+ }
+
TEST_F(TimeSizeCompareTest, TimeCompare_TimeError)
{
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].mtime = 0;
di.diffFileInfo[1].mtime = 0;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 2, di));
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].mtime = 1;
di.diffFileInfo[1].mtime = 0;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 2, di));
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].mtime = 0;
di.diffFileInfo[1].mtime = 1;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 2, di));
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
di.diffFileInfo[0].mtime = 0;
di.diffFileInfo[1].mtime = 0;
di.diffFileInfo[2].mtime = 0;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 3, di));
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
di.diffFileInfo[0].mtime = 0;
di.diffFileInfo[1].mtime = 1;
di.diffFileInfo[2].mtime = 1;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 3, di));
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
di.diffFileInfo[0].mtime = 1;
di.diffFileInfo[1].mtime = 0;
di.diffFileInfo[2].mtime = 1;
tsc.SetAdditionalOptions(true);
EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE, 3, di));
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
di.diffFileInfo[0].mtime = 1;
di.diffFileInfo[1].mtime = 1;
di.diffFileInfo[2].mtime = 0;
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[0].mtime = Poco::Timestamp();
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 1;
CompareEngines::TimeSizeCompare tsc;
DIFFITEM di;
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[0].mtime = Poco::Timestamp();
tsc.SetAdditionalOptions(false);
EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
di.diffFileInfo[0].size = 1;
di.diffFileInfo[1].size = 1;
di.diffFileInfo[2].size = 1;
EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
}
+ TEST_F(TimeSizeCompareTest, TimeSizeCompare_UniqueFile)
+ {
+ CompareEngines::TimeSizeCompare tsc;
+ DIFFITEM di;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideNone();
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::SAME, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 2;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 2;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(0);
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 0;
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF1STONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF2NDONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideNone();
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(false);
+ EXPECT_EQ(DIFFCODE::DIFF | DIFFCODE::DIFF3RDONLY, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+ }
+
+ TEST_F(TimeSizeCompareTest, TimeSizeCompare_TimeError)
+ {
+ CompareEngines::TimeSizeCompare tsc;
+ DIFFITEM di;
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 0;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffFileInfo[0].size = 0;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 2, di));
+
+ di.diffcode.setSideFlag(2);
+ di.diffcode.diffcode |= DIFFCODE::THREEWAY;
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 0;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[2].size = 1;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 0;
+ di.diffFileInfo[2].mtime = 1;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+
+ di.diffcode.setSideFlag(0);
+ di.diffcode.setSideFlag(1);
+ di.diffcode.setSideFlag(2);
+ di.diffFileInfo[0].size = 1;
+ di.diffFileInfo[1].size = 1;
+ di.diffFileInfo[2].size = DirItem::FILE_SIZE_NONE;
+ di.diffFileInfo[0].mtime = 1;
+ di.diffFileInfo[1].mtime = 1;
+ di.diffFileInfo[2].mtime = 0;
+ tsc.SetAdditionalOptions(true);
+ EXPECT_EQ(DIFFCODE::CMPERR, tsc.CompareFiles(CMP_DATE_SIZE, 3, di));
+ }
+
} // namespace