public void NextCheckIsWithinCheckInterval() { var errorsAndInfos = new ErrorsAndInfos(); var testRootFolder = TempFolder(true).SubFolder("NextCheckIsWithinCheckInterval"); Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsToString()); CopyTemplateTestFileSystemTo(testRootFolder); const long ticks = 1000000000000; var folders = CreateTestFoldersOnTwoMachines(testRootFolder, new DateTime(ticks)); var work = new DualityWork { ForMachine = folders[0].MachineId }; work.UpdateFolders(folders); var folder = work.DualityFolders[2]; Assert.IsTrue(folder.NeedsProcessing()); Assert.AreEqual("", folder.Process()); Assert.IsFalse(folder.NeedsProcessing()); var minimum = DateTime.Now.AddTicks(ticks / 2); var maximum = DateTime.Now.AddTicks(ticks); Assert.IsTrue(folder.NextCheckAt >= minimum); Assert.IsTrue(folder.NextCheckAt <= maximum); }
public void CanCreateWorkForMachine1() { var folders = CreateTestFoldersOnTwoMachines(TempFolder(true), new DateTime(0)); var work = new DualityWork { ForMachine = folders[0].MachineId }; work.UpdateFolders(folders); Assert.AreEqual(6, work.DualityFolders.Count); }
public void CanDoBasicProcessing() { var errorsAndInfos = new ErrorsAndInfos(); var testRootFolder = TempFolder(true).SubFolder("CanDoBasicProcessing"); Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsToString()); CopyTemplateTestFileSystemTo(testRootFolder); var folders = CreateTestFoldersOnTwoMachines(testRootFolder, new DateTime(0)); var work = new DualityWork { ForMachine = folders[0].MachineId }; work.UpdateFolders(folders); var folder = work.DualityFolders[5]; Assert.AreEqual("", folder.Process()); Assert.IsTrue(folder.NeedsProcessing()); var theFileName = testRootFolder.FullName + @"\Machine1\Folder2\H\A_File.txt"; File.WriteAllText(theFileName, @"This is some text."); var timeStamp = new DateTime(2013, 11, 2, 12, 24, 6); File.SetLastWriteTime(theFileName, timeStamp); var expectedMessage = "There is " + theFileName + ",\r\nbut that file does not exist in " + testRootFolder.FullName + @"\Machine1\OtherFolder2\H\"; Assert.AreEqual(expectedMessage, folder.Process()); Assert.IsTrue(folder.NeedsProcessing()); var theOtherFileName = testRootFolder.FullName + @"\Machine1\OtherFolder2\H\A_File.txt"; File.WriteAllText(theOtherFileName, @"This is some text."); File.SetLastWriteTime(theOtherFileName, new DateTime(2013, 11, 6, 22, 6, 24)); Assert.AreEqual("", folder.Process()); Assert.IsTrue(folder.NeedsProcessing()); Assert.AreEqual(timeStamp, File.GetLastWriteTime(theOtherFileName)); File.WriteAllText(theOtherFileName, @"This is some text.."); expectedMessage = "The contents (or last-write-time) of " + theFileName + "\r\ndiffers from the contents (lwt) of " + theOtherFileName; Assert.AreEqual(expectedMessage, folder.Process()); Assert.IsTrue(folder.NeedsProcessing()); File.WriteAllText(theOtherFileName, @"This is some text."); var theRenamedOtherFileName = theOtherFileName.Replace(".txt", ".log"); File.WriteAllText(theRenamedOtherFileName, @"This is some text."); expectedMessage = "There is " + theRenamedOtherFileName + ",\r\nbut that file does not exist in " + testRootFolder.FullName + @"\Machine1\Folder2\H\"; Assert.AreEqual(expectedMessage, folder.Process()); Assert.IsTrue(folder.NeedsProcessing()); File.Delete(theFileName); Assert.IsFalse(File.Exists(theFileName)); File.Delete(theOtherFileName); Assert.IsFalse(File.Exists(theOtherFileName)); File.Delete(theRenamedOtherFileName); Assert.IsFalse(File.Exists(theRenamedOtherFileName)); }
public void CanUpdateWorkForMachine1() { var folders = CreateTestFoldersOnTwoMachines(TempFolder(true), new DateTime(0)); var work = new DualityWork { ForMachine = folders[0].MachineId }; work.UpdateFolders(folders); Assert.AreEqual(6, work.DualityFolders.Count); var timeStamp = new DateTime(2013, 11, 3, 14, 20, 0); work.DualityFolders.ForEach(x => x.LastCheckedAt = timeStamp); work.UpdateFolders(folders); Assert.IsTrue(work.DualityFolders.All(x => x.LastCheckedAt == timeStamp)); }
public void CanSaveAndLoadWorkForMachine1() { var folders = CreateTestFoldersOnTwoMachines(TempFolder(true), new DateTime(0)); var work = new DualityWork { ForMachine = folders[0].MachineId }; work.UpdateFolders(folders); var timeStamp = DateTime.Now; work.DualityFolders[0].LastCheckedAt = timeStamp; var fileName = TempFolder(false).FullName + @"\CanSaveAndLoadWorkForMachine1.xml"; File.Delete(fileName); Assert.IsFalse(File.Exists(fileName)); work.Save(fileName); var work2 = new DualityWork(fileName, folders[0].MachineId); Assert.AreEqual((object)work.DualityFolders.Count, work2.DualityFolders.Count); Assert.AreEqual(timeStamp, work.DualityFolders[0].LastCheckedAt); File.Delete(fileName); Assert.IsFalse(File.Exists(fileName)); }