public void UpdateRelevantFileOneSubscriptionDifferentCaseRelPath() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); DirectoryTreeWatcherBase watcherBase = watcher; watcherBase.Subscribe(@"..\ROOT\file1.txt", f => updates.Add(f.FullName)); FakeDirectoryWatcher innerWatcher = watcher.Watchers.Should().ContainSingle().Which; innerWatcher.Update(@"X:\root\FILE1.txt"); updates.Should().ContainSingle().Which.Should().Be(@"X:\ROOT\file1.txt"); }
public void UpdateIrrelevantFileOneSubscription() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); DirectoryTreeWatcherBase watcherBase = watcher; watcherBase.Subscribe("file1.txt", f => updates.Add(f.FullName)); FakeDirectoryWatcher innerWatcher = watcher.Watchers.Should().ContainSingle().Which; innerWatcher.Update(@"X:\root\not-relevant.txt"); updates.Should().BeEmpty(); }
public void UpdateAfterDispose() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); using (DirectoryTreeWatcherBase watcherBase = watcher) { watcherBase.Subscribe("file1.txt", f => updates.Add(f.FullName)); } FakeDirectoryWatcher innerWatcher = watcher.Watchers.Should().ContainSingle().Which; innerWatcher.Update(@"X:\root\file1.txt"); updates.Should().BeEmpty(); }
public void UpdateTwoFilesTwoSubscriptionsDifferentDir() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); DirectoryTreeWatcherBase watcherBase = watcher; watcherBase.Subscribe(@"inner1\file1.txt", f => updates.Add(f.FullName)); watcherBase.Subscribe(@"inner2\file2.txt", f => updates.Add(f.FullName)); watcher.Watchers.Should().HaveCount(2); watcher.Watchers[1].Update(@"X:\root\inner2\file2.txt"); watcher.Watchers[0].Update(@"X:\root\inner1\file1.txt"); updates.Should().HaveCount(2).And.ContainInOrder( @"X:\root\inner2\file2.txt", @"X:\root\inner1\file1.txt"); }
public void UpdateTwoFilesTwoSubscriptionsSameDirDifferentCase() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); DirectoryTreeWatcherBase watcherBase = watcher; watcherBase.Subscribe(@"inner\file1.txt", f => updates.Add(f.FullName)); watcherBase.Subscribe(@"INNER\file2.txt", f => updates.Add(f.FullName)); FakeDirectoryWatcher innerWatcher = watcher.Watchers.Should().ContainSingle().Which; innerWatcher.Update(@"X:\root\inner\file2.txt"); innerWatcher.Update(@"X:\root\inner\file1.txt"); updates.Should().HaveCount(2).And.ContainInOrder( @"X:\root\inner\file2.txt", @"X:\root\inner\file1.txt"); }
public void AfterSubscriptionDisposeSubscribeAgainAndUpdate() { List <string> updates = new List <string>(); FakeDirectoryTreeWatcher watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root")); DirectoryTreeWatcherBase watcherBase = watcher; using (watcherBase.Subscribe("file1.txt", f => updates.Add(f.FullName))) { } watcherBase.Subscribe("file1.txt", f => updates.Add(f.FullName)); watcherBase.Subscribe("file2.txt", f => updates.Add(f.FullName)); FakeDirectoryWatcher innerWatcher = watcher.Watchers.Should().ContainSingle().Which; innerWatcher.Update(@"X:\root\file1.txt"); innerWatcher.Update(@"X:\root\file2.txt"); updates.Should().HaveCount(2).And.ContainInOrder( @"X:\root\file1.txt", @"X:\root\file2.txt"); }