public async Task DirectoryAdded_ThenRemoved(string[] addedDirectories, string[] deletedDirectories, string[] expectedAdded, string[] expectedRemoved) { await InjectDirectoriesIntoWatcher(_directoryWatcher, _fileSystem, deletedDirectories, _taskScheduler); using (_taskScheduler.Pause()) { foreach (var path in addedDirectories) { DirectoryInfoStubFactory.Create(_fileSystem, path); } RaiseCreated(_directoryWatcher, addedDirectories); foreach (var path in deletedDirectories) { DirectoryInfoStubFactory.Delete(_fileSystem, path); } RaiseDeleted(_directoryWatcher, deletedDirectories); _taskScheduler.ScheduledTasksCount.Should().Be(1); } await _taskScheduler; _changeset.Should().NotBeNull() .And.HaveAddedDirectories(expectedAdded) .And.HaveRemovedDirectories(expectedRemoved) .And.NoOtherChanges(); }
public async Task DirectoryAdded_ThenRemoved(string[] addedDirectories, string[] deletedDirectories, string[] expectedAdded, string[] expectedRemoved) { using (_taskScheduler.Pause()) { foreach (var path in addedDirectories) { DirectoryInfoStubFactory.Create(_fileSystem, path); } RaiseCreated(_directoryWatcher, addedDirectories); _taskScheduler.ScheduledTasksCount.Should().Be(1); } await Task.Delay(20); foreach (var path in deletedDirectories) { DirectoryInfoStubFactory.Delete(_fileSystem, path); } RaiseDeleted(_directoryWatcher, deletedDirectories); await _taskScheduler; _changeset.Should().NotBeNull(); _changeset.AddedDirectories.Should().Equal(expectedAdded); _changeset.RemovedDirectories.Should().Equal(expectedRemoved); }
private static async Task InjectDirectoriesIntoWatcher(IFileSystemWatcher fileWatcher, IFileSystem fileSystem, IEnumerable <string> fullPaths, ControlledTaskScheduler taskScheduler) { var directories = fullPaths.AsList(); foreach (var path in directories) { DirectoryInfoStubFactory.Create(fileSystem, path); } RaiseCreated(fileWatcher, directories); await taskScheduler; foreach (var path in directories) { DirectoryInfoStubFactory.Delete(fileSystem, path); } }