コード例 #1
0
        public void ChangedDocuments_ReactsOnAnyChange()
        {
            InNewTempDirectory(path =>
            {
                var tcsLastChanged = new TaskCompletionSource <DocumentInfo>();
                Action reset       = () =>
                {
                    Thread.Sleep(300);
                    tcsLastChanged = new TaskCompletionSource <DocumentInfo>();
                };
                var destFiles = CopyContentFilesTo("*.txt", path);
                Assume.That(destFiles, Has.Count.GreaterThan(1));

                var destFileName = destFiles.First();
                var source       = new SingleFileDocumentSource(destFileName);

                Action assertLastChangedIsDestFile = () =>
                {
                    var lastChanged = tcsLastChanged.Task.Result;
                    Assert.That(lastChanged, Is.Not.Null);
                    Assert.That(lastChanged.Id, Is.EqualTo(destFileName).IgnoreCase);
                };

                using (source.WatchForChangedDocuments().Subscribe(d => tcsLastChanged.TrySetResult(d)))
                {
                    // change
                    File.AppendAllText(destFileName, "\nNew line to change file");
                    assertLastChangedIsDestFile();
                    reset();

                    // delete
                    File.Delete(destFileName);
                    assertLastChangedIsDestFile();
                    reset();

                    // rename to
                    File.Move(destFiles[1], destFileName);
                    assertLastChangedIsDestFile();
                    reset();

                    // rename from
                    File.Move(destFileName, destFiles[1]);
                    assertLastChangedIsDestFile();
                    reset();

                    // create
                    File.WriteAllText(destFileName, "new file content");
                    assertLastChangedIsDestFile();
                }
            });
        }
コード例 #2
0
        public void ChangedDocuments_WhenFolderDoesNotExist_Fails()
        {
            var source = new SingleFileDocumentSource(Path.Combine(GetNewTempDirectoryPath(), "text.txt"));

            Assert.That(IgnoreEventsReturnError(source.WatchForChangedDocuments()).Wait(), Is.Not.Null);
        }