예제 #1
0
        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();
        }
예제 #2
0
        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"));
        }