diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.DoesNotHaveAttribute.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.DoesNotHaveAttribute.Tests.cs index 70aac01..835db52 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.DoesNotHaveAttribute.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.DoesNotHaveAttribute.Tests.cs @@ -75,6 +75,7 @@ async Task Act() } await That(Act).Throws() + .WithMessage("The unexpected file attributes must include at least one flag.*").AsWildcard().And .WithParamName("unexpected"); } } diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasAttribute.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasAttribute.Tests.cs index 4e5cf67..14e1e17 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasAttribute.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasAttribute.Tests.cs @@ -61,6 +61,7 @@ async Task Act() } await That(Act).Throws() + .WithMessage("The expected file attributes must include at least one flag.*").AsWildcard().And .WithParamName("expected"); } } diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasCreationTime.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasCreationTime.Tests.cs index 33dbdce..19dee33 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasCreationTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasCreationTime.Tests.cs @@ -48,6 +48,28 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndCreationTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + fileSystem.Directory.CreateDirectory("foo"); + fileSystem.Directory.SetCreationTimeUtc("foo", expected); + IDirectoryInfo dirInfo = fileSystem.DirectoryInfo.New("foo"); + + async Task Act() + { + await That(dirInfo).DoesNotComplyWith(d => d.HasCreationTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that dirInfo + does not have creation time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastAccessTime.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastAccessTime.Tests.cs index 34826b9..ba4133f 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastAccessTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastAccessTime.Tests.cs @@ -48,6 +48,28 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndLastAccessTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + fileSystem.Directory.CreateDirectory("foo"); + fileSystem.Directory.SetLastAccessTimeUtc("foo", expected); + IDirectoryInfo dirInfo = fileSystem.DirectoryInfo.New("foo"); + + async Task Act() + { + await That(dirInfo).DoesNotComplyWith(d => d.HasLastAccessTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that dirInfo + does not have last access time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastWriteTime.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastWriteTime.Tests.cs index b01c830..9822418 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastWriteTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.HasLastWriteTime.Tests.cs @@ -48,6 +48,28 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndLastWriteTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + fileSystem.Directory.CreateDirectory("foo"); + fileSystem.Directory.SetLastWriteTimeUtc("foo", expected); + IDirectoryInfo dirInfo = fileSystem.DirectoryInfo.New("foo"); + + async Task Act() + { + await That(dirInfo).DoesNotComplyWith(d => d.HasLastWriteTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that dirInfo + does not have last write time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/DirectoryInfo.WhoseParent.Tests.cs b/Tests/aweXpect.Testably.Tests/DirectoryInfo.WhoseParent.Tests.cs index b319798..c0ff290 100644 --- a/Tests/aweXpect.Testably.Tests/DirectoryInfo.WhoseParent.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/DirectoryInfo.WhoseParent.Tests.cs @@ -53,7 +53,8 @@ async Task Act() await That(rootDirInfo).WhoseParent.IsNotEmpty(); } - await That(Act).Throws(); + await That(Act).Throws() + .WithMessage("Cannot assert on the parent of a root directory because it has no parent."); } } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.DoesNotHaveAttribute.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.DoesNotHaveAttribute.Tests.cs index e45f1cd..828c2f2 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.DoesNotHaveAttribute.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.DoesNotHaveAttribute.Tests.cs @@ -76,6 +76,7 @@ async Task Act() } await That(Act).Throws() + .WithMessage("The unexpected file attributes must include at least one flag.*").AsWildcard().And .WithParamName("unexpected"); } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.HasAttribute.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.HasAttribute.Tests.cs index b28f571..e3932b2 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.HasAttribute.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.HasAttribute.Tests.cs @@ -62,6 +62,7 @@ async Task Act() } await That(Act).Throws() + .WithMessage("The expected file attributes must include at least one flag.*").AsWildcard().And .WithParamName("expected"); } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.HasCreationTime.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.HasCreationTime.Tests.cs index 2d21257..ec1892e 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.HasCreationTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.HasCreationTime.Tests.cs @@ -87,6 +87,29 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndCreationTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + string path = "foo.txt"; + fileSystem.File.WriteAllText(path, ""); + fileSystem.File.SetCreationTimeUtc(path, expected); + IFileInfo fileInfo = fileSystem.FileInfo.New(path); + + async Task Act() + { + await That(fileInfo).DoesNotComplyWith(f => f.HasCreationTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that fileInfo + does not have creation time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.HasExtension.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.HasExtension.Tests.cs index 94705f0..a92bb1f 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.HasExtension.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.HasExtension.Tests.cs @@ -49,6 +49,27 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndExtensionMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + // ReSharper disable once MethodHasAsyncOverload + fileSystem.File.WriteAllText("foo.txt", ""); + IFileInfo fileInfo = fileSystem.FileInfo.New("foo.txt"); + + async Task Act() + { + await That(fileInfo).DoesNotComplyWith(f => f.HasExtension(".txt")); + } + + await That(Act).ThrowsException() + .WithMessage(""" + Expected that fileInfo + does not have extension not equal to ".txt", + but it did + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.HasLastAccessTime.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.HasLastAccessTime.Tests.cs index 7fbb8be..dc46ee2 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.HasLastAccessTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.HasLastAccessTime.Tests.cs @@ -50,6 +50,29 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndLastAccessTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + string path = "foo.txt"; + fileSystem.File.WriteAllText(path, ""); + fileSystem.File.SetLastAccessTimeUtc(path, expected); + IFileInfo fileInfo = fileSystem.FileInfo.New(path); + + async Task Act() + { + await That(fileInfo).DoesNotComplyWith(f => f.HasLastAccessTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that fileInfo + does not have last access time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } } diff --git a/Tests/aweXpect.Testably.Tests/FileInfo.HasLastWriteTime.Tests.cs b/Tests/aweXpect.Testably.Tests/FileInfo.HasLastWriteTime.Tests.cs index c3b4324..df9c1dc 100644 --- a/Tests/aweXpect.Testably.Tests/FileInfo.HasLastWriteTime.Tests.cs +++ b/Tests/aweXpect.Testably.Tests/FileInfo.HasLastWriteTime.Tests.cs @@ -50,6 +50,29 @@ async Task Act() await That(Act).DoesNotThrow(); } + + [Fact] + public async Task WhenNegatedAndLastWriteTimeMatches_ShouldFail() + { + MockFileSystem fileSystem = new(); + DateTime expected = CurrentTime().ToUniversalTime(); + string path = "foo.txt"; + fileSystem.File.WriteAllText(path, ""); + fileSystem.File.SetLastWriteTimeUtc(path, expected); + IFileInfo fileInfo = fileSystem.FileInfo.New(path); + + async Task Act() + { + await That(fileInfo).DoesNotComplyWith(f => f.HasLastWriteTime(expected)); + } + + await That(Act).ThrowsException() + .WithMessage($""" + Expected that fileInfo + does not have last write time equal to {Formatter.Format(expected)}, + but it was {Formatter.Format(expected)} + """); + } } } }