public void HasChanged_ReturnsTrueIfFilesWereRemoved()
        {
            // Arrange
            var filePath1     = "1.txt";
            var filePath2     = "2.txt";
            var directoryInfo = new Mock <DirectoryInfoBase>();

            directoryInfo.Setup(d => d.EnumerateFileSystemInfos())
            .Returns(new[] { CreateFile(filePath1), CreateFile(filePath2) });
            var clock = new TestClock();
            var token = new TestablePollingWildCardChangeToken(directoryInfo.Object, "**/*.txt", clock);

            // Act - 1
            clock.Increment();
            var result1 = token.HasChanged;

            // Assert - 1
            Assert.False(result1);

            // Act - 2
            directoryInfo.Setup(d => d.EnumerateFileSystemInfos())
            .Returns(new[] { CreateFile(filePath1), });
            clock.Increment();
            var result2 = token.HasChanged;

            // Assert - 2
            Assert.True(result2);
        }
        public void HasChanged_ReturnsTrueIfFileWasModifiedButRetainedAnOlderTimestamp()
        {
            // Arrange
            var filePath1     = "1.txt";
            var filePath2     = "2.txt";
            var directoryInfo = new Mock <DirectoryInfoBase>();

            directoryInfo.Setup(d => d.EnumerateFileSystemInfos())
            .Returns(new[] { CreateFile(filePath1), CreateFile(filePath2) });
            var clock = new TestClock();
            var token = new TestablePollingWildCardChangeToken(directoryInfo.Object, "**/*.txt", clock);

            // Act - 1
            clock.Increment();
            var result1 = token.HasChanged;

            // Assert - 1
            Assert.False(result1);

            // Act - 2
            token.FileTimestampLookup[filePath2] = clock.UtcNow.AddMilliseconds(-100);
            clock.Increment();
            var result2 = token.HasChanged;

            // Assert - 2
            Assert.True(result2);
        }
        public void HasChanged_ReturnsFalseIfFilesDoNotChange()
        {
            // Arrange
            var filePath      = "1.txt";
            var fileInfo      = CreateFile(filePath);
            var directoryInfo = new Mock <DirectoryInfoBase>();

            directoryInfo.Setup(d => d.EnumerateFileSystemInfos())
            .Returns(new[] { fileInfo });
            var clock = new TestClock();
            var token = new TestablePollingWildCardChangeToken(directoryInfo.Object, "**/*.txt", clock);

            // Act
            clock.Increment();
            var result = token.HasChanged;

            // Assert
            Assert.False(result);
        }