Пример #1
0
        public void CreateAndDispose()
        {
            DirectoryTreeWatcherBase watcher = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));

            Action act = () => watcher.Dispose();

            act.Should().NotThrow();
        }
Пример #2
0
        public void SubscribeNullCallback()
        {
            DirectoryTreeWatcherBase watcherBase = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));
            Action <FileInfo>        onUpdate    = null;

            Action act = () => watcherBase.Subscribe("file1.txt", onUpdate);

            act.Should().Throw <ArgumentNullException>().Which.ParamName.Should().Be("onUpdate");
        }
Пример #3
0
        public void SubscribeFileRootedPath()
        {
            DirectoryTreeWatcherBase watcherBase = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));
            Action <FileInfo>        onUpdate    = f => { };

            Action act = () => watcherBase.Subscribe(@"D:\path.txt", onUpdate);

            ArgumentException ae = act.Should().Throw <ArgumentException>().Which;

            ae.Message.Should().Contain(@"The file 'D:\path.txt' is not within directory 'X:\root\'");
            ae.ParamName.Should().Be("file");
        }
Пример #4
0
        public void SubscribeEmptyFileName()
        {
            DirectoryTreeWatcherBase watcherBase = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));
            Action <FileInfo>        onUpdate    = f => { };

            Action act = () => watcherBase.Subscribe(string.Empty, onUpdate);

            ArgumentException ae = act.Should().Throw <ArgumentException>().Which;

            ae.Message.Should().Contain("File name cannot be empty");
            ae.ParamName.Should().Be("file");
        }
Пример #5
0
        public void SubscribeBadFileName()
        {
            DirectoryTreeWatcherBase watcherBase = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));
            Action <FileInfo>        onUpdate    = f => { };

            Action act = () => watcherBase.Subscribe("**BADNAME??", onUpdate);

            ArgumentException ae = act.Should().Throw <ArgumentException>().Which;

            ae.Message.Should().Contain("Invalid file name '**BADNAME??'");
            ae.ParamName.Should().Be("file");
        }
Пример #6
0
        public void SubscribeSameFileTwiceDifferentCase()
        {
            DirectoryTreeWatcherBase watcherBase = new FakeDirectoryTreeWatcher(new DirectoryInfo(@"X:\root"));
            Action <FileInfo>        onUpdate    = f => { };

            watcherBase.Subscribe("file1.txt", onUpdate);

            Action act = () => watcherBase.Subscribe("FILE1.txt", onUpdate);

            act.Should().Throw <InvalidOperationException>()
            .WithMessage(@"A subscription for 'X:\root\FILE1.txt' already exists.");
        }
Пример #7
0
        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");
        }
Пример #8
0
        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();
        }
Пример #9
0
        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();
        }
Пример #10
0
        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");
        }
Пример #11
0
        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");
        }
Пример #12
0
        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");
        }