private void SerializeChanges() { //Serialize changes even if the cache is not up to date to preserve as actual version as possible. _fileSystemChanges.LastFullScanTime = _cacheUpToDate ? DateTime.Now : _lastFullScanTime; _cacheSerializer.SerializeCacheChanges(_fileSystemChanges); _fileSystemChanges = new FileSystemChanges(); }
public void DeserializeCache_WithExistingCacheAndChanges_CacheIsCorrect() { //Arrange List <FileSystemItem> cacheItems = new List <FileSystemItem> { new FileSystemItem("name1", "folder1"), new FileSystemItem("name1", "folder2"), new FileSystemItem("C:\\") }; FileSystemCache cache = new FileSystemCache(cacheItems, DateTime.Now.AddDays(-2)); _serializer.SerializeCache(cache); List <FileSystemChangeEventArgs> changeItems = new List <FileSystemChangeEventArgs> { new FileSystemChangeEventArgs("folder1", null), new FileSystemChangeEventArgs(null, "folder3"), new FileSystemChangeEventArgs("folder2", "folder4") }; DateTime dateTime = DateTime.Now; FileSystemChanges changes = new FileSystemChanges { Changes = changeItems, LastFullScanTime = dateTime }; _serializer.SerializeCacheChanges(changes); //Act FileSystemCache actualCache = _serializer.DeserializeCache(); //Assert //Serialization does not preserve milliseconds, so we use epsilon check. Assert.That(dateTime - actualCache.LastFullScanTime, Is.LessThan(new TimeSpan(0, 0, 1))); Assert.That(actualCache.Items.Count, Is.EqualTo(3)); Assert.That(actualCache.Items[0].FullPath, Is.EqualTo(Path.GetFullPath("C:\\"))); Assert.That(actualCache.Items[0].Name, Is.EqualTo("")); Assert.That(actualCache.Items[1].FullPath, Is.EqualTo(Path.GetFullPath("folder3"))); Assert.That(actualCache.Items[1].Name, Is.EqualTo("folder3")); Assert.That(actualCache.Items[2].FullPath, Is.EqualTo(Path.GetFullPath("folder4"))); Assert.That(actualCache.Items[2].Name, Is.EqualTo("folder4")); }