From 8f43374384f8f01c0eae747391acefc7a2d13adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 11 Oct 2026 07:36:54 +0200 Subject: [PATCH 1/4] chore: update aweXpect and Mockolate package versions Adapt tests due to breaking changes --- Directory.Packages.props | 8 ++-- .../AssertionHelpers.cs | 28 +++-------- .../ZipArchiveEntry/Tests.cs | 8 ++-- .../ZipFile/CreateFromDirectoryAsyncTests.cs | 16 +++---- .../ZipFile/CreateFromDirectoryTests.cs | 16 +++---- .../FileSystem/DirectoryMockTests.cs | 6 +-- .../RandomProviderTests.cs | 16 +++---- .../TimeProviderFactoryTests.cs | 2 +- .../Directory/CreateSymbolicLinkTests.cs | 4 +- .../FileSystem/Directory/DeleteTests.cs | 24 ++++++---- .../Directory/EnumerateDirectoriesTests.cs | 6 +-- .../EnumerateFileSystemInfosTests.cs | 21 +++++--- .../Directory/EnumerateFilesTests.cs | 21 +++++--- .../Directory/GetDirectoriesTests.cs | 2 +- .../Directory/GetFileSystemInfosTests.cs | 19 +++++--- .../FileSystem/Directory/GetFilesTests.cs | 19 +++++--- .../FileSystem/Directory/MoveTests.cs | 2 +- .../Directory/ResolveLinkTargetTests.cs | 2 +- .../FileSystem/Directory/Tests.Times.cs | 24 +++++----- .../CreateAsSymbolicLinkTests.cs | 2 +- .../FileSystem/DirectoryInfo/DeleteTests.cs | 23 +++++---- .../FileSystem/DirectoryInfo/MoveToTests.cs | 2 +- .../DirectoryInfo/ResolveLinkTargetTests.cs | 2 +- .../FileSystem/DirectoryInfoFactory/Tests.cs | 2 +- .../FileSystem/DriveInfoFactory/Tests.cs | 4 +- .../FileSystem/File/CopyTests.cs | 38 ++++++++++----- .../File/CreateSymbolicLinkTests.cs | 2 +- .../FileSystem/File/DeleteTests.cs | 4 +- .../FileSystem/File/MoveTests.cs | 6 +-- .../FileSystem/File/OpenReadTests.cs | 2 +- .../FileSystem/File/OpenTests.cs | 4 +- .../FileSystem/File/OpenTextTests.cs | 2 +- .../FileSystem/File/ReadAllBytesAsyncTests.cs | 2 +- .../FileSystem/File/ReadAllLinesAsyncTests.cs | 2 +- .../FileSystem/File/ReadAllLinesTests.cs | 2 +- .../FileSystem/File/ReadAllTextAsyncTests.cs | 2 +- .../FileSystem/File/ReadAllTextTests.cs | 2 +- .../FileSystem/File/ReadLinesAsyncTests.cs | 2 +- .../FileSystem/File/ReadLinesTests.cs | 2 +- .../FileSystem/File/ResolveLinkTargetTests.cs | 2 +- .../FileSystem/File/WriteAllTextTests.cs | 4 +- .../FileSystem/FileInfo/CopyToTests.cs | 18 ++++--- .../FileInfo/CreateAsSymbolicLinkTests.cs | 2 +- .../FileSystem/FileInfo/DeleteTests.cs | 2 +- .../FileSystem/FileInfo/LengthTests.cs | 10 ++-- .../FileSystem/FileInfo/MoveToTests.cs | 32 +++++++++---- .../FileSystem/FileInfo/OpenReadTests.cs | 2 +- .../FileSystem/FileInfo/OpenTests.cs | 4 +- .../FileSystem/FileInfo/OpenTextTests.cs | 2 +- .../FileInfo/ResolveLinkTargetTests.cs | 2 +- .../FileSystem/FileStream/FileAccessTests.cs | 4 +- .../FileSystem/FileStreamFactory/Tests.cs | 14 +++--- .../CreateAsSymbolicLinkTests.cs | 2 +- .../FileSystemInfo/ResolveLinkTargetTests.cs | 2 +- .../FileSystemWatcher/MoveTests.Unix.cs | 48 +++++++++---------- .../FileSystemWatcher/MoveTests.Windows.cs | 42 ++++++++-------- .../FileSystem/FileSystemWatcher/MoveTests.cs | 20 ++++---- .../FileSystem/FileSystemWatcher/PathTests.cs | 2 +- .../FileVersionInfoFactory/Tests.cs | 2 +- .../FileSystem/Path/GetRandomFileNameTests.cs | 2 +- .../RandomSystem/GuidTests.cs | 6 +-- .../RandomSystem/RandomFactoryTests.cs | 4 +- .../RandomSystem/RandomTests.cs | 16 +++---- 63 files changed, 324 insertions(+), 271 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 041d09437..2904c112f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -43,11 +43,11 @@ - + - - - + + + diff --git a/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs b/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs index 7bbfc59ab..2ae82c46b 100644 --- a/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs +++ b/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs @@ -1,8 +1,6 @@ -#if NET8_0_OR_GREATER -using System.Diagnostics.CodeAnalysis; -#endif -using aweXpect.Core; +using aweXpect.Core; using aweXpect.Core.Constraints; +using aweXpect.Core.Extending; using aweXpect.Core.Sources; using aweXpect.Delegates; using aweXpect.Formatting; @@ -20,11 +18,11 @@ public static class AssertionHelpers /// a with their corresponding HResult values. /// public static ThatDelegateThrows ThrowsAFileOrDirectoryNotFoundException( - this ThatDelegate @delegate) + this ThatDelegate.WithoutValue @delegate) { ThrowsOption? throwOptions = new(); return new ThatDelegateThrows( - @delegate.ExpectationBuilder.AddConstraint((it, grammars) + @delegate.Get().ExpectationBuilder.AddConstraint((it, grammars) => new DelegateIsNotNullWithinTimeoutConstraint(it, grammars, throwOptions)) .ForWhich(d => d.Exception) .AddConstraint((it, grammars) @@ -88,14 +86,7 @@ public override void AppendResult(StringBuilder stringBuilder, string? indentati public override ConstraintResult Negate() => this; -#if NET8_0_OR_GREATER - public override bool TryGetValue([NotNullWhen(true)] out TValue? value) - where TValue : default -#else - #pragma warning disable CS8765 - public override bool TryGetValue(out TValue? value) where TValue : default - #pragma warning restore CS8765 -#endif + public override bool TryGetStoredValue(out TValue? value) where TValue : default { value = default; return false; @@ -184,14 +175,7 @@ public override ConstraintResult Negate() return this; } -#if NET8_0_OR_GREATER - public override bool TryGetValue([NotNullWhen(true)] out TValue? value) - where TValue : default -#else - #pragma warning disable CS8765 - public override bool TryGetValue(out TValue? value) where TValue : default - #pragma warning restore CS8765 -#endif + public override bool TryGetStoredValue(out TValue? value) where TValue : default { if (_actual is TValue typedValue) { diff --git a/Tests/Testably.Abstractions.Compression.Tests/ZipArchiveEntry/Tests.cs b/Tests/Testably.Abstractions.Compression.Tests/ZipArchiveEntry/Tests.cs index 494769850..c6edbd74c 100644 --- a/Tests/Testably.Abstractions.Compression.Tests/ZipArchiveEntry/Tests.cs +++ b/Tests/Testably.Abstractions.Compression.Tests/ZipArchiveEntry/Tests.cs @@ -87,8 +87,8 @@ public async Task CompressedLength_WithNoCompression_ShouldBeFileLength() IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries.Single()) - .For(x => x.Length, l => l.IsEqualTo(9)).And - .For(x => x.CompressedLength, l => l.IsEqualTo(9)); + .Whose(x => x.Length, l => l.IsEqualTo(9)).And + .Whose(x => x.CompressedLength, l => l.IsEqualTo(9)); } [Test] @@ -106,8 +106,8 @@ public async Task CompressedLength_WithOptimalCompressionLevel_ShouldBeLessThanF IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries.Single()) - .For(x => x.Length, l => l.IsEqualTo(9)).And - .For(x => x.CompressedLength, l => l.IsLessThan(9)); + .Whose(x => x.Length, l => l.IsEqualTo(9)).And + .Whose(x => x.CompressedLength, l => l.IsLessThan(9)); } #if FEATURE_COMPRESSION_ADVANCED diff --git a/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryAsyncTests.cs b/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryAsyncTests.cs index 9b137b2fa..a264c47f0 100644 --- a/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryAsyncTests.cs +++ b/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryAsyncTests.cs @@ -30,7 +30,7 @@ await FileSystem.ZipFile FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("bar/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("bar/")); } [Test] @@ -68,7 +68,7 @@ await FileSystem.ZipFile FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/")); } [Test] @@ -115,7 +115,7 @@ await FileSystem.ZipFile FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); } [Test] @@ -138,7 +138,7 @@ await FileSystem.ZipFile.CreateFromDirectoryAsync("foo", "destination.zip", .Open("destination.zip", ZipArchiveMode.Read, encoding); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("test.txt")); } [Test] @@ -199,7 +199,7 @@ await FileSystem.ZipFile using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("bar/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("bar/")); } [Test] @@ -238,7 +238,7 @@ await FileSystem.ZipFile using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/")); } [Test] @@ -286,7 +286,7 @@ await FileSystem.ZipFile using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); } [Test] @@ -343,7 +343,7 @@ await FileSystem.ZipFile.CreateFromDirectoryAsync("foo", stream, FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read, true, encoding); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("test.txt")); } [Test] diff --git a/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryTests.cs b/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryTests.cs index 0bacd1f83..31243a07e 100644 --- a/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryTests.cs +++ b/Tests/Testably.Abstractions.Compression.Tests/ZipFile/CreateFromDirectoryTests.cs @@ -28,7 +28,7 @@ public async Task FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("bar/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("bar/")); } [Test] @@ -64,7 +64,7 @@ public async Task FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/")); } [Test] @@ -110,7 +110,7 @@ public async Task CreateFromDirectory_IncludeBaseDirectory_ShouldPrependDirector FileSystem.ZipFile.Open("destination.zip", ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); } #if FEATURE_COMPRESSION_OVERWRITE @@ -134,7 +134,7 @@ public async Task CreateFromDirectory_Overwrite_WithEncoding_ShouldOverwriteFile .Open("destination.zip", ZipArchiveMode.Read, encoding); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("test.txt")); } #endif @@ -197,7 +197,7 @@ public async Task using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("bar/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("bar/")); } #endif @@ -238,7 +238,7 @@ public async Task using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/")); } #endif @@ -289,7 +289,7 @@ public async Task using IZipArchive archive = FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("foo/test.txt")); } #endif @@ -351,7 +351,7 @@ public async Task CreateFromDirectory_WithStream_Overwrite_WithEncoding_ShouldOv FileSystem.ZipArchive.New(stream, ZipArchiveMode.Read, true, encoding); await That(archive.Entries).HasSingle() - .Which.For(x => x.FullName, f => f.IsEqualTo("test.txt")); + .Which.Whose(x => x.FullName, f => f.IsEqualTo("test.txt")); } #endif diff --git a/Tests/Testably.Abstractions.Testing.Tests/FileSystem/DirectoryMockTests.cs b/Tests/Testably.Abstractions.Testing.Tests/FileSystem/DirectoryMockTests.cs index 63140d62c..3e3883815 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/FileSystem/DirectoryMockTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/FileSystem/DirectoryMockTests.cs @@ -21,7 +21,7 @@ void Act() => _ = fileSystem.Directory.EnumerateDirectories(path); await That(Act).Throws() - .WithMessageContaining($"'{sut.FullName}'").And + .WithMessage().Containing($"'{sut.FullName}'").And .WithHResult(-2147024891); } @@ -42,7 +42,7 @@ void Act() => _ = fileSystem.Directory.EnumerateFiles(path); await That(Act).Throws() - .WithMessageContaining($"'{sut.FullName}'").And + .WithMessage().Containing($"'{sut.FullName}'").And .WithHResult(-2147024891); } @@ -63,7 +63,7 @@ void Act() => _ = fileSystem.Directory.EnumerateFileSystemEntries(path); await That(Act).Throws() - .WithMessageContaining($"'{sut.FullName}'").And + .WithMessage().Containing($"'{sut.FullName}'").And .WithHResult(-2147024891); } } diff --git a/Tests/Testably.Abstractions.Testing.Tests/RandomProviderTests.cs b/Tests/Testably.Abstractions.Testing.Tests/RandomProviderTests.cs index 7649408ac..87e352bc7 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/RandomProviderTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/RandomProviderTests.cs @@ -19,7 +19,7 @@ public async Task Default_ShouldReturnRandomGuid() results.Add(randomProvider.GetGuid()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -34,7 +34,7 @@ public async Task Default_ShouldReturnRandomNumbers() results.Add(randomProvider.GetRandom(i).Next()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -178,7 +178,7 @@ public async Task GenerateRandom_Next_WithoutGenerator_ShouldReturnRandomValues( results.Add(random.Next()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -241,7 +241,7 @@ public async Task GenerateRandom_NextBytes_Span_WithoutGenerator_ShouldReturnRan results.Add(buffer); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -288,7 +288,7 @@ public async Task GenerateRandom_NextBytes_WithoutGenerator_ShouldReturnRandomVa results.Add(buffer); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -349,7 +349,7 @@ public async Task GenerateRandom_NextDouble_WithoutGenerator_ShouldReturnRandomV results.Add(random.NextDouble()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #if FEATURE_RANDOM_ADVANCED @@ -455,7 +455,7 @@ public async Task GenerateRandom_NextInt64_WithoutGenerator_ShouldReturnRandomVa results.Add(random.NextInt64()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -495,7 +495,7 @@ public async Task GenerateRandom_NextSingle_WithoutGenerator_ShouldReturnRandomV results.Add(random.NextSingle()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif diff --git a/Tests/Testably.Abstractions.Testing.Tests/TimeProviderFactoryTests.cs b/Tests/Testably.Abstractions.Testing.Tests/TimeProviderFactoryTests.cs index cfd99d30d..bd4322d36 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/TimeProviderFactoryTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/TimeProviderFactoryTests.cs @@ -92,7 +92,7 @@ public async Task Random_ShouldReturnRandomDateTime() results.Add(TimeProviderFactory.Random().Create(_ => { }).Read()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateSymbolicLinkTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateSymbolicLinkTests.cs index b0ff775d7..b5111bdae 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateSymbolicLinkTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateSymbolicLinkTests.cs @@ -35,13 +35,13 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(-2147024713); } else { await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(17); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs index 0c720ad5b..f9e1016bf 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs @@ -22,7 +22,7 @@ void Act() if (Test.RunsOnLinux) { await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); } else @@ -58,7 +58,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); } @@ -96,7 +96,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); } @@ -146,7 +146,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"{filename}'").And + .WithMessage().Containing($"{filename}'").And .WithHResult(-2147024864); await That(FileSystem.File.Exists(filePath)).IsTrue(); } @@ -299,11 +299,17 @@ void Act() FileSystem.Directory.Delete(path); } - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And - .WithMessageContaining(!Test.RunsOnWindows || Test.IsNetFramework - ? null - : $"'{FileSystem.Path.Combine(BasePath, path)}'"); + if (!Test.RunsOnWindows || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)); + } + else + { + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And + .WithMessage().Containing($"'{FileSystem.Path.Combine(BasePath, path)}'"); + } await That(FileSystem.Directory.Exists(path)).IsTrue(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateDirectoriesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateDirectoriesTests.cs index a2da64803..0f389ffd3 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateDirectoriesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateDirectoriesTests.cs @@ -36,7 +36,7 @@ void Act() => _ = FileSystem.Directory.EnumerateDirectories(path).ToList(); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -53,7 +53,7 @@ void Act() => _ = FileSystem.Directory.EnumerateDirectories(path); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -326,7 +326,7 @@ void Act() else { await That(Act).Throws() - .WithMessageContaining(@"Access to the path 'C:\Windows\System32\").And + .WithMessage().Containing(@"Access to the path 'C:\Windows\System32\").And .WithHResult(-2147024891); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs index 63243c45f..cd508d3f9 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs @@ -23,7 +23,7 @@ void Act() => _ = FileSystem.Directory.EnumerateFileSystemEntries(path).ToList(); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -40,7 +40,7 @@ void Act() => _ = FileSystem.Directory.EnumerateFileSystemEntries(path); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -184,11 +184,18 @@ void Act() .FirstOrDefault(); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessageContaining( - // The searchPattern is not included in .NET Framework - Test.IsNetFramework ? null : $"'{searchPattern}'"); + // The searchPattern is not included in .NET Framework + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithMessage().Containing($"'{searchPattern}'"); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs index 55a559cbe..f41034194 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs @@ -20,7 +20,7 @@ void Act() => _ = FileSystem.Directory.EnumerateFiles(path).ToList(); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -37,7 +37,7 @@ void Act() => _ = FileSystem.Directory.EnumerateFiles(path); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -355,11 +355,18 @@ void Act() .FirstOrDefault(); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessageContaining( - // The searchPattern is not included in .NET Framework - Test.IsNetFramework ? null : $"'{searchPattern}'"); + // The searchPattern is not included in .NET Framework + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithMessage().Containing($"'{searchPattern}'"); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetDirectoriesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetDirectoriesTests.cs index 24a1e0a67..22f0a041e 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetDirectoriesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetDirectoriesTests.cs @@ -19,7 +19,7 @@ void Act() => FileSystem.Directory.GetDirectories(path); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs index fee47c067..3a7a35779 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs @@ -23,7 +23,7 @@ void Act() => FileSystem.Directory.GetFileSystemEntries(path); await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'.").And + .WithMessage().Containing($"'{expectedPath}'.").And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -150,11 +150,18 @@ void Act() .FirstOrDefault(); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessageContaining( - // The searchPattern is not included in .NET Framework - Test.IsNetFramework ? null : $"'{searchPattern}'"); + // The searchPattern is not included in .NET Framework + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithMessage().Containing($"'{searchPattern}'"); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs index 2146e58b8..aae56a4f2 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs @@ -23,7 +23,7 @@ void Act() => FileSystem.Directory.GetFiles(path); await That(Act).Throws() - .WithMessageContaining(expectedPath).And + .WithMessage().Containing(expectedPath).And .WithHResult(-2147024893); await That(FileSystem.Directory.Exists(path)).IsFalse(); } @@ -229,11 +229,18 @@ void Act() .FirstOrDefault(); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessageContaining( - // The searchPattern is not included in .NET Framework - Test.IsNetFramework ? null : $"'{searchPattern}'"); + // The searchPattern is not included in .NET Framework + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithMessage().Containing($"'{searchPattern}'"); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/MoveTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/MoveTests.cs index c66eb2d80..904e594e5 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/MoveTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/MoveTests.cs @@ -262,7 +262,7 @@ public async Task Move_WithReadOnlyFile_ShouldMoveDirectoryWithContent( await That(destinationDirectory.GetFiles(initialized[1].Name)).HasSingle(); await That(destinationDirectory.GetDirectories(initialized[2].Name)).HasSingle(); await That(destinationDirectory.GetFiles(initialized[3].Name, SearchOption.AllDirectories)) - .HasSingle().Which.For(x => x.Attributes, a => a.HasFlag(FileAttributes.ReadOnly)); + .HasSingle().Which.Whose(x => x.Attributes, a => a.HasFlag(FileAttributes.ReadOnly)); await That( destinationDirectory.GetDirectories(initialized[4].Name, SearchOption.AllDirectories)) diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ResolveLinkTargetTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ResolveLinkTargetTests.cs index 83ea21d5c..31cb204a3 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ResolveLinkTargetTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ResolveLinkTargetTests.cs @@ -109,7 +109,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{previousPath}'").And + .WithMessage().Containing($"'{previousPath}'").And .WithHResult(Test.RunsOnWindows ? -2147022975 : -2146232800); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.Times.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.Times.cs index 891212e13..8c55590bd 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.Times.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.Times.cs @@ -170,13 +170,13 @@ void Act() if (Test.RunsOnWindows || (Test.IsNet8OrGreater && !Test.RunsOnMac)) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } @@ -231,13 +231,13 @@ void Act() if (Test.RunsOnWindows || (Test.IsNet8OrGreater && !Test.RunsOnMac)) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } @@ -292,13 +292,13 @@ void Act() if (Test.RunsOnWindows || Test.IsNet8OrGreater) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } @@ -347,13 +347,13 @@ void Act() if (Test.RunsOnWindows || Test.IsNet8OrGreater) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } @@ -402,13 +402,13 @@ void Act() if (Test.RunsOnWindows || Test.IsNet8OrGreater) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } @@ -457,13 +457,13 @@ void Act() if (Test.RunsOnWindows || Test.IsNet8OrGreater) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024893); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateAsSymbolicLinkTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateAsSymbolicLinkTests.cs index 95c45ea66..6210a6246 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateAsSymbolicLinkTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateAsSymbolicLinkTests.cs @@ -33,7 +33,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(Test.RunsOnWindows ? -2147024713 : 17); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs index bd3fce734..3af3b261b 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs @@ -18,7 +18,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{sut.FullName}'").And + .WithMessage().Containing($"'{sut.FullName}'").And .WithHResult(-2147024893); } @@ -66,7 +66,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"{filename}'").And + .WithMessage().Containing($"{filename}'").And .WithHResult(-2147024864); await That(FileSystem.File.Exists(filePath)).IsTrue(); } @@ -132,13 +132,18 @@ void Act() sut.Delete(); } - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And - .WithMessageContaining( - // Path information only included in exception message on Windows and not in .NET Framework - !Test.RunsOnWindows || Test.IsNetFramework - ? null - : $"'{sut.FullName}'"); + // Path information only included in exception message on Windows and not in .NET Framework + if (!Test.RunsOnWindows || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)); + } + else + { + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And + .WithMessage().Containing($"'{sut.FullName}'"); + } await That(sut.Exists).IsTrue(); await That(FileSystem.Directory.Exists(sut.FullName)).IsTrue(); diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/MoveToTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/MoveToTests.cs index e4a634cf7..6efcbbeb4 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/MoveToTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/MoveToTests.cs @@ -163,7 +163,7 @@ public async Task MoveTo_WithReadOnlyFile_ShouldMoveDirectoryWithContent( await That(destinationDirectory.GetFiles(initialized[1].Name)).HasSingle(); await That(destinationDirectory.GetDirectories(initialized[2].Name)).HasSingle(); await That(destinationDirectory.GetFiles(initialized[3].Name, SearchOption.AllDirectories)) - .HasSingle().Which.For(x => x.Attributes, it => it.HasFlag(FileAttributes.ReadOnly)); + .HasSingle().Which.Whose(x => x.Attributes, it => it.HasFlag(FileAttributes.ReadOnly)); await That( destinationDirectory.GetDirectories(initialized[4].Name, SearchOption.AllDirectories)) diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ResolveLinkTargetTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ResolveLinkTargetTests.cs index 0bc2b83e3..6804133c3 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ResolveLinkTargetTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ResolveLinkTargetTests.cs @@ -45,7 +45,7 @@ void Act() await That(Act).Throws() .WithHResult(Test.RunsOnWindows ? -2147022975 : -2146232800).And - .WithMessageContaining($"'{directoryInfo.FullName}'"); + .WithMessage().Containing($"'{directoryInfo.FullName}'"); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/Tests.cs index 305ba6e58..386e3417d 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/Tests.cs @@ -19,7 +19,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining(expectedMessage).And + .WithMessage().Containing(expectedMessage).And #if !NETFRAMEWORK .WithParamName(nameof(path)).And #endif diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/Tests.cs index df5b476c0..9b25b51ac 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/Tests.cs @@ -34,7 +34,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(-2147024893); } @@ -55,7 +55,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(-2147024893); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs index cbd706224..786dc28e4 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs @@ -124,7 +124,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining( + .WithMessage().Containing( "The filename, directory name, or volume label syntax is incorrect").And .WithHResult(-2147024773); } @@ -334,11 +334,17 @@ void Act() FileSystem.File.Copy(source, destinationName); } - await That(Act).Throws() - .WithMessageContaining(Test.IsNetFramework - ? null - : $"'{FileSystem.Path.GetFullPath(source)}'").And - .WithHResult(-2147024893); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024893); + } + else + { + await That(Act).Throws() + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(source)}'").And + .WithHResult(-2147024893); + } await That(FileSystem.File.Exists(destinationName)).IsFalse(); } @@ -356,7 +362,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{sourceName}'" : $"'{FileSystem.Path.GetFullPath(sourceName)}'").And .WithHResult(-2147024891); @@ -391,7 +397,7 @@ void Act() } else { - await That(Act).ThrowsException(); + await That(Act).Throws(); await That(FileSystem.File.Exists(sourceName)).IsTrue(); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } @@ -408,11 +414,17 @@ void Act() FileSystem.File.Copy(sourceName, destinationName); } - await That(Act).Throws() - .WithMessageContaining(Test.IsNetFramework - ? null - : $"'{FileSystem.Path.GetFullPath(sourceName)}'").And - .WithHResult(-2147024894); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024894); + } + else + { + await That(Act).Throws() + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And + .WithHResult(-2147024894); + } await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/CreateSymbolicLinkTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/CreateSymbolicLinkTests.cs index 75c8ba419..ed0d06ad7 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/CreateSymbolicLinkTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/CreateSymbolicLinkTests.cs @@ -33,7 +33,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(Test.RunsOnWindows ? -2147024713 : 17); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/DeleteTests.cs index 490f0eeec..34c832a46 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/DeleteTests.cs @@ -47,7 +47,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{expectedPath}'").And + .WithMessage().Containing($"'{expectedPath}'").And .WithHResult(-2147024891); } @@ -70,7 +70,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"{filename}'").And + .WithMessage().Containing($"{filename}'").And .WithHResult(-2147024864); await That(FileSystem.File.Exists(filename)).IsTrue(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/MoveTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/MoveTests.cs index 41f7733a5..583f96f6d 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/MoveTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/MoveTests.cs @@ -169,7 +169,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(sourcePath)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourcePath)}'").And .WithHResult(-2147024894); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } @@ -228,7 +228,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(sourceName)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And .WithHResult(-2147024894); } @@ -244,7 +244,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(sourceName)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And .WithHResult(-2147024894); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenReadTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenReadTests.cs index f180dc1d2..b1f3a8e12 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenReadTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenReadTests.cs @@ -15,7 +15,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTests.cs index 1fbe3e241..3b3e014a0 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTests.cs @@ -18,7 +18,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(Test.RunsOnWindows ? -2147024816 : 17); } @@ -33,7 +33,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTextTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTextTests.cs index 4a373ed5e..24e1cb116 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTextTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/OpenTextTests.cs @@ -16,7 +16,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllBytesAsyncTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllBytesAsyncTests.cs index bfd357d18..68628860b 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllBytesAsyncTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllBytesAsyncTests.cs @@ -31,7 +31,7 @@ async Task Act() => await FileSystem.File.ReadAllBytesAsync(path, CancellationToken); await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesAsyncTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesAsyncTests.cs index 2f2237bee..a069fa785 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesAsyncTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesAsyncTests.cs @@ -48,7 +48,7 @@ async Task Act() => await FileSystem.File.ReadAllLinesAsync(path, CancellationToken); await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesTests.cs index 546cf2f6e..9965c53e5 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllLinesTests.cs @@ -28,7 +28,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextAsyncTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextAsyncTests.cs index bb227217b..275879e8a 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextAsyncTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextAsyncTests.cs @@ -47,7 +47,7 @@ async Task Act() => await FileSystem.File.ReadAllTextAsync(path, CancellationToken); await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextTests.cs index fd630f03a..abe3fa35e 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadAllTextTests.cs @@ -145,6 +145,6 @@ void Act() FileSystem.File.ReadAllText(path.Substring(0, 3) + "*" + path.Substring(8)); } - await That(Act).ThrowsException(); + await That(Act).Throws(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesAsyncTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesAsyncTests.cs index d9dbac1ee..57dd78c95 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesAsyncTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesAsyncTests.cs @@ -67,7 +67,7 @@ async Task Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesTests.cs index 106aabf03..3b0e03ee1 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ReadLinesTests.cs @@ -29,7 +29,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ResolveLinkTargetTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ResolveLinkTargetTests.cs index be22aa2ff..5219bba0a 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ResolveLinkTargetTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ResolveLinkTargetTests.cs @@ -130,7 +130,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{previousPath}'").And + .WithMessage().Containing($"'{previousPath}'").And .WithHResult(Test.RunsOnWindows ? -2147022975 : -2146232800); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/WriteAllTextTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/WriteAllTextTests.cs index 8623018cd..541b3e054 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/WriteAllTextTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/WriteAllTextTests.cs @@ -21,7 +21,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024893).And - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(fullPath)}'"); + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(fullPath)}'"); } [Test] @@ -223,7 +223,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024893).And - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(fullPath)}'"); + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(fullPath)}'"); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs index cbeaed3d2..e2a5edcf7 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs @@ -229,7 +229,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(sourceName)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And .WithHResult(-2147024891); await That(FileSystem.Directory.Exists(sourceName)).IsTrue(); await That(FileSystem.File.Exists(destinationName)).IsFalse(); @@ -281,11 +281,17 @@ void Act() sut.CopyTo(destinationName); } - await That(Act).Throws() - .WithHResult(-2147024894).And - .WithMessageContaining(Test.IsNetFramework - ? null - : $"'{FileSystem.Path.GetFullPath(sourceName)}'"); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024894); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024894).And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'"); + } await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CreateAsSymbolicLinkTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CreateAsSymbolicLinkTests.cs index 76d877b1c..1899a3666 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CreateAsSymbolicLinkTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CreateAsSymbolicLinkTests.cs @@ -47,7 +47,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(Test.RunsOnWindows ? -2147024713 : 17); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/DeleteTests.cs index 570b5f82f..7c7f5b936 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/DeleteTests.cs @@ -100,7 +100,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"{filename}'").And + .WithMessage().Containing($"{filename}'").And .WithHResult(-2147024864); await That(FileSystem.File.Exists(filename)).IsTrue(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/LengthTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/LengthTests.cs index e8c9314db..beb3b9628 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/LengthTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/LengthTests.cs @@ -20,7 +20,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024894).And - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{path}'" : $"'{FileSystem.Path.GetFullPath(path)}'"); } @@ -38,7 +38,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024894).And - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{path}'" : $"'{FileSystem.Path.GetFullPath(path)}'"); } @@ -57,7 +57,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024894).And - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{path}'" : $"'{FileSystem.Path.GetFullPath(path)}'"); } @@ -121,7 +121,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{path}'" : $"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); @@ -134,7 +134,7 @@ void Act2() } await That(Act2).Throws() - .WithMessageContaining(Test.IsNetFramework + .WithMessage().Containing(Test.IsNetFramework ? $"'{path}'" : $"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs index 011ee087c..29edeeef8 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs @@ -81,11 +81,17 @@ void Act() sut.MoveTo(sourceName); } - await That(Act).Throws() - .WithHResult(-2147024894).And - .WithMessageContaining(Test.IsNetFramework - ? null - : $"'{FileSystem.Path.GetFullPath(sourceName)}'"); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024894); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024894).And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'"); + } await That(FileSystem.File.Exists(sourceName)).IsFalse(); } @@ -295,11 +301,17 @@ void Act() sut.MoveTo(destinationName); } - await That(Act).Throws() - .WithMessageContaining(Test.IsNetFramework - ? null - : $"'{FileSystem.Path.GetFullPath(sourceName)}'").And - .WithHResult(-2147024894); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024894); + } + else + { + await That(Act).Throws() + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And + .WithHResult(-2147024894); + } await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenReadTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenReadTests.cs index d42aec651..a6ac91698 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenReadTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenReadTests.cs @@ -17,7 +17,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTests.cs index 98e6b4a2e..16a03782c 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTests.cs @@ -126,7 +126,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(Test.RunsOnWindows ? -2147024816 : 17); } @@ -144,7 +144,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTextTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTextTests.cs index 19221eefc..f96772bef 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTextTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/OpenTextTests.cs @@ -18,7 +18,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ResolveLinkTargetTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ResolveLinkTargetTests.cs index 8b9655593..6279a13de 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ResolveLinkTargetTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ResolveLinkTargetTests.cs @@ -49,7 +49,7 @@ void Act() await That(Act).Throws() .WithHResult(Test.RunsOnWindows ? -2147022975 : -2146232800).And - .WithMessageContaining($"'{fileInfo.FullName}'"); + .WithMessage().Containing($"'{fileInfo.FullName}'"); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStream/FileAccessTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStream/FileAccessTests.cs index 97da69f63..d4978e0fd 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStream/FileAccessTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStream/FileAccessTests.cs @@ -38,7 +38,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024864) .Because( $"Access {access1}, Share {share1} of file 1 is incompatible with Access {access2}, Share {share2} of file 2"); @@ -174,7 +174,7 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024864); } else diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs index 5a82ef9b5..bf0f84888 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs @@ -16,7 +16,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining(nameof(FileMode.Append)).And + .WithMessage().Containing(nameof(FileMode.Append)).And .WithHResult(-2147024809).And .WithParamName(Test.IsNetFramework ? null : "access"); } @@ -46,7 +46,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(Test.RunsOnWindows ? -2147024816 : 17); } @@ -81,7 +81,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024809).And .WithParamName(Test.IsNetFramework ? null : "access").And - .Which.For(x => x.Message, + .Which.Whose(x => x.Message, it => it.Contains(mode.ToString()).And.Contains(access.ToString())); } @@ -97,7 +97,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } @@ -112,7 +112,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024894); } @@ -158,13 +158,13 @@ void Act() if (Test.RunsOnWindows) { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(-2147024891); } else { await That(Act).Throws() - .WithMessageContaining($"'{FileSystem.Path.GetFullPath(path)}'").And + .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(path)}'").And .WithHResult(17); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/CreateAsSymbolicLinkTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/CreateAsSymbolicLinkTests.cs index 37c4b8b5e..d655fa38f 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/CreateAsSymbolicLinkTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/CreateAsSymbolicLinkTests.cs @@ -35,7 +35,7 @@ void Act() } await That(Act).Throws() - .WithMessageContaining($"'{path}'").And + .WithMessage().Containing($"'{path}'").And .WithHResult(Test.RunsOnWindows ? -2147024713 : 17); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ResolveLinkTargetTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ResolveLinkTargetTests.cs index 117673d63..94f6b7447 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ResolveLinkTargetTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ResolveLinkTargetTests.cs @@ -93,7 +93,7 @@ void Act() await That(Act).Throws() .WithHResult(Test.RunsOnWindows ? -2147022975 : -2146232800).And - .WithMessageContaining($"'{fileInfo.FullName}'"); + .WithMessage().Containing($"'{fileInfo.FullName}'"); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Unix.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Unix.cs index 34a2b8005..905d989eb 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Unix.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Unix.cs @@ -77,11 +77,11 @@ await That(createdMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); } } @@ -165,24 +165,24 @@ await That(renamedMs.Wait(isRenamed ? ExpectSuccess : ExpectTimeout, Cancellatio await That(renamedBag.TryTake(out RenamedEventArgs? renamedEvent)).IsTrue(); await That(renamedEvent!) - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(nestedTarget)) + .Whose(x => x.FullPath, it => it.IsEqualTo(nestedTarget)) .And - .For(x => x.OldName, it => it.IsEqualTo(targetName)) + .Whose(x => x.OldName, it => it.IsEqualTo(targetName)) .And - .For(x => x.OldFullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.OldFullPath, it => it.IsEqualTo(insideTarget)); } else { await That(deletedBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) .And - .For(x => x.Name, it => it.IsEqualTo(targetName)) + .Whose(x => x.Name, it => it.IsEqualTo(targetName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); } } @@ -271,11 +271,11 @@ await That(renamedMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)); + .Whose(x => x.FullPath, it => it.IsEqualTo(target)); } await ThatIsSingleOrEmpty(renamedBag, !includeSubdirectories); @@ -285,13 +285,13 @@ await That(createdEvent!) await That(renamedBag.TryTake(out RenamedEventArgs? renamedEvent)).IsTrue(); await That(renamedEvent!) - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)) + .Whose(x => x.FullPath, it => it.IsEqualTo(target)) .And - .For(x => x.OldName, it => it.IsEqualTo(expectedOldName)) + .Whose(x => x.OldName, it => it.IsEqualTo(expectedOldName)) .And - .For(x => x.OldFullPath, it => it.IsEqualTo(source)); + .Whose(x => x.OldFullPath, it => it.IsEqualTo(source)); } } @@ -377,11 +377,11 @@ await That(renamedMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)); + .Whose(x => x.FullPath, it => it.IsEqualTo(target)); } if (includeSubdirectories) @@ -389,13 +389,13 @@ await That(createdEvent!) await That(renamedBag.TryTake(out RenamedEventArgs? renamedEvent)).IsTrue(); await That(renamedEvent!) - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)) + .Whose(x => x.FullPath, it => it.IsEqualTo(target)) .And - .For(x => x.OldName, it => it.IsEqualTo(expectedOldName)) + .Whose(x => x.OldName, it => it.IsEqualTo(expectedOldName)) .And - .For(x => x.OldFullPath, it => it.IsEqualTo(source)); + .Whose(x => x.OldFullPath, it => it.IsEqualTo(source)); } } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Windows.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Windows.cs index cc555a7a8..9fe6ecf58 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Windows.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.Windows.cs @@ -72,11 +72,11 @@ await That(createdMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); } } @@ -145,11 +145,11 @@ await That(createdMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(deletedBag.TryTake(out FileSystemEventArgs? deletedEvent)).IsTrue(); await That(deletedEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) .And - .For(x => x.Name, it => it.IsEqualTo(targetName)) + .Whose(x => x.Name, it => it.IsEqualTo(targetName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); await ThatIsSingleOrEmpty(createdBag, !includeSubdirectories); @@ -158,11 +158,11 @@ await That(deletedEvent!) await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(nestedTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(nestedTarget)); } } @@ -245,11 +245,11 @@ await That(deletedMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)); + .Whose(x => x.FullPath, it => it.IsEqualTo(target)); } if (includeSubdirectories) @@ -257,11 +257,11 @@ await That(createdEvent!) await That(deletedBag.TryTake(out FileSystemEventArgs? deletedEvent)).IsTrue(); await That(deletedEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(source)); + .Whose(x => x.FullPath, it => it.IsEqualTo(source)); } } @@ -349,11 +349,11 @@ await That(deletedMs.Wait(includeSubdirectories ? ExpectSuccess : ExpectTimeout, await That(createdBag.TryTake(out FileSystemEventArgs? createdEvent)).IsTrue(); await That(createdEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedCreatedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(target)); + .Whose(x => x.FullPath, it => it.IsEqualTo(target)); } if (includeSubdirectories) @@ -361,11 +361,11 @@ await That(createdEvent!) await That(deletedBag.TryTake(out FileSystemEventArgs? deletedEvent)).IsTrue(); await That(deletedEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(source)); + .Whose(x => x.FullPath, it => it.IsEqualTo(source)); } } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.cs index e59679be2..4024bcc43 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/MoveTests.cs @@ -55,11 +55,11 @@ out ConcurrentBag createdBag await That(renamedMs.Wait(ExpectTimeout, CancellationToken)).IsFalse(); await That(createdBag).HasSingle().Which - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Created)) .And - .For(x => x.Name, it => it.IsEqualTo(targetName)) + .Whose(x => x.Name, it => it.IsEqualTo(targetName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); } [Test] @@ -134,11 +134,11 @@ await That(deletedMs.Wait(shouldInvokeDeleted ? ExpectSuccess : ExpectTimeout, C await That(deletedBag.TryTake(out FileSystemEventArgs? deletedEvent)).IsTrue(); await That(deletedEvent!) - .For(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) + .Whose(x => x.ChangeType, it => it.IsEqualTo(WatcherChangeTypes.Deleted)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedDeletedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget)); } } @@ -218,13 +218,13 @@ await That(renamedMs.Wait(shouldInvokeRenamed ? ExpectSuccess : ExpectTimeout, C await That(renamedBag.TryTake(out RenamedEventArgs? renamedEvent)).IsTrue(); await That(renamedEvent!) - .For(x => x.OldName, it => it.IsEqualTo(expectedOldName)) + .Whose(x => x.OldName, it => it.IsEqualTo(expectedOldName)) .And - .For(x => x.Name, it => it.IsEqualTo(expectedName)) + .Whose(x => x.Name, it => it.IsEqualTo(expectedName)) .And - .For(x => x.FullPath, it => it.IsEqualTo(insideTarget2)) + .Whose(x => x.FullPath, it => it.IsEqualTo(insideTarget2)) .And - .For(x => x.OldFullPath, it => it.IsEqualTo(insideTarget)); + .Whose(x => x.OldFullPath, it => it.IsEqualTo(insideTarget)); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs index 789cda693..cd59dd4b9 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs @@ -48,7 +48,7 @@ void Act() await That(Act).Throws() .WithHResult(-2147024809).And - .WithMessageContaining(path); + .WithMessage().Containing(path); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/Tests.cs index e2568438d..cfded2708 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/Tests.cs @@ -36,7 +36,7 @@ void Act() => FileSystem.FileVersionInfo.GetVersionInfo(path); await That(Act).Throws() - .WithMessageContaining(FileSystem.Path.GetFullPath(path)).And + .WithMessage().Containing(FileSystem.Path.GetFullPath(path)).And .WithHResult(-2147024894); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Path/GetRandomFileNameTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Path/GetRandomFileNameTests.cs index 9e150941d..d1ebd49dd 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Path/GetRandomFileNameTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Path/GetRandomFileNameTests.cs @@ -35,6 +35,6 @@ public async Task GetRandomFileName_ShouldReturnRandomStrings() results.Add(FileSystem.Path.GetRandomFileName()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } } diff --git a/Tests/Testably.Abstractions.Tests/RandomSystem/GuidTests.cs b/Tests/Testably.Abstractions.Tests/RandomSystem/GuidTests.cs index 652161fd5..9d6672487 100644 --- a/Tests/Testably.Abstractions.Tests/RandomSystem/GuidTests.cs +++ b/Tests/Testably.Abstractions.Tests/RandomSystem/GuidTests.cs @@ -23,7 +23,7 @@ public async Task CreateVersion7_ShouldBeThreadSafeAndReturnUniqueItems() results.Add(RandomSystem.Guid.CreateVersion7()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -38,7 +38,7 @@ public async Task CreateVersion7_WithOffset_ShouldBeThreadSafeAndReturnUniqueIte results.Add(RandomSystem.Guid.CreateVersion7(DateTimeOffset.UtcNow)); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif [Test] @@ -57,7 +57,7 @@ public async Task NewGuid_ShouldBeThreadSafeAndReturnUniqueItems() results.Add(RandomSystem.Guid.NewGuid()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #if FEATURE_GUID_PARSE diff --git a/Tests/Testably.Abstractions.Tests/RandomSystem/RandomFactoryTests.cs b/Tests/Testably.Abstractions.Tests/RandomSystem/RandomFactoryTests.cs index 8d113d727..5c8b55bee 100644 --- a/Tests/Testably.Abstractions.Tests/RandomSystem/RandomFactoryTests.cs +++ b/Tests/Testably.Abstractions.Tests/RandomSystem/RandomFactoryTests.cs @@ -16,7 +16,7 @@ public async Task New_Next_ShouldReturnDifferentValues() results.Add(RandomSystem.Random.New().Next()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -43,7 +43,7 @@ public async Task New_Shared_ShouldReturnDifferentValues() results.Add(RandomSystem.Random.Shared.Next()); } - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/RandomSystem/RandomTests.cs b/Tests/Testably.Abstractions.Tests/RandomSystem/RandomTests.cs index b347964a3..4cc5d213c 100644 --- a/Tests/Testably.Abstractions.Tests/RandomSystem/RandomTests.cs +++ b/Tests/Testably.Abstractions.Tests/RandomSystem/RandomTests.cs @@ -282,7 +282,7 @@ public async Task Next_ShouldBeThreadSafe() results.Add(RandomSystem.Random.Shared.Next()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } [Test] @@ -297,7 +297,7 @@ public async Task NextBytes_ShouldBeThreadSafe() results.Add(bytes); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #if FEATURE_SPAN @@ -313,7 +313,7 @@ public async Task NextBytes_Span_ShouldBeThreadSafe() results.Add(bytes.ToArray()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -327,7 +327,7 @@ public async Task NextDouble_ShouldBeThreadSafe() results.Add(RandomSystem.Random.Shared.NextDouble()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #if FEATURE_RANDOM_ADVANCED @@ -374,7 +374,7 @@ public async Task NextInt64_ShouldBeThreadSafe() results.Add(RandomSystem.Random.Shared.NextInt64()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -389,7 +389,7 @@ public async Task NextSingle_ShouldBeThreadSafe() results.Add(RandomSystem.Random.Shared.NextSingle()); }); - await That(results).AreAllUnique(); + await That(results).All().AreUnique(); } #endif @@ -417,7 +417,7 @@ public async Task Shuffle_Array_ShouldShuffleItemsInPlace() RandomSystem.Random.Shared.Shuffle(values); - await That(values).AreAllUnique(); + await That(values).All().AreUnique(); await That(values).DoesNotContain(originalValues); await That(values.Order()).Contains(originalValues); } @@ -434,7 +434,7 @@ public async Task Shuffle_Span_ShouldShuffleItemsInPlace() RandomSystem.Random.Shared.Shuffle(values); int[] result = values.ToArray(); - await That(result).AreAllUnique(); + await That(result).All().AreUnique(); await That(result).DoesNotContain(originalValues); await That(result.Order()).Contains(originalValues); } From 89f4d903e1254f946a4f682674b55f9237b66024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 11 Oct 2026 08:43:33 +0200 Subject: [PATCH 2/4] fix: stop passing null to WithParamName to skip the check In aweXpect 3, WithParamName(null) requires the param name to be null instead of skipping the check, which broke the ignored and .NET Framework cases. --- .../FileSystem/Directory/ExceptionTests.cs | 57 ++++++++++++++----- .../DirectoryInfo/ExceptionTests.cs | 37 +++++++++--- .../DirectoryInfoFactory/ExceptionTests.cs | 57 ++++++++++++++----- .../DriveInfoFactory/ExceptionTests.cs | 37 +++++++++--- .../FileSystem/File/ExceptionTests.cs | 57 ++++++++++++++----- .../FileSystem/FileInfo/ExceptionTests.cs | 37 +++++++++--- .../FileInfoFactory/ExceptionTests.cs | 57 ++++++++++++++----- .../FileStreamFactory/ExceptionTests.cs | 57 ++++++++++++++----- .../FileSystem/FileStreamFactory/Tests.cs | 37 +++++++++--- .../FileSystemInfo/ExceptionTests.cs | 35 +++++++++--- .../FileSystem/FileSystemWatcher/PathTests.cs | 14 ++++- .../ExceptionTests.cs | 57 ++++++++++++++----- .../FileVersionInfoFactory/ExceptionTests.cs | 57 ++++++++++++++----- .../FileSystem/Path/ExceptionTests.cs | 57 ++++++++++++++----- 14 files changed, 495 insertions(+), 158 deletions(-) diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs index 2bb688d93..9119efb89 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs @@ -79,11 +79,21 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -99,10 +109,19 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -120,11 +139,21 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } private static IEnumerable<(Expression>, string, bool, Func)> diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs index 2809f56a7..264452f79 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs @@ -75,11 +75,21 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo.New("foo")); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -93,10 +103,19 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo.New("foo")); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs index 37a62fe88..3f687d9f4 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs @@ -61,11 +61,21 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -79,10 +89,19 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -98,11 +117,21 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs index a190a52ec..e3a69e41c 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs @@ -43,11 +43,21 @@ void Act() callback.Compile().Invoke(FileSystem.DriveInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -61,10 +71,19 @@ void Act() callback.Compile().Invoke(FileSystem.DriveInfo); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } private static IEnumerable<(Expression>, string, bool)> diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs index 5c642347b..fc2bcec44 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs @@ -83,11 +83,21 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -103,10 +113,19 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -123,11 +142,21 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs index 311c89af0..46b937450 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs @@ -74,11 +74,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -91,10 +101,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs index 1cb742a3b..80c1f4cfc 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs @@ -61,11 +61,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -79,10 +89,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -98,11 +117,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs index f8c586db1..a8c9dda67 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs @@ -75,11 +75,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -93,10 +103,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -112,11 +131,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs index bf0f84888..f8922d44b 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs @@ -15,10 +15,19 @@ void Act() FileSystem.FileStream.New(path, FileMode.Append, FileAccess.ReadWrite); } - await That(Act).Throws() - .WithMessage().Containing(nameof(FileMode.Append)).And - .WithHResult(-2147024809).And - .WithParamName(Test.IsNetFramework ? null : "access"); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithMessage().Containing(nameof(FileMode.Append)).And + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithMessage().Containing(nameof(FileMode.Append)).And + .WithHResult(-2147024809).And + .WithParamName("access"); + } } [Test] @@ -78,11 +87,21 @@ void Act() FileSystem.FileStream.New(path, mode, access); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(Test.IsNetFramework ? null : "access").And - .Which.Whose(x => x.Message, - it => it.Contains(mode.ToString()).And.Contains(access.ToString())); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .Which.Whose(x => x.Message, + it => it.Contains(mode.ToString()).And.Contains(access.ToString())); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName("access").And + .Which.Whose(x => x.Message, + it => it.Contains(mode.ToString()).And.Contains(access.ToString())); + } } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs index cb844f58e..374158680 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs @@ -27,10 +27,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because($"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -44,9 +55,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because($"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs index cd59dd4b9..57f926812 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs @@ -63,8 +63,16 @@ void Act() fileSystemWatcher.Path = " "; } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(Test.IsNetFramework ? null : "Path"); + if (Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName("Path"); + } } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs index 8c957db1a..2b8fb8fa2 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs @@ -65,11 +65,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -83,10 +93,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -102,11 +121,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs index be482806b..f2534a6a7 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs @@ -34,11 +34,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -52,10 +62,19 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -71,11 +90,21 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs index b66b6716a..68a4f3b02 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs @@ -30,11 +30,21 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -48,10 +58,19 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - await That(Act).Throws() - .WithParamName(ignoreParamCheck ? null : paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck) + { + await That(Act).Throws() + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithParamName(paramName) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } [Test] @@ -67,11 +86,21 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(ignoreParamCheck || Test.IsNetFramework ? null : paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + if (ignoreParamCheck || Test.IsNetFramework) + { + await That(Act).Throws() + .WithHResult(-2147024809) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } + else + { + await That(Act).Throws() + .WithHResult(-2147024809).And + .WithParamName(paramName) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); + } } #region Helpers From 9ae1b11c54630f2a6587d93d3505610a69d9d733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 11 Oct 2026 08:51:09 +0200 Subject: [PATCH 3/4] refactor: use AndIf for platform-dependent exception checks Keeps each expectation in a single chain instead of duplicating it in an if/else just to skip the message or param name check on some platforms. --- .../AssertionHelpers.cs | 34 +++++++++++ .../FileSystem/Directory/DeleteTests.cs | 15 ++--- .../EnumerateFileSystemInfosTests.cs | 16 ++---- .../Directory/EnumerateFilesTests.cs | 16 ++---- .../FileSystem/Directory/ExceptionTests.cs | 57 +++++-------------- .../Directory/GetFileSystemInfosTests.cs | 16 ++---- .../FileSystem/Directory/GetFilesTests.cs | 16 ++---- .../FileSystem/DirectoryInfo/DeleteTests.cs | 17 ++---- .../DirectoryInfo/ExceptionTests.cs | 37 +++--------- .../DirectoryInfoFactory/ExceptionTests.cs | 57 +++++-------------- .../DriveInfoFactory/ExceptionTests.cs | 37 +++--------- .../FileSystem/File/CopyTests.cs | 30 +++------- .../FileSystem/File/ExceptionTests.cs | 57 +++++-------------- .../FileSystem/FileInfo/CopyToTests.cs | 15 ++--- .../FileSystem/FileInfo/ExceptionTests.cs | 37 +++--------- .../FileSystem/FileInfo/MoveToTests.cs | 30 +++------- .../FileInfoFactory/ExceptionTests.cs | 57 +++++-------------- .../FileStreamFactory/ExceptionTests.cs | 57 +++++-------------- .../FileSystem/FileStreamFactory/Tests.cs | 37 +++--------- .../FileSystemInfo/ExceptionTests.cs | 35 +++--------- .../FileSystem/FileSystemWatcher/PathTests.cs | 14 +---- .../ExceptionTests.cs | 57 +++++-------------- .../FileVersionInfoFactory/ExceptionTests.cs | 57 +++++-------------- .../FileSystem/Path/ExceptionTests.cs | 57 +++++-------------- 24 files changed, 237 insertions(+), 621 deletions(-) diff --git a/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs b/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs index 2ae82c46b..57f234a74 100644 --- a/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs +++ b/Tests/Helpers/Testably.Abstractions.TestHelpers/AssertionHelpers.cs @@ -4,6 +4,7 @@ using aweXpect.Core.Sources; using aweXpect.Delegates; using aweXpect.Formatting; +using aweXpect.Results; using System; using System.IO; using System.Text; @@ -13,6 +14,39 @@ namespace Testably.Abstractions.TestHelpers; public static class AssertionHelpers { + /// + /// Adds the to the only when the + /// is . + /// + public static AndOrResult AndIf( + this AndOrResult result, + bool condition, + Func expectations) + where TSelf : AndOrResult + { + if (condition) + { + expectations(result.And); + } + + return result; + } + + /// + public static ThatDelegateThrows AndIf( + this ThatDelegateThrows result, + bool condition, + Func, Expectation> expectations) + where TException : Exception? + { + if (condition) + { + expectations(result); + } + + return result; + } + /// /// Verifies that the throws either a or /// a with their corresponding HResult values. diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs index f9e1016bf..e20f3063d 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/DeleteTests.cs @@ -299,17 +299,10 @@ void Act() FileSystem.Directory.Delete(path); } - if (!Test.RunsOnWindows || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)); - } - else - { - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And - .WithMessage().Containing($"'{FileSystem.Path.Combine(BasePath, path)}'"); - } + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)) + .AndIf(Test.RunsOnWindows && !Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.Combine(BasePath, path)}'")); await That(FileSystem.Directory.Exists(path)).IsTrue(); } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs index cd508d3f9..6f17085e3 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFileSystemInfosTests.cs @@ -184,18 +184,10 @@ void Act() .FirstOrDefault(); } - // The searchPattern is not included in .NET Framework - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessage().Containing($"'{searchPattern}'"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + // The searchPattern is not included in .NET Framework + .AndIf(!Test.IsNetFramework, x => x.WithMessage().Containing($"'{searchPattern}'")); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs index f41034194..4e61d7830 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/EnumerateFilesTests.cs @@ -355,18 +355,10 @@ void Act() .FirstOrDefault(); } - // The searchPattern is not included in .NET Framework - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessage().Containing($"'{searchPattern}'"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + // The searchPattern is not included in .NET Framework + .AndIf(!Test.IsNetFramework, x => x.WithMessage().Containing($"'{searchPattern}'")); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs index 9119efb89..2b2a3208d 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs @@ -79,21 +79,11 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -109,19 +99,10 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -139,21 +120,11 @@ void Act() callback.Compile().Invoke(FileSystem.Directory); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } private static IEnumerable<(Expression>, string, bool, Func)> diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs index 3a7a35779..00ead8290 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs @@ -150,18 +150,10 @@ void Act() .FirstOrDefault(); } - // The searchPattern is not included in .NET Framework - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessage().Containing($"'{searchPattern}'"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + // The searchPattern is not included in .NET Framework + .AndIf(!Test.IsNetFramework, x => x.WithMessage().Containing($"'{searchPattern}'")); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs index aae56a4f2..764c83e3d 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFilesTests.cs @@ -229,18 +229,10 @@ void Act() .FirstOrDefault(); } - // The searchPattern is not included in .NET Framework - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithMessage().Containing($"'{searchPattern}'"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + // The searchPattern is not included in .NET Framework + .AndIf(!Test.IsNetFramework, x => x.WithMessage().Containing($"'{searchPattern}'")); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs index 3af3b261b..68886a8c9 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs @@ -132,18 +132,11 @@ void Act() sut.Delete(); } - // Path information only included in exception message on Windows and not in .NET Framework - if (!Test.RunsOnWindows || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)); - } - else - { - await That(Act).Throws() - .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)).And - .WithMessage().Containing($"'{sut.FullName}'"); - } + await That(Act).Throws() + .WithHResult(Test.DependsOnOS(windows: -2147024751, macOS: 66, linux: 39)) + // Path information only included in exception message on Windows and not in .NET Framework + .AndIf(Test.RunsOnWindows && !Test.IsNetFramework, + x => x.WithMessage().Containing($"'{sut.FullName}'")); await That(sut.Exists).IsTrue(); await That(FileSystem.Directory.Exists(sut.FullName)).IsTrue(); diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs index 264452f79..183c6c215 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs @@ -75,21 +75,11 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo.New("foo")); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -103,19 +93,10 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo.New("foo")); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs index 3f687d9f4..2c1808b1e 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfoFactory/ExceptionTests.cs @@ -61,21 +61,11 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -89,19 +79,10 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -117,21 +98,11 @@ void Act() callback.Compile().Invoke(FileSystem.DirectoryInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs index e3a69e41c..27cce6eef 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/DriveInfoFactory/ExceptionTests.cs @@ -43,21 +43,11 @@ void Act() callback.Compile().Invoke(FileSystem.DriveInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -71,19 +61,10 @@ void Act() callback.Compile().Invoke(FileSystem.DriveInfo); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } private static IEnumerable<(Expression>, string, bool)> diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs index 786dc28e4..0cd189e22 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/CopyTests.cs @@ -334,17 +334,10 @@ void Act() FileSystem.File.Copy(source, destinationName); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024893); - } - else - { - await That(Act).Throws() - .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(source)}'").And - .WithHResult(-2147024893); - } + await That(Act).Throws() + .WithHResult(-2147024893) + .AndIf(!Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.GetFullPath(source)}'")); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } @@ -414,17 +407,10 @@ void Act() FileSystem.File.Copy(sourceName, destinationName); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024894); - } - else - { - await That(Act).Throws() - .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And - .WithHResult(-2147024894); - } + await That(Act).Throws() + .WithHResult(-2147024894) + .AndIf(!Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'")); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs index fc2bcec44..fc33cc5cf 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/ExceptionTests.cs @@ -83,21 +83,11 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -113,19 +103,10 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -142,21 +123,11 @@ void Act() callback.Compile().Invoke(FileSystem.File); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs index e2a5edcf7..ff7b57881 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/CopyToTests.cs @@ -281,17 +281,10 @@ void Act() sut.CopyTo(destinationName); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024894); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024894).And - .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'"); - } + await That(Act).Throws() + .WithHResult(-2147024894) + .AndIf(!Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'")); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs index 46b937450..c07025547 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/ExceptionTests.cs @@ -74,21 +74,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -101,19 +91,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs index 29edeeef8..7a0127a12 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfo/MoveToTests.cs @@ -81,17 +81,10 @@ void Act() sut.MoveTo(sourceName); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024894); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024894).And - .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'"); - } + await That(Act).Throws() + .WithHResult(-2147024894) + .AndIf(!Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'")); await That(FileSystem.File.Exists(sourceName)).IsFalse(); } @@ -301,17 +294,10 @@ void Act() sut.MoveTo(destinationName); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024894); - } - else - { - await That(Act).Throws() - .WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'").And - .WithHResult(-2147024894); - } + await That(Act).Throws() + .WithHResult(-2147024894) + .AndIf(!Test.IsNetFramework, + x => x.WithMessage().Containing($"'{FileSystem.Path.GetFullPath(sourceName)}'")); await That(FileSystem.File.Exists(destinationName)).IsFalse(); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs index 80c1f4cfc..83252e42c 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileInfoFactory/ExceptionTests.cs @@ -61,21 +61,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -89,19 +79,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -117,21 +98,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs index a8c9dda67..72209f02a 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/ExceptionTests.cs @@ -75,21 +75,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -103,19 +93,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -131,21 +112,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileStream); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs index f8922d44b..e8fd28ed1 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileStreamFactory/Tests.cs @@ -15,19 +15,10 @@ void Act() FileSystem.FileStream.New(path, FileMode.Append, FileAccess.ReadWrite); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithMessage().Containing(nameof(FileMode.Append)).And - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithMessage().Containing(nameof(FileMode.Append)).And - .WithHResult(-2147024809).And - .WithParamName("access"); - } + await That(Act).Throws() + .WithMessage().Containing(nameof(FileMode.Append)).And + .WithHResult(-2147024809) + .AndIf(!Test.IsNetFramework, x => x.WithParamName("access")); } [Test] @@ -87,21 +78,11 @@ void Act() FileSystem.FileStream.New(path, mode, access); } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .Which.Whose(x => x.Message, - it => it.Contains(mode.ToString()).And.Contains(access.ToString())); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName("access").And - .Which.Whose(x => x.Message, - it => it.Contains(mode.ToString()).And.Contains(access.ToString())); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!Test.IsNetFramework, x => x.WithParamName("access")).And + .Which.Whose(x => x.Message, + it => it.Contains(mode.ToString()).And.Contains(access.ToString())); } [Test] diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs index 374158680..b40ccb631 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/ExceptionTests.cs @@ -27,21 +27,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because($"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -55,19 +44,9 @@ void Act() callback.Compile().Invoke(FileSystem.FileInfo.New("foo")); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because($"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs index 57f926812..ee119eb42 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcher/PathTests.cs @@ -63,16 +63,8 @@ void Act() fileSystemWatcher.Path = " "; } - if (Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName("Path"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!Test.IsNetFramework, x => x.WithParamName("Path")); } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs index 2b8fb8fa2..3757ac1ca 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemWatcherFactory/ExceptionTests.cs @@ -65,21 +65,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -93,19 +83,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -121,21 +102,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileSystemWatcher); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs index f2534a6a7..218799bf2 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfoFactory/ExceptionTests.cs @@ -34,21 +34,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -62,19 +52,10 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -90,21 +71,11 @@ void Act() callback.Compile().Invoke(FileSystem.FileVersionInfo); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs index 68a4f3b02..264a61bd1 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Path/ExceptionTests.cs @@ -30,21 +30,11 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has empty parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -58,19 +48,10 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - if (ignoreParamCheck) - { - await That(Act).Throws() - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithParamName(paramName) - .Because( - $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .AndIf(!ignoreParamCheck, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has `null` parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } [Test] @@ -86,21 +67,11 @@ void Act() callback.Compile().Invoke(FileSystem.Path); } - if (ignoreParamCheck || Test.IsNetFramework) - { - await That(Act).Throws() - .WithHResult(-2147024809) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } - else - { - await That(Act).Throws() - .WithHResult(-2147024809).And - .WithParamName(paramName) - .Because( - $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); - } + await That(Act).Throws() + .WithHResult(-2147024809) + .AndIf(!ignoreParamCheck && !Test.IsNetFramework, x => x.WithParamName(paramName)) + .Because( + $"\n{callback}\n has whitespace parameter for '{paramName}' (ignored: {ignoreParamCheck})"); } #region Helpers From e0d6a9028b2e0bfa65ab9f0affd5f169a566d119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 11 Oct 2026 08:54:06 +0200 Subject: [PATCH 4/4] fix: observe timer callback expectations in TimerTests Expectations inside the async void timer callbacks could fail without failing the test (aweXpect0005). --- .../TimeSystem/TimerTests.cs | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Tests/Testably.Abstractions.Tests/TimeSystem/TimerTests.cs b/Tests/Testably.Abstractions.Tests/TimeSystem/TimerTests.cs index dce3e0476..19d5e4027 100644 --- a/Tests/Testably.Abstractions.Tests/TimeSystem/TimerTests.cs +++ b/Tests/Testably.Abstractions.Tests/TimeSystem/TimerTests.cs @@ -172,6 +172,7 @@ public async Task Change_WithInt_ShouldResetTimer() using ManualResetEventSlim ms1 = new(); using ManualResetEventSlim ms2 = new(); using ManualResetEventSlim ms3 = new(); + bool ms2TimedOut = false; #pragma warning disable MA0147 // Avoid async void method for delegate // ReSharper disable once AsyncVoidLambda using (ITimer timer1 = TimeSystem.Timer.New(async _ => @@ -185,8 +186,10 @@ public async Task Change_WithInt_ShouldResetTimer() ms1.Set(); triggerTimes.Add((int)diff); // ReSharper disable once AccessToDisposedClosure - await That(ms2.Wait(ExpectSuccess, CancellationToken)) - .IsTrue(); + if (!ms2.Wait(ExpectSuccess, CancellationToken)) + { + ms2TimedOut = true; + } if (triggerTimes.Count > 3) { // ReSharper disable once CancellationToken @@ -223,6 +226,9 @@ await That(ms3.Wait(ExpectSuccess * TimerMultiplier, CancellationToken)).IsTrue(); } + await That(ms2TimedOut).IsFalse() + .Because("the timer callback should not time out while waiting for the second timer"); + if (triggerTimes[0] < 30 * TimerMultiplier) { triggerTimes.RemoveAt(0); @@ -247,6 +253,7 @@ public async Task Change_WithLong_ShouldResetTimer() using ManualResetEventSlim ms1 = new(); using ManualResetEventSlim ms2 = new(); using ManualResetEventSlim ms3 = new(); + bool ms2TimedOut = false; #pragma warning disable MA0147 // Avoid async void method for delegate // ReSharper disable once AsyncVoidLambda using (ITimer timer1 = TimeSystem.Timer.New(async _ => @@ -260,8 +267,10 @@ public async Task Change_WithLong_ShouldResetTimer() ms1.Set(); triggerTimes.Add((int)diff); // ReSharper disable once AccessToDisposedClosure - await That(ms2.Wait(ExpectSuccess, CancellationToken)) - .IsTrue(); + if (!ms2.Wait(ExpectSuccess, CancellationToken)) + { + ms2TimedOut = true; + } if (triggerTimes.Count > 3) { // ReSharper disable once AccessToDisposedClosure @@ -297,6 +306,9 @@ await That(ms2.Wait(ExpectSuccess, CancellationToken)) await That(ms3.Wait(ExpectSuccess, CancellationToken)).IsTrue(); } + await That(ms2TimedOut).IsFalse() + .Because("the timer callback should not time out while waiting for the second timer"); + if (triggerTimes[0] < 30 * TimerMultiplier) { triggerTimes.RemoveAt(0); @@ -321,6 +333,7 @@ public async Task Change_WithTimeSpan_ShouldResetTimer() using ManualResetEventSlim ms1 = new(); using ManualResetEventSlim ms2 = new(); using ManualResetEventSlim ms3 = new(); + bool ms2TimedOut = false; #pragma warning disable MA0147 // Avoid async void method for delegate // ReSharper disable once AsyncVoidLambda using (ITimer timer1 = TimeSystem.Timer.New(async _ => @@ -334,8 +347,10 @@ public async Task Change_WithTimeSpan_ShouldResetTimer() ms1.Set(); triggerTimes.Add((int)diff); // ReSharper disable once AccessToDisposedClosure - await That(ms2.Wait(ExpectSuccess, CancellationToken)) - .IsTrue(); + if (!ms2.Wait(ExpectSuccess, CancellationToken)) + { + ms2TimedOut = true; + } if (triggerTimes.Count > 3) { // ReSharper disable once AccessToDisposedClosure @@ -374,6 +389,9 @@ await That(ms2.Wait(ExpectSuccess, CancellationToken)) await That(ms3.Wait(ExpectSuccess, CancellationToken)).IsTrue(); } + await That(ms2TimedOut).IsFalse() + .Because("the timer callback should not time out while waiting for the second timer"); + if (triggerTimes[0] < 30 * TimerMultiplier) { triggerTimes.RemoveAt(0);