예제 #1
0
        public void TestFileMonitor()
        {
            var stack   = new ConcurrentStack <FileMonitorObject>();
            var monitor = new FileSystemMonitor(new MonitorCommandOptions()
            {
                MonitoredDirectories = Path.GetTempPath()
            }, x => stack.Push(x));

            monitor.StartRun();

            var created = Path.GetTempFileName(); // Create a file
            var renamed = $"{created}-renamed";

            File.WriteAllText(created, "Test"); // Change the size
            File.Move(created, renamed);        // Rename it
            File.Delete(renamed);               //Delete it

            Thread.Sleep(100);

            monitor.StopRun();

            Assert.IsTrue(stack.Any(x => x.NotifyFilters == NotifyFilters.FileName && x.Path == created));
            Assert.IsTrue(stack.Any(x => x.NotifyFilters == NotifyFilters.Size && x.Path == created));
            Assert.IsTrue(stack.Any(x => x.ChangeType == CHANGE_TYPE.RENAMED && x.NotifyFilters == NotifyFilters.FileName && x.Path == renamed));
            Assert.IsTrue(stack.Any(x => x.ChangeType == CHANGE_TYPE.DELETED && x.Path == renamed));
        }