From 15b3acc446e8069c357864767813d2e12912f50e Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:24:47 -0500 Subject: [PATCH 1/9] Added set; to MockFileSystem.FileSystemWatcher --- System.IO.Abstractions.TestingHelpers/MockFileSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index ca540cd51..f66d2f7f8 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -65,7 +65,7 @@ public MockFileSystem(IDictionary files, string currentDir public IDriveInfoFactory DriveInfo { get; } - public IFileSystemWatcherFactory FileSystemWatcher { get; } + public IFileSystemWatcherFactory FileSystemWatcher { get; set; } public IFileSystem FileSystem => this; From 62da55bef0126e001669ebe8e8162b1b27cf39a5 Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:25:09 -0500 Subject: [PATCH 2/9] Added FILE_SYSTEM_WATCHER_NOT_IMPLEMENTED_EXCEPTION to StringResources --- .../Properties/Resources.resx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx index 5e8750581..0385642e4 100644 --- a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx +++ b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx @@ -144,4 +144,7 @@ Could not find file '{0}'. + + MockFileSystem does not support FileSystemWatcher. + \ No newline at end of file From 557301647f7fbf9f200a3cf62a028d4a9d6bb2bc Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:25:46 -0500 Subject: [PATCH 3/9] Made MockFileSystemWatcherFactory throw NotImplementedException --- .../MockFileSystemWatcherFactory.cs | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcherFactory.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcherFactory.cs index 14a494074..fa832ba13 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcherFactory.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcherFactory.cs @@ -1,21 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace System.IO.Abstractions.TestingHelpers +namespace System.IO.Abstractions.TestingHelpers { [Serializable] public class MockFileSystemWatcherFactory : IFileSystemWatcherFactory { - public FileSystemWatcherBase CreateNew() - { - return new MockFileSystemWatcher(); - } + public FileSystemWatcherBase CreateNew() => + throw new NotImplementedException(StringResources.Manager.GetString("FILE_SYSTEM_WATCHER_NOT_IMPLEMENTED_EXCEPTION")); - public FileSystemWatcherBase FromPath(string path) - { - return new MockFileSystemWatcher {Path = path}; - } + public FileSystemWatcherBase FromPath(string path) => + throw new NotImplementedException(StringResources.Manager.GetString("FILE_SYSTEM_WATCHER_NOT_IMPLEMENTED_EXCEPTION")); } } From 3466fd40330c03f13967b67e922597f554c33dc3 Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:25:58 -0500 Subject: [PATCH 4/9] Removed MockFileSystemWatcher --- .../MockFileSystemWatcher.cs | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 System.IO.Abstractions.TestingHelpers/MockFileSystemWatcher.cs diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcher.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcher.cs deleted file mode 100644 index a1204412d..000000000 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystemWatcher.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.ComponentModel; - -namespace System.IO.Abstractions.TestingHelpers -{ - public class MockFileSystemWatcher : FileSystemWatcherBase - { - public override bool IncludeSubdirectories { get; set; } - public override bool EnableRaisingEvents { get; set; } - public override string Filter { get; set; } - public override int InternalBufferSize { get; set; } - public override NotifyFilters NotifyFilter { get; set; } - public override string Path { get; set; } -#if NET40 - public override ISite Site { get; set; } - public override ISynchronizeInvoke SynchronizingObject { get; set; } -#endif - -#if NET40 - public override void BeginInit() - { - } - - public override void EndInit() - { - } -#endif - - public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType) - { - throw new NotImplementedException(); - } - - public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, int timeout) - { - throw new NotImplementedException(); - } - } -} From 5648b4d0060cc609cdc7758e83157954ffb9bc85 Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:26:56 -0500 Subject: [PATCH 5/9] MockFileSystemWatcherFactoryTests now assert exception thrown --- .../MockFileSystemWatcherFactoryTests.cs | 38 +++---------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs index 53cc83ec5..13b61b0be 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs @@ -1,8 +1,5 @@ using NUnit.Framework; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using XFS = System.IO.Abstractions.TestingHelpers.MockUnixSupport; namespace System.IO.Abstractions.TestingHelpers.Tests { @@ -10,43 +7,18 @@ namespace System.IO.Abstractions.TestingHelpers.Tests public class MockFileSystemWatcherFactoryTests { [Test] - public void MockFileSystemWatcherFactory_CreateNew_ShouldReturnNonNullMockWatcher() + public void MockFileSystemWatcherFactory_CreateNew_ShouldThrowNotImplementedException() { - // Arrange var factory = new MockFileSystemWatcherFactory(); - - // Act - var result = factory.CreateNew(); - - // Assert - Assert.IsNotNull(result); + Assert.Throws(() => factory.CreateNew()); } [Test] public void MockFileSystemWatcherFactory_FromPath_ShouldReturnNonNullMockWatcher() { - // Arrange + var path = XFS.Path(@"y:\test"); var factory = new MockFileSystemWatcherFactory(); - - // Act - var result = factory.FromPath(@"y:\test"); - - // Assert - Assert.IsNotNull(result); - } - - [Test] - public void MockFileSystemWatcherFactory_FromPath_ShouldReturnWatcherForSpecifiedPath() - { - // Arrange - const string path = @"z:\test"; - var factory = new MockFileSystemWatcherFactory(); - - // Act - var result = factory.FromPath(path); - - // Assert - Assert.AreEqual(path, result.Path); + Assert.Throws(() => factory.FromPath(path)); } } } From f7c0a3208e564e7759e8c91a4dd1e13b5ea22eee Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Tue, 27 Nov 2018 17:27:59 -0500 Subject: [PATCH 6/9] Added MockFileSystem test to assert FileSystemWatcher is assignable --- .../MockFileSystemTests.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs index 34fc81400..513460d3b 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; @@ -304,5 +305,39 @@ public void MockFileSystem_DefaultState_CurrentDirectoryExists(string currentDir Assert.IsTrue(actualCurrentDirectory.Exists); } + + [Test] + public void MockFileSystem_FileSystemWatcher_ShouldBeAssignable() + { + var path = XFS.Path(@"C:\root"); + var fileSystem = new MockFileSystem {FileSystemWatcher = new TestFileSystemWatcherFactory()}; + var watcher = fileSystem.FileSystemWatcher.FromPath(path); + Assert.AreEqual(path, watcher.Path); + } + + private class TestFileSystemWatcherFactory : IFileSystemWatcherFactory + { + public FileSystemWatcherBase CreateNew() => new TestFileSystemWatcher(null); + public FileSystemWatcherBase FromPath(string path) => new TestFileSystemWatcher(path); + } + + private class TestFileSystemWatcher : FileSystemWatcherBase + { + public TestFileSystemWatcher(string path) => Path = path; + public override string Path { get; set; } + public override bool IncludeSubdirectories { get; set; } + public override bool EnableRaisingEvents { get; set; } + public override string Filter { get; set; } + public override int InternalBufferSize { get; set; } + public override NotifyFilters NotifyFilter { get; set; } +#if NET40 + public override ISite Site { get; set; } + public override ISynchronizeInvoke SynchronizingObject { get; set; } + public override void BeginInit() {} + public override void EndInit() {} +#endif + public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType) => default(WaitForChangedResult); + public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, int timeout) => default(WaitForChangedResult); + } } } From c1cbf15f695e9e45c212a9ff7d907a329fe786e5 Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Wed, 28 Nov 2018 18:01:45 -0500 Subject: [PATCH 7/9] Elaborated on FILE_SYSTEM_WATCHER_NOT_IMPLEMENTED_EXCEPTION message --- System.IO.Abstractions.TestingHelpers/Properties/Resources.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx index 0385642e4..b86c9b8ba 100644 --- a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx +++ b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx @@ -145,6 +145,6 @@ Could not find file '{0}'. - MockFileSystem does not support FileSystemWatcher. + MockFileSystem does not have a built-in FileSystemWatcher implementation. You must provide your own mock or implementation of IFileSystemWatcherImplementation and assign it to MockFileSystem.FileSystemWatcher. \ No newline at end of file From 356fc1bfa4b56353b46857bea059ebae721c7288 Mon Sep 17 00:00:00 2001 From: Robert Koeninger Date: Fri, 30 Nov 2018 13:29:46 -0500 Subject: [PATCH 8/9] Corrected name of MockFileSystemWatcherFactory test --- .../MockFileSystemWatcherFactoryTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs index 13b61b0be..49696508a 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemWatcherFactoryTests.cs @@ -14,7 +14,7 @@ public void MockFileSystemWatcherFactory_CreateNew_ShouldThrowNotImplementedExce } [Test] - public void MockFileSystemWatcherFactory_FromPath_ShouldReturnNonNullMockWatcher() + public void MockFileSystemWatcherFactory_FromPath_ShouldThrowNotImplementedException() { var path = XFS.Path(@"y:\test"); var factory = new MockFileSystemWatcherFactory(); From 3910fb130e7746ae0f40f561cbe34fe32479975b Mon Sep 17 00:00:00 2001 From: Florian Greinacher Date: Fri, 30 Nov 2018 22:53:09 -0500 Subject: [PATCH 9/9] Update System.IO.Abstractions.TestingHelpers/Properties/Resources.resx Co-Authored-By: rkoeninger --- .../Properties/Resources.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx index b86c9b8ba..13097ff13 100644 --- a/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx +++ b/System.IO.Abstractions.TestingHelpers/Properties/Resources.resx @@ -145,6 +145,6 @@ Could not find file '{0}'. - MockFileSystem does not have a built-in FileSystemWatcher implementation. You must provide your own mock or implementation of IFileSystemWatcherImplementation and assign it to MockFileSystem.FileSystemWatcher. + MockFileSystem does not have a built-in FileSystemWatcher implementation. You must provide your own mock or implementation of IFileSystemWatcherFactory and assign it to MockFileSystem.FileSystemWatcher. - \ No newline at end of file +