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();
            }
Beispiel #2
0
            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);
            }
        }