diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateTempSubdirectoryTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateTempSubdirectoryTests.cs new file mode 100644 index 000000000..258bb75ef --- /dev/null +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateTempSubdirectoryTests.cs @@ -0,0 +1,76 @@ +using Testably.Abstractions.Testing.FileSystemInitializer; +#if FEATURE_FILESYSTEM_NET7 + +namespace Testably.Abstractions.Tests.FileSystem.Directory; + +// ReSharper disable once PartialTypeWithSinglePart +public abstract partial class CreateTempSubdirectoryTests + : FileSystemTestBase + where TFileSystem : IFileSystem +{ + [SkippableFact] + public void CreateTempSubdirectory_ShouldCreateTheTemporaryDirectory() + { + IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(); + + result.Exists.Should().BeTrue(); + result.FullName.Should().StartWith(FileSystem.Path.GetTempPath()); + } + + [SkippableFact] + public void CreateTempSubdirectory_ShouldHaveCharactersFromUpperLowerOrDigits() + { + IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(); + + string name = FileSystem.Path.GetFileName(result.FullName); + for (int i = 0; i < name.Length; i++) + { + char c = name[i]; + if (!char.IsUpper(c) && !char.IsLower(c) && !char.IsDigit(c)) + { + throw new TestingException( + $"Character '{c}' at position {i} of directory {name} is not upper, lower or digit"); + } + } + } + + [SkippableFact] + public void + CreateTempSubdirectory_WithPrefix_ShouldCreateDirectoryWithGivenPrefixInTempDirectory() + { + IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory("foo-"); + + FileSystem.Directory.Exists(result.FullName).Should().BeTrue(); + FileSystem.Path.GetFileName(result.FullName).Should().StartWith("foo-"); + result.FullName.Should().StartWith(FileSystem.Path.GetTempPath()); + } + + [SkippableTheory] + [AutoData] + public void CreateTempSubdirectory_WithPrefix_ShouldEndWithCharactersFromUpperLowerOfDigits( + string prefix) + { + IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(prefix); + + string name = FileSystem.Path.GetFileName(result.FullName); + for (int i = prefix.Length; i < name.Length; i++) + { + char c = name[i]; + if (!char.IsUpper(c) && !char.IsLower(c) && !char.IsDigit(c)) + { + throw new TestingException( + $"Character '{c}' at position {i} of directory {name} is not upper, lower or digit"); + } + } + } + + [SkippableTheory] + [AutoData] + public void CreateTempSubdirectory_WithPrefix_ShouldStartWithPrefix(string prefix) + { + IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(prefix); + + result.Name.Should().StartWith(prefix); + } +} +#endif diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.cs index 29b345af5..56dde6ef8 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.cs @@ -7,24 +7,6 @@ public abstract partial class Tests : FileSystemTestBase where TFileSystem : IFileSystem { -#if FEATURE_FILESYSTEM_NET7 - [SkippableFact] - public void CreateTempSubdirectory_ShouldCreateTheTemporaryDirectory() - { - IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(); - - result.Exists.Should().BeTrue(); - } - - [SkippableTheory] - [AutoData] - public void CreateTempSubdirectory_WithPrefix_ShouldStartWithPrefix(string prefix) - { - IDirectoryInfo result = FileSystem.Directory.CreateTempSubdirectory(prefix); - - result.Name.Should().StartWith(prefix); - } -#endif [SkippableFact] public void GetCurrentDirectory_ShouldNotBeRooted() {