Exemple #1
0
        public void SynchronizingObject_CalledOnEvent(WatcherChangeTypes expectedChangeType)
        {
            FileSystemEventHandler dele    = (sender, e) => { Assert.Equal(expectedChangeType, e.ChangeType); };
            TestISynchronizeInvoke invoker = new TestISynchronizeInvoke()
            {
                ExpectedDelegate = dele
            };

            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var watcher = new TestFileSystemWatcher(testDirectory.Path, "*"))
                {
                    watcher.SynchronizingObject = invoker;
                    if (expectedChangeType == WatcherChangeTypes.Created)
                    {
                        watcher.Created += dele;
                        watcher.CallOnCreated(new FileSystemEventArgs(WatcherChangeTypes.Created, "test", "name"));
                    }
                    else if (expectedChangeType == WatcherChangeTypes.Deleted)
                    {
                        watcher.Deleted += dele;
                        watcher.CallOnDeleted(new FileSystemEventArgs(WatcherChangeTypes.Deleted, "test", "name"));
                    }
                    else if (expectedChangeType == WatcherChangeTypes.Changed)
                    {
                        watcher.Changed += dele;
                        watcher.CallOnChanged(new FileSystemEventArgs(WatcherChangeTypes.Changed, "test", "name"));
                    }
                    Assert.True(invoker.BeginInvoke_Called);
                }
        }
 public void SynchronizingObject_GetSetRoundtrips()
 {
     TestISynchronizeInvoke invoker = new TestISynchronizeInvoke() { };
     using (var testDirectory = new TempDirectory(GetTestFilePath()))
     using (var watcher = new TestFileSystemWatcher(testDirectory.Path, "*"))
     {
         Assert.Null(watcher.SynchronizingObject);
         watcher.SynchronizingObject = invoker;
         Assert.Equal(invoker, watcher.SynchronizingObject);
         watcher.SynchronizingObject = null;
         Assert.Null(watcher.SynchronizingObject);
     }
 }
        public void FileSystemWatcher_File_Changed_SynchronizingObject()
        {
            string file = CreateTestFile(TestDirectory, "file");

            using (var watcher = new FileSystemWatcher(TestDirectory, Path.GetFileName(file)))
            {
                TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                watcher.SynchronizingObject = invoker;

                Action action = () => Directory.SetLastWriteTime(file, DateTime.Now + TimeSpan.FromSeconds(10));

                ExpectEvent(watcher, WatcherChangeTypes.Changed, action, expectedPath: file);
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
Exemple #4
0
        public void SynchronizingObject_GetSetRoundtrips()
        {
            TestISynchronizeInvoke invoker = new TestISynchronizeInvoke()
            {
            };

            using (var watcher = new TestFileSystemWatcher(TestDirectory, "*"))
            {
                Assert.Null(watcher.SynchronizingObject);
                watcher.SynchronizingObject = invoker;
                Assert.Equal(invoker, watcher.SynchronizingObject);
                watcher.SynchronizingObject = null;
                Assert.Null(watcher.SynchronizingObject);
            }
        }
Exemple #5
0
        public void FileSystemWatcher_File_Changed_SynchronizingObject()
        {
            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var file = new TempFile(Path.Combine(testDirectory.Path, "file")))
                    using (var watcher = new FileSystemWatcher(testDirectory.Path, Path.GetFileName(file.Path)))
                    {
                        TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                        watcher.SynchronizingObject = invoker;

                        Action action = () => Directory.SetLastWriteTime(file.Path, DateTime.Now + TimeSpan.FromSeconds(10));

                        ExpectEvent(watcher, WatcherChangeTypes.Changed, action, expectedPath: file.Path);
                        Assert.True(invoker.BeginInvoke_Called);
                    }
        }
Exemple #6
0
        public void SynchronizingObject_CalledOnRenamed()
        {
            RenamedEventHandler    dele    = (sender, e) => { Assert.Equal(WatcherChangeTypes.Renamed, e.ChangeType); };
            TestISynchronizeInvoke invoker = new TestISynchronizeInvoke()
            {
                ExpectedDelegate = dele
            };

            using (var watcher = new TestFileSystemWatcher(TestDirectory, "*"))
            {
                watcher.SynchronizingObject = invoker;
                watcher.Renamed            += dele;
                watcher.CallOnRenamed(new RenamedEventArgs(WatcherChangeTypes.Renamed, "test", "name", "oldname"));
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
Exemple #7
0
        public void SynchronizingObject_CalledOnError()
        {
            ErrorEventHandler      dele    = (sender, e) => { Assert.IsType <FileNotFoundException>(e.GetException()); };
            TestISynchronizeInvoke invoker = new TestISynchronizeInvoke()
            {
                ExpectedDelegate = dele
            };

            using (var watcher = new TestFileSystemWatcher(TestDirectory, "*"))
            {
                watcher.SynchronizingObject = invoker;
                watcher.Error += dele;
                watcher.CallOnError(new ErrorEventArgs(new FileNotFoundException()));
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
        public void FileSystemWatcher_Directory_Create_SynchronizingObject()
        {
            using (var watcher = new FileSystemWatcher(TestDirectory))
            {
                TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                watcher.SynchronizingObject = invoker;

                string dirName = Path.Combine(TestDirectory, "dir");
                watcher.Filter = Path.GetFileName(dirName);

                Action action  = () => Directory.CreateDirectory(dirName);
                Action cleanup = () => Directory.Delete(dirName);

                ExpectEvent(watcher, WatcherChangeTypes.Created, action, cleanup, dirName);
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
        public void FileSystemWatcher_File_Create_SynchronizingObject()
        {
            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var watcher = new FileSystemWatcher(testDirectory.Path))
                {
                    TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                    watcher.SynchronizingObject = invoker;

                    string fileName = Path.Combine(testDirectory.Path, "file");
                    watcher.Filter = Path.GetFileName(fileName);

                    Action action  = () => File.Create(fileName).Dispose();
                    Action cleanup = () => File.Delete(fileName);

                    ExpectEvent(watcher, WatcherChangeTypes.Created, action, cleanup, fileName);
                    Assert.True(invoker.BeginInvoke_Called);
                }
        }
        public void File_Move_SynchronizingObject()
        {
            string dir      = CreateTestDirectory(TestDirectory, "dir");
            string testFile = CreateTestFile(dir, "file");

            using (var watcher = new FileSystemWatcher(dir, "*"))
            {
                TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                watcher.SynchronizingObject = invoker;
                string sourcePath = testFile;
                string targetPath = testFile + "_Renamed";
                // Move the testFile to a different name in the same directory
                Action action  = () => File.Move(sourcePath, targetPath);
                Action cleanup = () => File.Move(targetPath, sourcePath);

                ExpectEvent(watcher, WatcherChangeTypes.Renamed, action, cleanup, targetPath);
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
        public void FileSystemWatcher_InternalBufferSize_SynchronizingObject()
        {
            ManualResetEvent unblockHandler = new ManualResetEvent(false);
            string           file           = CreateTestFile(TestDirectory, "file");

            using (FileSystemWatcher watcher = CreateWatcher(TestDirectory, file, unblockHandler))
            {
                TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                watcher.SynchronizingObject = invoker;

                int internalBufferOperationCapacity = CalculateInternalBufferOperationCapacity(watcher.InternalBufferSize, file);

                Action action  = GetAction(unblockHandler, internalBufferOperationCapacity, file);
                Action cleanup = GetCleanup(unblockHandler);

                ExpectError(watcher, action, cleanup);
                Assert.True(invoker.BeginInvoke_Called);
            }
        }
        public void Directory_Move_SynchronizingObject()
        {
            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var dir = new TempDirectory(Path.Combine(testDirectory.Path, "dir")))
                    using (var watcher = new FileSystemWatcher(testDirectory.Path))
                    {
                        TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                        watcher.SynchronizingObject = invoker;

                        string sourcePath = dir.Path;
                        string targetPath = Path.Combine(testDirectory.Path, "target");

                        Action action  = () => Directory.Move(sourcePath, targetPath);
                        Action cleanup = () => Directory.Move(targetPath, sourcePath);

                        ExpectEvent(watcher, WatcherChangeTypes.Renamed, action, cleanup, targetPath);
                        Assert.True(invoker.BeginInvoke_Called);
                    }
        }
Exemple #13
0
        public void FileSystemWatcher_InternalBufferSize_SynchronizingObject()
        {
            ManualResetEvent unblockHandler = new ManualResetEvent(false);

            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var file = new TempFile(Path.Combine(testDirectory.Path, "file")))
                    using (FileSystemWatcher watcher = CreateWatcher(testDirectory.Path, file.Path, unblockHandler))
                    {
                        TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                        watcher.SynchronizingObject = invoker;

                        int internalBufferOperationCapacity = CalculateInternalBufferOperationCapacity(watcher.InternalBufferSize, file.Path);

                        Action action  = GetAction(unblockHandler, internalBufferOperationCapacity, file.Path);
                        Action cleanup = GetCleanup(unblockHandler);

                        ExpectError(watcher, action, cleanup);
                        Assert.True(invoker.BeginInvoke_Called);
                    }
        }
        public void FileSystemWatcher_File_Create_SynchronizingObject()
        {
            FileSystemWatcherTest.Execute(() =>
            {
                using (var watcher = new FileSystemWatcher(TestDirectory))
                {
                    TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                    watcher.SynchronizingObject    = invoker;

                    string fileName = Path.Combine(TestDirectory, "file");
                    watcher.Filter  = Path.GetFileName(fileName);

                    Action action  = () => File.Create(fileName).Dispose();
                    Action cleanup = () => File.Delete(fileName);

                    ExpectEvent(watcher, WatcherChangeTypes.Created, action, cleanup, fileName);
                    Assert.True(invoker.BeginInvoke_Called);
                }
            }, maxAttempts: DefaultAttemptsForExpectedEvent, backoffFunc: (iteration) => RetryDelayMilliseconds, retryWhen: e => e is XunitException);
        }
        public void File_Move_SynchronizingObject()
        {
            using (var testDirectory = new TempDirectory(GetTestFilePath()))
                using (var dir = new TempDirectory(Path.Combine(testDirectory.Path, "dir")))
                    using (var testFile = new TempFile(Path.Combine(dir.Path, "file")))
                        using (var watcher = new FileSystemWatcher(dir.Path, "*"))
                        {
                            TestISynchronizeInvoke invoker = new TestISynchronizeInvoke();
                            watcher.SynchronizingObject = invoker;

                            string sourcePath = testFile.Path;
                            string targetPath = testFile.Path + "_Renamed";

                            // Move the testFile to a different name in the same directory
                            Action action  = () => File.Move(sourcePath, targetPath);
                            Action cleanup = () => File.Move(targetPath, sourcePath);

                            ExpectEvent(watcher, WatcherChangeTypes.Renamed, action, cleanup, targetPath);
                            Assert.True(invoker.BeginInvoke_Called);
                        }
        }
 public void SynchronizingObject_CalledOnError()
 {
     ErrorEventHandler dele = (sender, e) => { Assert.IsType<FileNotFoundException>(e.GetException()); };
     TestISynchronizeInvoke invoker = new TestISynchronizeInvoke() { ExpectedDelegate = dele };
     using (var testDirectory = new TempDirectory(GetTestFilePath()))
     using (var watcher = new TestFileSystemWatcher(testDirectory.Path, "*"))
     {
         watcher.SynchronizingObject = invoker;
         watcher.Error += dele;
         watcher.CallOnError(new ErrorEventArgs(new FileNotFoundException()));
         Assert.True(invoker.BeginInvoke_Called);
     }
 }
 public void SynchronizingObject_CalledOnRenamed()
 {
     RenamedEventHandler dele = (sender, e) => { Assert.Equal(WatcherChangeTypes.Renamed, e.ChangeType); };
     TestISynchronizeInvoke invoker = new TestISynchronizeInvoke() { ExpectedDelegate = dele };
     using (var testDirectory = new TempDirectory(GetTestFilePath()))
     using (var watcher = new TestFileSystemWatcher(testDirectory.Path, "*"))
     {
         watcher.SynchronizingObject = invoker;
         watcher.Renamed += dele;
         watcher.CallOnRenamed(new RenamedEventArgs(WatcherChangeTypes.Changed, "test", "name", "oldname"));
         Assert.True(invoker.BeginInvoke_Called);
     }
 }
 public void SynchronizingObject_CalledOnEvent(WatcherChangeTypes expectedChangeType)
 {
     FileSystemEventHandler dele = (sender, e) => { Assert.Equal(expectedChangeType, e.ChangeType); };
     TestISynchronizeInvoke invoker = new TestISynchronizeInvoke() { ExpectedDelegate = dele };
     using (var testDirectory = new TempDirectory(GetTestFilePath()))
     using (var watcher = new TestFileSystemWatcher(testDirectory.Path, "*"))
     {
         watcher.SynchronizingObject = invoker;
         if (expectedChangeType == WatcherChangeTypes.Created)
         {
             watcher.Created += dele;
             watcher.CallOnCreated(new FileSystemEventArgs(WatcherChangeTypes.Created, "test", "name"));
         }
         else if (expectedChangeType == WatcherChangeTypes.Deleted)
         {
             watcher.Deleted += dele;
             watcher.CallOnDeleted(new FileSystemEventArgs(WatcherChangeTypes.Deleted, "test", "name"));
         }
         else if (expectedChangeType == WatcherChangeTypes.Changed)
         {
             watcher.Changed += dele;
             watcher.CallOnChanged(new FileSystemEventArgs(WatcherChangeTypes.Changed, "test", "name"));
         }
         Assert.True(invoker.BeginInvoke_Called);
     }
 }