diff --git a/Source/Testably.Abstractions.Interface/Helpers/PathSystemBase.cs b/Source/Testably.Abstractions.Interface/Helpers/PathSystemBase.cs index c43f7d1e7..577b029f4 100644 --- a/Source/Testably.Abstractions.Interface/Helpers/PathSystemBase.cs +++ b/Source/Testably.Abstractions.Interface/Helpers/PathSystemBase.cs @@ -1,9 +1,7 @@ -using System.Diagnostics.CodeAnalysis; +using System; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.IO.Abstractions; -#if !NETSTANDARD2_0 -using System; -#endif namespace Testably.Abstractions.Helpers; @@ -12,6 +10,11 @@ namespace Testably.Abstractions.Helpers; /// /// Implements /// +#if NETSTANDARD2_0 +[Obsolete] +#else +[Obsolete("Will be removed in a future version!")] +#endif public abstract class PathSystemBase : IPath { /// diff --git a/Source/Testably.Abstractions.Testing/FileSystem/DirectoryInfoMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/DirectoryInfoMock.cs index a4bfecd7e..e0322ea9b 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/DirectoryInfoMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/DirectoryInfoMock.cs @@ -87,7 +87,7 @@ public IDirectoryInfo CreateSubdirectory(string path) DirectoryInfoMock directory = New( _fileSystem.Storage.GetLocation( - _fileSystem.Path.Combine(FullName, path + _fileSystem.Execute.Path.Combine(FullName, path .EnsureValidFormat(_fileSystem, nameof(path), _fileSystem.Execute.IsWindows && !_fileSystem.Execute.IsNetFramework))), _fileSystem); diff --git a/Source/Testably.Abstractions.Testing/FileSystem/DirectoryMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/DirectoryMock.cs index 89976e481..5324b4101 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/DirectoryMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/DirectoryMock.cs @@ -82,10 +82,10 @@ public IDirectoryInfo CreateTempSubdirectory(string? prefix = null) do { - string localBasePath = _fileSystem.Path.Combine( - _fileSystem.Path.GetTempPath(), - (prefix ?? "") + _fileSystem.Path.GetFileNameWithoutExtension( - _fileSystem.Path.GetRandomFileName())); + string localBasePath = _fileSystem.Execute.Path.Combine( + _fileSystem.Execute.Path.GetTempPath(), + (prefix ?? "") + _fileSystem.Execute.Path.GetFileNameWithoutExtension( + _fileSystem.Execute.Path.GetRandomFileName())); _fileSystem.Execute.OnMac(() => localBasePath = "/private" + localBasePath); basePath = localBasePath; } while (_fileSystem.Directory.Exists(basePath)); @@ -361,8 +361,8 @@ public string GetDirectoryRoot(string path) using IDisposable registration = RegisterMethod(nameof(GetDirectoryRoot), path); - return _fileSystem.Path.GetPathRoot( - _fileSystem.Path.GetFullPath(path)) ?? + return _fileSystem.Execute.Path.GetPathRoot( + _fileSystem.Execute.Path.GetFullPath(path)) ?? throw ExceptionFactory.PathIsEmpty(nameof(path)); } @@ -584,7 +584,7 @@ public void SetCurrentDirectory(string path) if (!directoryInfo.Exists) { throw ExceptionFactory.DirectoryNotFound( - FileSystem.Path.GetFullPath(path)); + _fileSystem.Execute.Path.GetFullPath(path)); } _fileSystem.Storage.CurrentDirectory = directoryInfo.FullName; @@ -692,18 +692,18 @@ private static void ThrowMissingFileCreatedTimeException(MockFileSystem fileSyst fileSystem.Execute.OnMac( () => throw ExceptionFactory.DirectoryNotFound( - fileSystem.Path.GetFullPath(path)), + fileSystem.Execute.Path.GetFullPath(path)), () => throw ExceptionFactory.FileNotFound( - fileSystem.Path.GetFullPath(path))); + fileSystem.Execute.Path.GetFullPath(path))); #else fileSystem.Execute.OnWindows( () => throw ExceptionFactory.FileNotFound( - fileSystem.Path.GetFullPath(path)), + fileSystem.Execute.Path.GetFullPath(path)), () => throw ExceptionFactory.DirectoryNotFound( - fileSystem.Path.GetFullPath(path))); + fileSystem.Execute.Path.GetFullPath(path))); #endif } @@ -713,15 +713,15 @@ private static void ThrowMissingFileLastAccessOrLastWriteTimeException( { #if NET7_0_OR_GREATER throw ExceptionFactory.FileNotFound( - fileSystem.Path.GetFullPath(path)); + fileSystem.Execute.Path.GetFullPath(path)); #else fileSystem.Execute.OnWindows( () => throw ExceptionFactory.FileNotFound( - fileSystem.Path.GetFullPath(path)), + fileSystem.Execute.Path.GetFullPath(path)), () => throw ExceptionFactory.DirectoryNotFound( - fileSystem.Path.GetFullPath(path))); + fileSystem.Execute.Path.GetFullPath(path))); #endif } } diff --git a/Source/Testably.Abstractions.Testing/FileSystem/DriveInfoMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/DriveInfoMock.cs index 098e7fc70..fe396c8a8 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/DriveInfoMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/DriveInfoMock.cs @@ -46,7 +46,7 @@ private DriveInfoMock(string driveName, MockFileSystem fileSystem) if (driveName.IsUncPath(_fileSystem)) { IsUncPath = true; - driveName = new string(fileSystem.Path.DirectorySeparatorChar, 2) + + driveName = new string(fileSystem.Execute.Path.DirectorySeparatorChar, 2) + GetTopmostParentDirectory(driveName.Substring(2)); } else @@ -259,7 +259,7 @@ private string GetTopmostParentDirectory(string path) { while (true) { - string? child = FileSystem.Path.GetDirectoryName(path); + string? child = _fileSystem.Execute.Path.GetDirectoryName(path); if (string.IsNullOrEmpty(child)) { break; @@ -283,14 +283,14 @@ private static string ValidateDriveLetter(string driveName, return $"{driveName.ToUpperInvariant()}:\\"; } - if (fileSystem.Path.IsPathRooted(driveName)) + if (fileSystem.Execute.Path.IsPathRooted(driveName)) { return fileSystem.Execute.OnWindows(() => { - string rootedPath = fileSystem.Path.GetPathRoot(driveName)!; + string rootedPath = fileSystem.Execute.Path.GetPathRoot(driveName)!; return $"{rootedPath.TrimEnd('\\')}\\"; }, - () => fileSystem.Path.GetPathRoot(driveName)!); + () => fileSystem.Execute.Path.GetPathRoot(driveName)!); } throw ExceptionFactory.InvalidDriveName(); diff --git a/Source/Testably.Abstractions.Testing/FileSystem/FileInfoMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/FileInfoMock.cs index 348c0d6fa..e172f1895 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/FileInfoMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/FileInfoMock.cs @@ -113,7 +113,7 @@ public override string Name { using IDisposable registration = RegisterProperty(nameof(Name), PropertyAccess.Get); - if (Location.FullPath.EndsWith(FileSystem.Path.DirectorySeparatorChar)) + if (Location.FullPath.EndsWith(_fileSystem.Execute.Path.DirectorySeparatorChar)) { return string.Empty; } diff --git a/Source/Testably.Abstractions.Testing/FileSystem/FileStreamMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/FileStreamMock.cs index 2ba2fbe2d..0b410bb80 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/FileStreamMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/FileStreamMock.cs @@ -188,7 +188,7 @@ private FileStreamMock(MemoryStream stream, FileOptions options) : base( stream, - path == null ? "" : fileSystem.Path.GetFullPath(path), + path == null ? "" : fileSystem.Execute.Path.GetFullPath(path), (options & FileOptions.Asynchronous) != 0) { ThrowIfInvalidModeAccess(mode, access); @@ -210,7 +210,7 @@ private FileStreamMock(MemoryStream stream, _mode.Equals(FileMode.Truncate)) { throw ExceptionFactory.FileNotFound( - _fileSystem.Path.GetFullPath(base.Name)); + _fileSystem.Execute.Path.GetFullPath(base.Name)); } file = _fileSystem.Storage.GetOrCreateContainer(_location, @@ -222,15 +222,15 @@ private FileStreamMock(MemoryStream stream, _fileSystem.Execute.OnWindows( () => throw ExceptionFactory.AccessToPathDenied( - _fileSystem.Path.GetFullPath(base.Name)), + _fileSystem.Execute.Path.GetFullPath(base.Name)), () => throw ExceptionFactory.FileAlreadyExists( - _fileSystem.Path.GetFullPath(base.Name), 17)); + _fileSystem.Execute.Path.GetFullPath(base.Name), 17)); } else if (_mode.Equals(FileMode.CreateNew)) { throw ExceptionFactory.FileAlreadyExists( - _fileSystem.Path.GetFullPath(Name), + _fileSystem.Execute.Path.GetFullPath(Name), _fileSystem.Execute.IsWindows ? -2147024816 : 17); } diff --git a/Source/Testably.Abstractions.Testing/FileSystem/FileSystemInfoMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/FileSystemInfoMock.cs index 265dd6822..ef30cb8f9 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/FileSystemInfoMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/FileSystemInfoMock.cs @@ -166,7 +166,7 @@ public string Extension return "."; } - return _fileSystem.Path.GetExtension(Location.FullPath); + return _fileSystem.Execute.Path.GetExtension(Location.FullPath); } } @@ -282,11 +282,11 @@ public virtual string Name { using IDisposable registration = RegisterProperty(nameof(Name), PropertyAccess.Get); - return _fileSystem.Path.GetPathRoot(Location.FullPath) == Location.FullPath + return _fileSystem.Execute.Path.GetPathRoot(Location.FullPath) == Location.FullPath ? Location.FullPath - : _fileSystem.Path.GetFileName(Location.FullPath.TrimEnd( - _fileSystem.Path.DirectorySeparatorChar, - _fileSystem.Path.AltDirectorySeparatorChar)); + : _fileSystem.Execute.Path.GetFileName(Location.FullPath.TrimEnd( + _fileSystem.Execute.Path.DirectorySeparatorChar, + _fileSystem.Execute.Path.AltDirectorySeparatorChar)); } } diff --git a/Source/Testably.Abstractions.Testing/FileSystem/FileSystemWatcherMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/FileSystemWatcherMock.cs index 029c2341c..686332b97 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/FileSystemWatcherMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/FileSystemWatcherMock.cs @@ -317,7 +317,7 @@ protected override void Dispose(bool disposing) private bool MatchesFilter(ChangeDescription changeDescription) { - string fullPath = _fileSystem.Path.GetFullPath(Path); + string fullPath = _fileSystem.Execute.Path.GetFullPath(Path); if (IncludeSubdirectories) { if (!changeDescription.Path.StartsWith(fullPath)) @@ -325,7 +325,7 @@ private bool MatchesFilter(ChangeDescription changeDescription) return false; } } - else if (FileSystem.Path.GetDirectoryName(changeDescription.Path) != fullPath) + else if (_fileSystem.Execute.Path.GetDirectoryName(changeDescription.Path) != fullPath) { return false; } @@ -344,7 +344,7 @@ private bool MatchesFilter(ChangeDescription changeDescription) EnumerationOptionsHelper.MatchesPattern( _fileSystem.Execute, EnumerationOptionsHelper.Compatible, - _fileSystem.Path.GetFileName(changeDescription.Path), + _fileSystem.Execute.Path.GetFileName(changeDescription.Path), filter)); } @@ -501,10 +501,10 @@ private string TransformPathAndName( string? transformedName = changeDescriptionName; string? path = changeDescriptionPath; if (transformedName == null || - _fileSystem.Path.IsPathRooted(changeDescriptionName)) + _fileSystem.Execute.Path.IsPathRooted(changeDescriptionName)) { - transformedName = _fileSystem.Path.GetFileName(changeDescriptionPath); - path = _fileSystem.Path.GetDirectoryName(path); + transformedName = _fileSystem.Execute.Path.GetFileName(changeDescriptionPath); + path = _fileSystem.Execute.Path.GetDirectoryName(path); } else if (path.EndsWith(transformedName)) { diff --git a/Source/Testably.Abstractions.Testing/FileSystem/PathMock.cs b/Source/Testably.Abstractions.Testing/FileSystem/PathMock.cs index 2881c6534..69d8e24b1 100644 --- a/Source/Testably.Abstractions.Testing/FileSystem/PathMock.cs +++ b/Source/Testably.Abstractions.Testing/FileSystem/PathMock.cs @@ -1,334 +1,302 @@ using System; using System.Diagnostics.CodeAnalysis; -using System.IO; -using Testably.Abstractions.Helpers; -using Testably.Abstractions.Testing.Helpers; using Testably.Abstractions.Testing.Statistics; -#if FEATURE_FILESYSTEM_NET7 -using Testably.Abstractions.Testing.Storage; -#endif namespace Testably.Abstractions.Testing.FileSystem; -internal sealed class PathMock : PathSystemBase +internal sealed class PathMock : IPath { + private readonly MockFileSystem _fileSystem; + + internal PathMock(MockFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + + #region IPath Members + /// - public override char AltDirectorySeparatorChar + public char AltDirectorySeparatorChar { get { using IDisposable register = RegisterProperty(nameof(AltDirectorySeparatorChar)); - return base.AltDirectorySeparatorChar; + return _fileSystem.Execute.Path.AltDirectorySeparatorChar; } } /// - public override char DirectorySeparatorChar + public char DirectorySeparatorChar { get { using IDisposable register = RegisterProperty(nameof(DirectorySeparatorChar)); - return base.DirectorySeparatorChar; + return _fileSystem.Execute.Path.DirectorySeparatorChar; } } + /// + public IFileSystem FileSystem + => _fileSystem; + /// - public override char PathSeparator + public char PathSeparator { get { using IDisposable register = RegisterProperty(nameof(PathSeparator)); - return base.PathSeparator; + return _fileSystem.Execute.Path.PathSeparator; } } /// - public override char VolumeSeparatorChar + public char VolumeSeparatorChar { get { using IDisposable register = RegisterProperty(nameof(VolumeSeparatorChar)); - return base.VolumeSeparatorChar; + return _fileSystem.Execute.Path.VolumeSeparatorChar; } } - private readonly MockFileSystem _fileSystem; - - internal PathMock(MockFileSystem fileSystem) - : base(fileSystem) - { - _fileSystem = fileSystem; - } - /// [return: NotNullIfNotNull("path")] - public override string? ChangeExtension(string? path, string? extension) + public string? ChangeExtension(string? path, string? extension) { using IDisposable register = RegisterMethod(nameof(ChangeExtension), path, extension); - return base.ChangeExtension(path, extension); + return _fileSystem.Execute.Path.ChangeExtension(path, extension); } /// - public override string Combine(string path1, string path2) + public string Combine(string path1, string path2) { using IDisposable register = RegisterMethod(nameof(Combine), path1, path2); - return base.Combine(path1, path2); + return _fileSystem.Execute.Path.Combine(path1, path2); } /// - public override string Combine(string path1, string path2, string path3) + public string Combine(string path1, string path2, string path3) { using IDisposable register = RegisterMethod(nameof(Combine), path1, path2, path3); - return base.Combine(path1, path2, path3); + return _fileSystem.Execute.Path.Combine(path1, path2, path3); } /// - public override string Combine(string path1, string path2, string path3, string path4) + public string Combine(string path1, string path2, string path3, string path4) { using IDisposable register = RegisterMethod(nameof(Combine), path1, path2, path3, path4); - return base.Combine(path1, path2, path3, path4); + return _fileSystem.Execute.Path.Combine(path1, path2, path3, path4); } /// - public override string Combine(params string[] paths) + public string Combine(params string[] paths) { using IDisposable register = RegisterMethod(nameof(Combine), paths); - return base.Combine(paths); + return _fileSystem.Execute.Path.Combine(paths); } #if FEATURE_PATH_ADVANCED /// - public override bool EndsInDirectorySeparator(ReadOnlySpan path) + public bool EndsInDirectorySeparator(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(EndsInDirectorySeparator), path); - return base.EndsInDirectorySeparator(path); + return _fileSystem.Execute.Path.EndsInDirectorySeparator(path); } #endif #if FEATURE_PATH_ADVANCED /// - public override bool EndsInDirectorySeparator(string path) + public bool EndsInDirectorySeparator(string path) { using IDisposable register = RegisterMethod(nameof(EndsInDirectorySeparator), path); - return base.EndsInDirectorySeparator(path); + return _fileSystem.Execute.Path.EndsInDirectorySeparator(path); } #endif #if FEATURE_FILESYSTEM_NET7 /// - public override bool Exists([NotNullWhen(true)] string? path) + public bool Exists([NotNullWhen(true)] string? path) { using IDisposable register = RegisterMethod(nameof(Exists), path); - if (string.IsNullOrEmpty(path)) - { - return false; - } - - return _fileSystem.Storage.GetContainer(_fileSystem.Storage.GetLocation(path)) - is not NullContainer; + return _fileSystem.Execute.Path.Exists(path); } #endif #if FEATURE_SPAN /// - public override ReadOnlySpan GetDirectoryName(ReadOnlySpan path) + public ReadOnlySpan GetDirectoryName(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(GetDirectoryName), path); - return base.GetDirectoryName(path); + return _fileSystem.Execute.Path.GetDirectoryName(path); } #endif /// - public override string? GetDirectoryName(string? path) + public string? GetDirectoryName(string? path) { using IDisposable register = RegisterMethod(nameof(GetDirectoryName), path); - return base.GetDirectoryName(path); + return _fileSystem.Execute.Path.GetDirectoryName(path); } #if FEATURE_SPAN /// - public override ReadOnlySpan GetExtension(ReadOnlySpan path) + public ReadOnlySpan GetExtension(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(GetExtension), path); - return base.GetExtension(path); + return _fileSystem.Execute.Path.GetExtension(path); } #endif /// [return: NotNullIfNotNull("path")] - public override string? GetExtension(string? path) + public string? GetExtension(string? path) { using IDisposable register = RegisterMethod(nameof(GetExtension), path); - return base.GetExtension(path); + return _fileSystem.Execute.Path.GetExtension(path); } #if FEATURE_SPAN /// - public override ReadOnlySpan GetFileName(ReadOnlySpan path) + public ReadOnlySpan GetFileName(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(GetFileName), path); - return base.GetFileName(path); + return _fileSystem.Execute.Path.GetFileName(path); } #endif /// [return: NotNullIfNotNull("path")] - public override string? GetFileName(string? path) + public string? GetFileName(string? path) { using IDisposable register = RegisterMethod(nameof(GetFileName), path); - return base.GetFileName(path); + return _fileSystem.Execute.Path.GetFileName(path); } #if FEATURE_SPAN /// - public override ReadOnlySpan GetFileNameWithoutExtension(ReadOnlySpan path) + public ReadOnlySpan GetFileNameWithoutExtension(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(GetFileNameWithoutExtension), path); - return base.GetFileNameWithoutExtension(path); + return _fileSystem.Execute.Path.GetFileNameWithoutExtension(path); } #endif /// [return: NotNullIfNotNull("path")] - public override string? GetFileNameWithoutExtension(string? path) + public string? GetFileNameWithoutExtension(string? path) { using IDisposable register = RegisterMethod(nameof(GetFileNameWithoutExtension), path); - return base.GetFileNameWithoutExtension(path); + return _fileSystem.Execute.Path.GetFileNameWithoutExtension(path); } /// - public override string GetFullPath(string path) + public string GetFullPath(string path) { using IDisposable register = RegisterMethod(nameof(GetFullPath), path); - path.EnsureValidArgument(_fileSystem, nameof(path)); - - string? pathRoot = Path.GetPathRoot(path); - string? directoryRoot = Path.GetPathRoot(_fileSystem.Storage.CurrentDirectory); - if (!string.IsNullOrEmpty(pathRoot) && !string.IsNullOrEmpty(directoryRoot)) - { - if (char.ToUpperInvariant(pathRoot[0]) != char.ToUpperInvariant(directoryRoot[0])) - { - return Path.GetFullPath(path); - } - - if (pathRoot.Length < directoryRoot.Length) - { - path = path.Substring(pathRoot.Length); - } - } - - return Path.GetFullPath(Path.Combine( - _fileSystem.Storage.CurrentDirectory, - path)); + return _fileSystem.Execute.Path.GetFullPath(path); } #if FEATURE_PATH_RELATIVE /// - public override string GetFullPath(string path, string basePath) + public string GetFullPath(string path, string basePath) { using IDisposable register = RegisterMethod(nameof(GetFullPath), path, basePath); - return base.GetFullPath(path, basePath); + return _fileSystem.Execute.Path.GetFullPath(path, basePath); } #endif /// - public override char[] GetInvalidFileNameChars() + public char[] GetInvalidFileNameChars() { using IDisposable register = RegisterMethod(nameof(GetInvalidFileNameChars)); - return base.GetInvalidFileNameChars(); + return _fileSystem.Execute.Path.GetInvalidFileNameChars(); } /// - public override char[] GetInvalidPathChars() + public char[] GetInvalidPathChars() { using IDisposable register = RegisterMethod(nameof(GetInvalidPathChars)); - return base.GetInvalidPathChars(); + return _fileSystem.Execute.Path.GetInvalidPathChars(); } #if FEATURE_SPAN /// - public override ReadOnlySpan GetPathRoot(ReadOnlySpan path) + public ReadOnlySpan GetPathRoot(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(GetPathRoot), path); - return base.GetPathRoot(path); + return _fileSystem.Execute.Path.GetPathRoot(path); } #endif /// - public override string? GetPathRoot(string? path) + public string? GetPathRoot(string? path) { using IDisposable register = RegisterMethod(nameof(GetPathRoot), path); - return base.GetPathRoot(path); + return _fileSystem.Execute.Path.GetPathRoot(path); } /// - public override string GetRandomFileName() + public string GetRandomFileName() { using IDisposable register = RegisterMethod(nameof(GetRandomFileName)); - return base.GetRandomFileName(); + return _fileSystem.Execute.Path.GetRandomFileName(); } #if FEATURE_PATH_RELATIVE /// - public override string GetRelativePath(string relativeTo, string path) + public string GetRelativePath(string relativeTo, string path) { using IDisposable register = RegisterMethod(nameof(GetRelativePath), relativeTo, path); - relativeTo.EnsureValidArgument(_fileSystem, nameof(relativeTo)); - path.EnsureValidArgument(_fileSystem, nameof(path)); - - relativeTo = _fileSystem.Path.GetFullPath(relativeTo); - path = _fileSystem.Path.GetFullPath(path); - - return Path.GetRelativePath(relativeTo, path); + return _fileSystem.Execute.Path.GetRelativePath(relativeTo, path); } #endif @@ -337,97 +305,97 @@ public override string GetRelativePath(string relativeTo, string path) [Obsolete( "Insecure temporary file creation methods should not be used. Use `Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())` instead.")] #endif - public override string GetTempFileName() + public string GetTempFileName() { using IDisposable register = RegisterMethod(nameof(GetTempFileName)); - return base.GetTempFileName(); + return _fileSystem.Execute.Path.GetTempFileName(); } /// - public override string GetTempPath() + public string GetTempPath() { using IDisposable register = RegisterMethod(nameof(GetTempPath)); - return base.GetTempPath(); + return _fileSystem.Execute.Path.GetTempPath(); } #if FEATURE_SPAN /// - public override bool HasExtension(ReadOnlySpan path) + public bool HasExtension(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(HasExtension), path); - return base.HasExtension(path); + return _fileSystem.Execute.Path.HasExtension(path); } #endif /// - public override bool HasExtension([NotNullWhen(true)] string? path) + public bool HasExtension([NotNullWhen(true)] string? path) { using IDisposable register = RegisterMethod(nameof(HasExtension), path); - return base.HasExtension(path); + return _fileSystem.Execute.Path.HasExtension(path); } #if FEATURE_SPAN /// - public override bool IsPathFullyQualified(ReadOnlySpan path) + public bool IsPathFullyQualified(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(IsPathFullyQualified), path); - return base.IsPathFullyQualified(path); + return _fileSystem.Execute.Path.IsPathFullyQualified(path); } #endif #if FEATURE_PATH_RELATIVE /// - public override bool IsPathFullyQualified(string path) + public bool IsPathFullyQualified(string path) { using IDisposable register = RegisterMethod(nameof(IsPathFullyQualified), path); - return base.IsPathFullyQualified(path); + return _fileSystem.Execute.Path.IsPathFullyQualified(path); } #endif #if FEATURE_SPAN /// - public override bool IsPathRooted(ReadOnlySpan path) + public bool IsPathRooted(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(IsPathRooted), path); - return base.IsPathRooted(path); + return _fileSystem.Execute.Path.IsPathRooted(path); } #endif /// - public override bool IsPathRooted(string? path) + public bool IsPathRooted(string? path) { using IDisposable register = RegisterMethod(nameof(IsPathRooted), path); - return base.IsPathRooted(path); + return _fileSystem.Execute.Path.IsPathRooted(path); } -#if FEATURE_PATH_ADVANCED +#if FEATURE_PATH_JOIN /// - public override string Join(ReadOnlySpan path1, ReadOnlySpan path2) + public string Join(ReadOnlySpan path1, ReadOnlySpan path2) { using IDisposable register = RegisterMethod(nameof(Join), path1, path2); - return base.Join(path1, path2); + return _fileSystem.Execute.Path.Join(path1, path2); } #endif -#if FEATURE_PATH_ADVANCED +#if FEATURE_PATH_JOIN /// - public override string Join(ReadOnlySpan path1, + public string Join(ReadOnlySpan path1, ReadOnlySpan path2, ReadOnlySpan path3) { @@ -436,13 +404,13 @@ public override string Join(ReadOnlySpan path1, path2, path3); - return base.Join(path1, path2, path3); + return _fileSystem.Execute.Path.Join(path1, path2, path3); } #endif #if FEATURE_PATH_ADVANCED /// - public override string Join(ReadOnlySpan path1, + public string Join(ReadOnlySpan path1, ReadOnlySpan path2, ReadOnlySpan path3, ReadOnlySpan path4) @@ -453,79 +421,79 @@ public override string Join(ReadOnlySpan path1, path3, path4); - return base.Join(path1, path2, path3, path4); + return _fileSystem.Execute.Path.Join(path1, path2, path3, path4); } #endif #if FEATURE_PATH_ADVANCED /// - public override string Join(string? path1, string? path2) + public string Join(string? path1, string? path2) { using IDisposable register = RegisterMethod(nameof(Join), path1, path2); - return base.Join(path1, path2); + return _fileSystem.Execute.Path.Join(path1, path2); } #endif #if FEATURE_PATH_ADVANCED /// - public override string Join(string? path1, string? path2, string? path3) + public string Join(string? path1, string? path2, string? path3) { using IDisposable register = RegisterMethod(nameof(Join), path1, path2, path3); - return base.Join(path1, path2, path3); + return _fileSystem.Execute.Path.Join(path1, path2, path3); } #endif #if FEATURE_PATH_ADVANCED /// - public override string Join(string? path1, string? path2, string? path3, string? path4) + public string Join(string? path1, string? path2, string? path3, string? path4) { using IDisposable register = RegisterMethod(nameof(Join), path1, path2, path3, path4); - return base.Join(path1, path2, path3, path4); + return _fileSystem.Execute.Path.Join(path1, path2, path3, path4); } #endif #if FEATURE_PATH_ADVANCED /// - public override string Join(params string?[] paths) + public string Join(params string?[] paths) { using IDisposable register = RegisterMethod(nameof(Join), paths); - return base.Join(paths); + return _fileSystem.Execute.Path.Join(paths); } #endif #if FEATURE_PATH_ADVANCED /// - public override ReadOnlySpan TrimEndingDirectorySeparator(ReadOnlySpan path) + public ReadOnlySpan TrimEndingDirectorySeparator(ReadOnlySpan path) { using IDisposable register = RegisterMethod(nameof(TrimEndingDirectorySeparator), path); - return base.TrimEndingDirectorySeparator(path); + return _fileSystem.Execute.Path.TrimEndingDirectorySeparator(path); } #endif #if FEATURE_PATH_ADVANCED /// - public override string TrimEndingDirectorySeparator(string path) + public string TrimEndingDirectorySeparator(string path) { using IDisposable register = RegisterMethod(nameof(TrimEndingDirectorySeparator), path); - return base.TrimEndingDirectorySeparator(path); + return _fileSystem.Execute.Path.TrimEndingDirectorySeparator(path); } #endif #if FEATURE_PATH_JOIN /// - public override bool TryJoin(ReadOnlySpan path1, + public bool TryJoin(ReadOnlySpan path1, ReadOnlySpan path2, Span destination, out int charsWritten) @@ -533,7 +501,8 @@ public override bool TryJoin(ReadOnlySpan path1, int registerCharsWritten = 0; try { - bool result = base.TryJoin(path1, path2, destination, out charsWritten); + bool result = + _fileSystem.Execute.Path.TryJoin(path1, path2, destination, out charsWritten); registerCharsWritten = charsWritten; return result; } @@ -550,7 +519,7 @@ public override bool TryJoin(ReadOnlySpan path1, #if FEATURE_PATH_JOIN /// - public override bool TryJoin(ReadOnlySpan path1, + public bool TryJoin(ReadOnlySpan path1, ReadOnlySpan path2, ReadOnlySpan path3, Span destination, @@ -559,7 +528,9 @@ public override bool TryJoin(ReadOnlySpan path1, int registerCharsWritten = 0; try { - bool result = base.TryJoin(path1, path2, path3, destination, out charsWritten); + bool result = + _fileSystem.Execute.Path.TryJoin(path1, path2, path3, destination, + out charsWritten); registerCharsWritten = charsWritten; return result; } @@ -575,6 +546,8 @@ public override bool TryJoin(ReadOnlySpan path1, } #endif + #endregion + private IDisposable RegisterMethod(string name) => _fileSystem.StatisticsRegistration.Path.RegisterMethod(name); @@ -588,7 +561,7 @@ private IDisposable RegisterMethod(string name, ReadOnlySpan parameter1) ParameterDescription.FromParameter(parameter1)); #endif -#if FEATURE_PATH_ADVANCED +#if FEATURE_PATH_JOIN private IDisposable RegisterMethod(string name, ReadOnlySpan parameter1, ReadOnlySpan parameter2) => _fileSystem.StatisticsRegistration.Path.RegisterMethod(name, @@ -596,7 +569,7 @@ private IDisposable RegisterMethod(string name, ReadOnlySpan paramet ParameterDescription.FromParameter(parameter2)); #endif -#if FEATURE_PATH_ADVANCED +#if FEATURE_PATH_JOIN private IDisposable RegisterMethod(string name, ReadOnlySpan parameter1, ReadOnlySpan parameter2, ReadOnlySpan parameter3) => _fileSystem.StatisticsRegistration.Path.RegisterMethod(name, diff --git a/Source/Testably.Abstractions.Testing/FileSystemInitializer/DirectoryCleaner.cs b/Source/Testably.Abstractions.Testing/FileSystemInitializer/DirectoryCleaner.cs index b818d91fb..2b94819ee 100644 --- a/Source/Testably.Abstractions.Testing/FileSystemInitializer/DirectoryCleaner.cs +++ b/Source/Testably.Abstractions.Testing/FileSystemInitializer/DirectoryCleaner.cs @@ -17,7 +17,7 @@ public DirectoryCleaner(IFileSystem fileSystem, string? prefix, Action? _fileSystem = fileSystem; _logger = logger; BasePath = InitializeBasePath( - (fileSystem as MockFileSystem)?.Execute ?? Execute.Default, + fileSystem.ExecuteOrDefault(), prefix ?? ""); } diff --git a/Source/Testably.Abstractions.Testing/FileSystemInitializerExtensions.cs b/Source/Testably.Abstractions.Testing/FileSystemInitializerExtensions.cs index ed9b2372e..110ec458f 100644 --- a/Source/Testably.Abstractions.Testing/FileSystemInitializerExtensions.cs +++ b/Source/Testably.Abstractions.Testing/FileSystemInitializerExtensions.cs @@ -96,7 +96,7 @@ public static void InitializeEmbeddedResourcesFromAssembly(this IFileSystem file #pragma warning restore CA2249 if (EnumerationOptionsHelper.MatchesPattern( - (fileSystem as MockFileSystem)?.Execute ?? Execute.Default, + fileSystem.ExecuteOrDefault(), enumerationOptions, fileName, searchPattern)) diff --git a/Source/Testably.Abstractions.Testing/Helpers/Execute.NativePath.cs b/Source/Testably.Abstractions.Testing/Helpers/Execute.NativePath.cs new file mode 100644 index 000000000..4c9905dca --- /dev/null +++ b/Source/Testably.Abstractions.Testing/Helpers/Execute.NativePath.cs @@ -0,0 +1,322 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using Testably.Abstractions.Testing.Storage; + +namespace Testably.Abstractions.Testing.Helpers; + +internal partial class Execute +{ + private sealed class NativePath : IPath + { + private readonly MockFileSystem _fileSystem; + + public NativePath(MockFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + + #region IPath Members + + /// + public char AltDirectorySeparatorChar + => System.IO.Path.AltDirectorySeparatorChar; + + /// + public char DirectorySeparatorChar + => System.IO.Path.DirectorySeparatorChar; + + /// + public IFileSystem FileSystem => _fileSystem; + + /// + public char PathSeparator + => System.IO.Path.PathSeparator; + + /// + public char VolumeSeparatorChar + => System.IO.Path.VolumeSeparatorChar; + + /// + [return: NotNullIfNotNull("path")] + public string? ChangeExtension(string? path, string? extension) + => System.IO.Path.ChangeExtension(path, extension); + + /// + public string Combine(string path1, string path2) + => System.IO.Path.Combine(path1, path2); + + /// + public string Combine(string path1, string path2, string path3) + => System.IO.Path.Combine(path1, path2, path3); + + /// + public string Combine(string path1, string path2, string path3, string path4) + => System.IO.Path.Combine(path1, path2, path3, path4); + + /// + public string Combine(params string[] paths) + => System.IO.Path.Combine(paths); + +#if FEATURE_PATH_ADVANCED + /// + public bool EndsInDirectorySeparator(ReadOnlySpan path) + => System.IO.Path.EndsInDirectorySeparator(path); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public bool EndsInDirectorySeparator(string path) + => System.IO.Path.EndsInDirectorySeparator(path); +#endif + +#if FEATURE_FILESYSTEM_NET7 + /// + public bool Exists([NotNullWhen(true)] string? path) + { + if (string.IsNullOrEmpty(path)) + { + return false; + } + + return _fileSystem.Storage.GetContainer(_fileSystem.Storage.GetLocation(path)) + is not NullContainer; + } +#endif + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetDirectoryName(ReadOnlySpan path) + => System.IO.Path.GetDirectoryName(path); +#endif + + /// + public string? GetDirectoryName(string? path) + => System.IO.Path.GetDirectoryName(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetExtension(ReadOnlySpan path) + => System.IO.Path.GetExtension(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetExtension(string? path) + => System.IO.Path.GetExtension(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetFileName(ReadOnlySpan path) + => System.IO.Path.GetFileName(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetFileName(string? path) + => System.IO.Path.GetFileName(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetFileNameWithoutExtension(ReadOnlySpan path) + => System.IO.Path.GetFileNameWithoutExtension(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetFileNameWithoutExtension(string? path) + => System.IO.Path.GetFileNameWithoutExtension(path); + + /// + public string GetFullPath(string path) + { + path.EnsureValidArgument(_fileSystem, nameof(path)); + + string? pathRoot = System.IO.Path.GetPathRoot(path); + string? directoryRoot = + System.IO.Path.GetPathRoot(_fileSystem.Storage.CurrentDirectory); + if (!string.IsNullOrEmpty(pathRoot) && !string.IsNullOrEmpty(directoryRoot)) + { + if (char.ToUpperInvariant(pathRoot[0]) != char.ToUpperInvariant(directoryRoot[0])) + { + return System.IO.Path.GetFullPath(path); + } + + if (pathRoot.Length < directoryRoot.Length) + { + path = path.Substring(pathRoot.Length); + } + } + + return System.IO.Path.GetFullPath(System.IO.Path.Combine( + _fileSystem.Storage.CurrentDirectory, + path)); + } + +#if FEATURE_PATH_RELATIVE + /// + public string GetFullPath(string path, string basePath) + => System.IO.Path.GetFullPath(path, basePath); +#endif + + /// + public char[] GetInvalidFileNameChars() + => System.IO.Path.GetInvalidFileNameChars(); + + /// + public char[] GetInvalidPathChars() + => System.IO.Path.GetInvalidPathChars(); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetPathRoot(ReadOnlySpan path) + => System.IO.Path.GetPathRoot(path); +#endif + + /// + public string? GetPathRoot(string? path) + => System.IO.Path.GetPathRoot(path); + + /// + public string GetRandomFileName() + => System.IO.Path.GetRandomFileName(); + +#if FEATURE_PATH_RELATIVE + /// + public string GetRelativePath(string relativeTo, string path) + { + relativeTo.EnsureValidArgument(_fileSystem, nameof(relativeTo)); + path.EnsureValidArgument(_fileSystem, nameof(path)); + + relativeTo = _fileSystem.Execute.Path.GetFullPath(relativeTo); + path = _fileSystem.Execute.Path.GetFullPath(path); + + return System.IO.Path.GetRelativePath(relativeTo, path); + } +#endif + + /// +#if !NETSTANDARD2_0 + [Obsolete( + "Insecure temporary file creation methods should not be used. Use `Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())` instead.")] +#endif + public string GetTempFileName() + => System.IO.Path.GetTempFileName(); + + /// + public string GetTempPath() + => System.IO.Path.GetTempPath(); + +#if FEATURE_SPAN + /// + public bool HasExtension(ReadOnlySpan path) + => System.IO.Path.HasExtension(path); +#endif + + /// + public bool HasExtension([NotNullWhen(true)] string? path) + => System.IO.Path.HasExtension(path); + +#if FEATURE_SPAN + /// + public bool IsPathFullyQualified(ReadOnlySpan path) + => System.IO.Path.IsPathFullyQualified(path); +#endif + +#if FEATURE_PATH_RELATIVE + /// + public bool IsPathFullyQualified(string path) + => System.IO.Path.IsPathFullyQualified(path); +#endif + +#if FEATURE_SPAN + /// + public bool IsPathRooted(ReadOnlySpan path) + => System.IO.Path.IsPathRooted(path); +#endif + + /// + public bool IsPathRooted(string? path) + => System.IO.Path.IsPathRooted(path); + +#if FEATURE_PATH_JOIN + /// + public string Join(ReadOnlySpan path1, ReadOnlySpan path2) + => System.IO.Path.Join(path1, path2); +#endif + +#if FEATURE_PATH_JOIN + /// + public string Join(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3) + => System.IO.Path.Join(path1, path2, path3); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3, + ReadOnlySpan path4) + => System.IO.Path.Join(path1, path2, path3, path4); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2) + => System.IO.Path.Join(path1, path2); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2, string? path3) + => System.IO.Path.Join(path1, path2, path3); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2, string? path3, string? path4) + => System.IO.Path.Join(path1, path2, path3, path4); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(params string?[] paths) + => System.IO.Path.Join(paths); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public ReadOnlySpan TrimEndingDirectorySeparator(ReadOnlySpan path) + => System.IO.Path.TrimEndingDirectorySeparator(path); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string TrimEndingDirectorySeparator(string path) + => System.IO.Path.TrimEndingDirectorySeparator(path); +#endif + +#if FEATURE_PATH_JOIN + /// + public bool TryJoin(ReadOnlySpan path1, + ReadOnlySpan path2, + Span destination, + out int charsWritten) + => System.IO.Path.TryJoin(path1, path2, destination, out charsWritten); +#endif + +#if FEATURE_PATH_JOIN + /// + public bool TryJoin(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3, + Span destination, + out int charsWritten) + => System.IO.Path.TryJoin(path1, path2, path3, destination, out charsWritten); +#endif + + #endregion + } +} diff --git a/Source/Testably.Abstractions.Testing/Helpers/Execute.cs b/Source/Testably.Abstractions.Testing/Helpers/Execute.cs index 5175f4503..997c1cb61 100644 --- a/Source/Testably.Abstractions.Testing/Helpers/Execute.cs +++ b/Source/Testably.Abstractions.Testing/Helpers/Execute.cs @@ -3,13 +3,8 @@ namespace Testably.Abstractions.Testing.Helpers; -internal class Execute +internal partial class Execute { - /// - /// The default execution engine, which uses the current operating system. - /// - public static Execute Default { get; } = new(); - /// /// Flag indicating if the code runs on . /// @@ -33,12 +28,17 @@ internal class Execute /// public bool IsWindows { get; } + /// + /// The internal implementation of the functionality. + /// + public IPath Path { get; } + /// /// The default used for comparing paths. /// public StringComparison StringComparisonMode { get; } - internal Execute(OSPlatform osPlatform, bool isNetFramework = false) + internal Execute(MockFileSystem fileSystem, OSPlatform osPlatform, bool isNetFramework = false) { IsLinux = osPlatform == OSPlatform.Linux; IsMac = osPlatform == OSPlatform.OSX; @@ -47,9 +47,10 @@ internal Execute(OSPlatform osPlatform, bool isNetFramework = false) StringComparisonMode = IsLinux ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; + Path = new NativePath(fileSystem); } - private Execute() + internal Execute(MockFileSystem fileSystem) { IsLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux); IsMac = RuntimeInformation.IsOSPlatform(OSPlatform.OSX); @@ -58,5 +59,6 @@ private Execute() StringComparisonMode = IsLinux ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; + Path = new NativePath(fileSystem); } } diff --git a/Source/Testably.Abstractions.Testing/Helpers/FilePlatformIndependenceExtensions.cs b/Source/Testably.Abstractions.Testing/Helpers/FilePlatformIndependenceExtensions.cs index 49b8b7167..12dcc01cc 100644 --- a/Source/Testably.Abstractions.Testing/Helpers/FilePlatformIndependenceExtensions.cs +++ b/Source/Testably.Abstractions.Testing/Helpers/FilePlatformIndependenceExtensions.cs @@ -28,12 +28,12 @@ internal static class FilePlatformIndependenceExtensions return fileSystem.Execute.OnWindows( () => path - .Replace(fileSystem.Path.AltDirectorySeparatorChar, - fileSystem.Path.DirectorySeparatorChar), + .Replace(fileSystem.Execute.Path.AltDirectorySeparatorChar, + fileSystem.Execute.Path.DirectorySeparatorChar), () => PathTransformRegex .Replace(path, "${path}") - .Replace(fileSystem.Path.AltDirectorySeparatorChar, - fileSystem.Path.DirectorySeparatorChar)); + .Replace(fileSystem.Execute.Path.AltDirectorySeparatorChar, + fileSystem.Execute.Path.DirectorySeparatorChar)); } /// @@ -48,7 +48,7 @@ internal static class FilePlatformIndependenceExtensions return path; } - if (fileSystem.Path.IsPathRooted(path)) + if (fileSystem.Execute.Path.IsPathRooted(path)) { return path; } diff --git a/Source/Testably.Abstractions.Testing/Helpers/FileSystemExtensions.cs b/Source/Testably.Abstractions.Testing/Helpers/FileSystemExtensions.cs index e031afa63..b39b62a88 100644 --- a/Source/Testably.Abstractions.Testing/Helpers/FileSystemExtensions.cs +++ b/Source/Testably.Abstractions.Testing/Helpers/FileSystemExtensions.cs @@ -7,6 +7,19 @@ namespace Testably.Abstractions.Testing.Helpers; internal static class FileSystemExtensions { + /// + /// Ignores all registrations on the until the return value is disposed. + /// + internal static Execute ExecuteOrDefault(this IFileSystem fileSystem) + { + if (fileSystem is MockFileSystem mockFileSystem) + { + return mockFileSystem.Execute; + } + + return new Execute(new MockFileSystem()); + } + /// /// Determines the new when the is moved /// from to . @@ -41,12 +54,12 @@ internal static string GetSubdirectoryPath(this MockFileSystem fileSystem, string fullFilePath, string givenPath) { - if (fileSystem.Path.IsPathRooted(givenPath)) + if (fileSystem.Execute.Path.IsPathRooted(givenPath)) { return fullFilePath; } - string currentDirectory = fileSystem.Path.GetFullPath(givenPath); + string currentDirectory = fileSystem.Execute.Path.GetFullPath(givenPath); if (currentDirectory == string.Empty.PrefixRoot(fileSystem)) { fullFilePath = fullFilePath.Substring(currentDirectory.Length); @@ -75,9 +88,9 @@ internal static string GetSubdirectoryPath(this MockFileSystem fileSystem, } } - if (!fullFilePath.StartsWith(givenPath + fileSystem.Path.DirectorySeparatorChar)) + if (!fullFilePath.StartsWith(givenPath + fileSystem.Execute.Path.DirectorySeparatorChar)) { - return fileSystem.Path.Combine(givenPath, fullFilePath); + return fileSystem.Execute.Path.Combine(givenPath, fullFilePath); } return fullFilePath; diff --git a/Source/Testably.Abstractions.Testing/Helpers/PathHelper.cs b/Source/Testably.Abstractions.Testing/Helpers/PathHelper.cs index 31f786d6f..83131727c 100644 --- a/Source/Testably.Abstractions.Testing/Helpers/PathHelper.cs +++ b/Source/Testably.Abstractions.Testing/Helpers/PathHelper.cs @@ -52,7 +52,7 @@ internal static string GetFullPathOrWhiteSpace(this string? path, IFileSystem fi /// internal static bool HasIllegalCharacters(this string path, MockFileSystem fileSystem) { - char[] invalidPathChars = fileSystem.Path.GetInvalidPathChars(); + char[] invalidPathChars = fileSystem.Execute.Path.GetInvalidPathChars(); if (path.IndexOfAny(invalidPathChars) >= 0) { @@ -102,9 +102,9 @@ internal static bool IsUncPath([NotNullWhen(true)] this string? path, MockFileSy } return fileSystem.Execute.OnWindows( - () => path.StartsWith(new string(fileSystem.Path.DirectorySeparatorChar, 2)) || - path.StartsWith(new string(fileSystem.Path.AltDirectorySeparatorChar, 2)), - () => path.StartsWith(new string(fileSystem.Path.DirectorySeparatorChar, 2))); + () => path.StartsWith(new string(fileSystem.Execute.Path.DirectorySeparatorChar, 2)) || + path.StartsWith(new string(fileSystem.Execute.Path.AltDirectorySeparatorChar, 2)), + () => path.StartsWith(new string(fileSystem.Execute.Path.DirectorySeparatorChar, 2))); } internal static void ThrowCommonExceptionsIfPathToTargetIsInvalid( @@ -155,13 +155,13 @@ private static void CheckPathCharacters(string path, MockFileSystem fileSystem, hResult)); throw ExceptionFactory.PathHasIncorrectSyntax( - fileSystem.Path.GetFullPath(path), hResult); + fileSystem.Execute.Path.GetFullPath(path), hResult); } fileSystem.Execute.OnWindowsIf(path.LastIndexOf(':') > 1 && path.LastIndexOf(':') < path.IndexOf(Path.DirectorySeparatorChar), () => throw ExceptionFactory.PathHasIncorrectSyntax( - fileSystem.Path.GetFullPath(path), hResult)); + fileSystem.Execute.Path.GetFullPath(path), hResult)); } } diff --git a/Source/Testably.Abstractions.Testing/InterceptionHandlerExtensions.cs b/Source/Testably.Abstractions.Testing/InterceptionHandlerExtensions.cs index 622d32517..d4a533b5c 100644 --- a/Source/Testably.Abstractions.Testing/InterceptionHandlerExtensions.cs +++ b/Source/Testably.Abstractions.Testing/InterceptionHandlerExtensions.cs @@ -40,7 +40,7 @@ public static MockFileSystem Changing( Func? predicate = null) => handler.Event(interceptionCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Changed, path.GetFullPathOrWhiteSpace(handler.FileSystem), @@ -77,7 +77,7 @@ public static MockFileSystem Creating( Func? predicate = null) => handler.Event(interceptionCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Created, path.GetFullPathOrWhiteSpace(handler.FileSystem), @@ -114,7 +114,7 @@ public static MockFileSystem Deleting( Func? predicate = null) => handler.Event(interceptionCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Deleted, path.GetFullPathOrWhiteSpace(handler.FileSystem), diff --git a/Source/Testably.Abstractions.Testing/MockFileSystem.cs b/Source/Testably.Abstractions.Testing/MockFileSystem.cs index 8accf7aca..57b7fec8d 100644 --- a/Source/Testably.Abstractions.Testing/MockFileSystem.cs +++ b/Source/Testably.Abstractions.Testing/MockFileSystem.cs @@ -86,7 +86,7 @@ public MockFileSystem() { StatisticsRegistration = new FileSystemStatistics(this); using IDisposable release = StatisticsRegistration.Ignore(); - Execute = Execute.Default; + Execute = new Execute(this); RandomSystem = new MockRandomSystem(); TimeSystem = new MockTimeSystem(TimeProvider.Now()); _pathMock = new PathMock(this); diff --git a/Source/Testably.Abstractions.Testing/MockFileSystemExtensions.cs b/Source/Testably.Abstractions.Testing/MockFileSystemExtensions.cs index a6f300982..bd6b45676 100644 --- a/Source/Testably.Abstractions.Testing/MockFileSystemExtensions.cs +++ b/Source/Testably.Abstractions.Testing/MockFileSystemExtensions.cs @@ -36,10 +36,10 @@ public static MockFileSystem WithUncDrive(this MockFileSystem mockFileSystem, string server, Action? driveCallback = null) { - string uncPrefix = new(mockFileSystem.Path.DirectorySeparatorChar, 2); + string uncPrefix = new(mockFileSystem.Execute.Path.DirectorySeparatorChar, 2); server = server.TrimStart( - mockFileSystem.Path.DirectorySeparatorChar, - mockFileSystem.Path.AltDirectorySeparatorChar); + mockFileSystem.Execute.Path.DirectorySeparatorChar, + mockFileSystem.Execute.Path.AltDirectorySeparatorChar); string drive = $"{uncPrefix}{server}"; return mockFileSystem.WithDrive(drive, driveCallback); } diff --git a/Source/Testably.Abstractions.Testing/NotificationHandlerExtensions.cs b/Source/Testably.Abstractions.Testing/NotificationHandlerExtensions.cs index 4ef701f25..7ba626aae 100644 --- a/Source/Testably.Abstractions.Testing/NotificationHandlerExtensions.cs +++ b/Source/Testably.Abstractions.Testing/NotificationHandlerExtensions.cs @@ -41,7 +41,7 @@ public static Notification.IAwaitableCallback Func? predicate = null) => handler.OnEvent(notificationCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Changed, path.GetFullPathOrWhiteSpace(handler.FileSystem), @@ -79,7 +79,7 @@ public static Notification.IAwaitableCallback Func? predicate = null) => handler.OnEvent(notificationCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Created, path.GetFullPathOrWhiteSpace(handler.FileSystem), @@ -117,7 +117,7 @@ public static Notification.IAwaitableCallback Func? predicate = null) => handler.OnEvent(notificationCallback, changeDescription => changeDescription.Matches( - (handler.FileSystem as MockFileSystem)?.Execute ?? Execute.Default, + handler.FileSystem.ExecuteOrDefault(), fileSystemType, WatcherChangeTypes.Deleted, path.GetFullPathOrWhiteSpace(handler.FileSystem), diff --git a/Source/Testably.Abstractions.Testing/Statistics/FileSystemStatistics.cs b/Source/Testably.Abstractions.Testing/Statistics/FileSystemStatistics.cs index fc6de6f1d..af860d06c 100644 --- a/Source/Testably.Abstractions.Testing/Statistics/FileSystemStatistics.cs +++ b/Source/Testably.Abstractions.Testing/Statistics/FileSystemStatistics.cs @@ -7,6 +7,12 @@ namespace Testably.Abstractions.Testing.Statistics; internal sealed class FileSystemStatistics : IFileSystemStatistics, IStatisticsGate { private static readonly AsyncLocal IsDisabled = new(); + + /// + /// The total count of registered statistic calls. + /// + public int TotalCount => _counter; + internal readonly CallStatistics Directory; internal readonly PathStatistics DirectoryInfo; internal readonly PathStatistics DriveInfo; @@ -23,7 +29,8 @@ public FileSystemStatistics(MockFileSystem fileSystem) DriveInfo = new PathStatistics(this, fileSystem, nameof(IFileSystem.DriveInfo)); FileInfo = new PathStatistics(this, fileSystem, nameof(IFileSystem.FileInfo)); FileStream = new PathStatistics(this, fileSystem, nameof(IFileSystem.FileStream)); - FileSystemWatcher = new PathStatistics(this, fileSystem, nameof(IFileSystem.FileSystemWatcher)); + FileSystemWatcher = + new PathStatistics(this, fileSystem, nameof(IFileSystem.FileSystemWatcher)); File = new CallStatistics(this, nameof(IFileSystem.File)); Directory = new CallStatistics(this, nameof(IFileSystem.Directory)); Path = new CallStatistics(this, nameof(IFileSystem.Path)); diff --git a/Source/Testably.Abstractions.Testing/Statistics/PathStatistics.cs b/Source/Testably.Abstractions.Testing/Statistics/PathStatistics.cs index 1d45ac3fc..bde2968ff 100644 --- a/Source/Testably.Abstractions.Testing/Statistics/PathStatistics.cs +++ b/Source/Testably.Abstractions.Testing/Statistics/PathStatistics.cs @@ -30,7 +30,7 @@ public IStatistics this[string path] get { string key = CreateKey(_fileSystem.Storage.CurrentDirectory, path); - return _statistics.GetOrAdd(key, + return _statistics.GetOrAdd(key, k => new CallStatistics(_statisticsGate, $"{ToString()}[{k}]")); } } diff --git a/Source/Testably.Abstractions.Testing/Storage/InMemoryLocation.cs b/Source/Testably.Abstractions.Testing/Storage/InMemoryLocation.cs index fedbda744..31c9d9661 100644 --- a/Source/Testably.Abstractions.Testing/Storage/InMemoryLocation.cs +++ b/Source/Testably.Abstractions.Testing/Storage/InMemoryLocation.cs @@ -83,8 +83,8 @@ public override int GetHashCode() /// public IStorageLocation? GetParent() { - string? parentPath = _fileSystem.Path.GetDirectoryName(FullPath); - if (_fileSystem.Path.GetPathRoot(FullPath) == FullPath || parentPath == null) + string? parentPath = _fileSystem.Execute.Path.GetDirectoryName(FullPath); + if (_fileSystem.Execute.Path.GetPathRoot(FullPath) == FullPath || parentPath == null) { return null; } @@ -98,7 +98,7 @@ public override int GetHashCode() private string GetFriendlyNameParent(string parentPath) => _fileSystem.Execute.OnNetFramework( - () => _fileSystem.Path.GetFileName(parentPath), + () => _fileSystem.Execute.Path.GetFileName(parentPath), () => parentPath); #endregion @@ -133,13 +133,13 @@ public override string ToString() private static string NormalizeKey(MockFileSystem fileSystem, string fullPath) { #if FEATURE_PATH_ADVANCED - return fileSystem.Path.TrimEndingDirectorySeparator(fullPath); + return fileSystem.Execute.Path.TrimEndingDirectorySeparator(fullPath); #else return FileFeatureExtensionMethods.TrimEndingDirectorySeparator( fileSystem, fullPath, - fileSystem.Path.DirectorySeparatorChar, - fileSystem.Path.AltDirectorySeparatorChar); + fileSystem.Execute.Path.DirectorySeparatorChar, + fileSystem.Execute.Path.AltDirectorySeparatorChar); #endif } } diff --git a/Source/Testably.Abstractions.Testing/Storage/InMemoryStorage.cs b/Source/Testably.Abstractions.Testing/Storage/InMemoryStorage.cs index c7b241a86..98155daea 100644 --- a/Source/Testably.Abstractions.Testing/Storage/InMemoryStorage.cs +++ b/Source/Testably.Abstractions.Testing/Storage/InMemoryStorage.cs @@ -177,17 +177,18 @@ public IEnumerable EnumerateLocations( string fullPath = location.FullPath; string fullPathWithoutTrailingSlash = fullPath; #if NETSTANDARD2_0 - if (!fullPath.EndsWith($"{_fileSystem.Path.DirectorySeparatorChar}")) + if (!fullPath.EndsWith($"{_fileSystem.Execute.Path.DirectorySeparatorChar}")) #else - if (!fullPath.EndsWith(_fileSystem.Path.DirectorySeparatorChar)) + if (!fullPath.EndsWith(_fileSystem.Execute.Path.DirectorySeparatorChar)) #endif { - fullPath += _fileSystem.Path.DirectorySeparatorChar; + fullPath += _fileSystem.Execute.Path.DirectorySeparatorChar; } - else if (_fileSystem.Path.GetPathRoot(fullPath) != fullPath) + else if (_fileSystem.Execute.Path.GetPathRoot(fullPath) != fullPath) { fullPathWithoutTrailingSlash = - fullPathWithoutTrailingSlash.TrimEnd(_fileSystem.Path.DirectorySeparatorChar); + fullPathWithoutTrailingSlash.TrimEnd( + _fileSystem.Execute.Path.DirectorySeparatorChar); } foreach (KeyValuePair item in _containers @@ -196,8 +197,8 @@ public IEnumerable EnumerateLocations( !x.Key.Equals(location))) { string? parentPath = - _fileSystem.Path.GetDirectoryName( - item.Key.FullPath.TrimEnd(_fileSystem.Path + _fileSystem.Execute.Path.GetDirectoryName( + item.Key.FullPath.TrimEnd(_fileSystem.Execute.Path .DirectorySeparatorChar)); if (!enumerationOptions.RecurseSubdirectories && parentPath?.Equals(fullPathWithoutTrailingSlash, @@ -209,7 +210,7 @@ public IEnumerable EnumerateLocations( if (!EnumerationOptionsHelper.MatchesPattern( _fileSystem.Execute, enumerationOptions, - _fileSystem.Path.GetFileName(item.Key.FullPath), + _fileSystem.Execute.Path.GetFileName(item.Key.FullPath), searchPattern)) { continue; @@ -249,7 +250,7 @@ public IEnumerable EnumerateLocations( if (!driveName.IsUncPath(_fileSystem)) { - driveName = _fileSystem.Path.GetPathRoot(driveName); + driveName = _fileSystem.Execute.Path.GetPathRoot(driveName); if (string.IsNullOrEmpty(driveName)) { @@ -572,13 +573,13 @@ private void CheckAndAdjustParentDirectoryTimes(IStorageLocation location) private void CreateParents(MockFileSystem fileSystem, IStorageLocation location) { List parents = new(); - string? parent = fileSystem.Path.GetDirectoryName( - location.FullPath.TrimEnd(fileSystem.Path.DirectorySeparatorChar, - fileSystem.Path.AltDirectorySeparatorChar)); + string? parent = fileSystem.Execute.Path.GetDirectoryName( + location.FullPath.TrimEnd(fileSystem.Execute.Path.DirectorySeparatorChar, + fileSystem.Execute.Path.AltDirectorySeparatorChar)); while (!string.IsNullOrEmpty(parent)) { parents.Add(parent); - parent = fileSystem.Path.GetDirectoryName(parent); + parent = fileSystem.Execute.Path.GetDirectoryName(parent); } parents.Reverse(); @@ -747,7 +748,7 @@ private void ThrowIfParentDoesNotExist(IStorageLocation location, { IStorageLocation? parentLocation = location.GetParent(); if (parentLocation != null && - _fileSystem.Path.GetPathRoot(parentLocation.FullPath) != + _fileSystem.Execute.Path.GetPathRoot(parentLocation.FullPath) != parentLocation.FullPath && !_containers.TryGetValue(parentLocation, out _)) { diff --git a/Source/Testably.Abstractions.Testing/Storage/LocationExtensions.cs b/Source/Testably.Abstractions.Testing/Storage/LocationExtensions.cs index 9229109f0..917a89d2b 100644 --- a/Source/Testably.Abstractions.Testing/Storage/LocationExtensions.cs +++ b/Source/Testably.Abstractions.Testing/Storage/LocationExtensions.cs @@ -17,7 +17,7 @@ public static IStorageLocation ThrowExceptionIfNotFound( { IStorageLocation? parentLocation = location.GetParent(); if (parentLocation != null && - fileSystem.Path.GetPathRoot(parentLocation.FullPath) != + fileSystem.Execute.Path.GetPathRoot(parentLocation.FullPath) != parentLocation.FullPath && fileSystem.Storage.GetContainer(parentLocation) is NullContainer) { @@ -52,7 +52,7 @@ public static IStorageLocation ThrowExceptionIfNotFound( IStorageLocation? parentLocation = location?.GetParent(); if (directoryNotFoundException != null && parentLocation != null && - fileSystem.Path.GetPathRoot(parentLocation.FullPath) != + fileSystem.Execute.Path.GetPathRoot(parentLocation.FullPath) != parentLocation.FullPath && fileSystem.Storage.GetContainer(parentLocation) is NullContainer) { diff --git a/Source/Testably.Abstractions/FileSystem/PathWrapper.cs b/Source/Testably.Abstractions/FileSystem/PathWrapper.cs index dcebc750e..cb25f106e 100644 --- a/Source/Testably.Abstractions/FileSystem/PathWrapper.cs +++ b/Source/Testably.Abstractions/FileSystem/PathWrapper.cs @@ -1,21 +1,282 @@ -using Testably.Abstractions.Helpers; -#if FEATURE_FILESYSTEM_NET7 -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.IO; +#if !NETSTANDARD2_0 +using System; #endif namespace Testably.Abstractions.FileSystem; -internal sealed class PathWrapper : PathSystemBase +internal sealed class PathWrapper : IPath { + private readonly RealFileSystem _fileSystem; + public PathWrapper(RealFileSystem fileSystem) - : base(fileSystem) { + _fileSystem = fileSystem; } + #region IPath Members + + /// + public char AltDirectorySeparatorChar + => Path.AltDirectorySeparatorChar; + + /// + public char DirectorySeparatorChar + => Path.DirectorySeparatorChar; + + /// + public IFileSystem FileSystem => _fileSystem; + + /// + public char PathSeparator + => Path.PathSeparator; + + /// + public char VolumeSeparatorChar + => Path.VolumeSeparatorChar; + + /// + [return: NotNullIfNotNull("path")] + public string? ChangeExtension(string? path, string? extension) + => Path.ChangeExtension(path, extension); + + /// + public string Combine(string path1, string path2) + => Path.Combine(path1, path2); + + /// + public string Combine(string path1, string path2, string path3) + => Path.Combine(path1, path2, path3); + + /// + public string Combine(string path1, string path2, string path3, string path4) + => Path.Combine(path1, path2, path3, path4); + + /// + public string Combine(params string[] paths) + => Path.Combine(paths); + +#if FEATURE_PATH_ADVANCED + /// + public bool EndsInDirectorySeparator(ReadOnlySpan path) + => Path.EndsInDirectorySeparator(path); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public bool EndsInDirectorySeparator(string path) + => Path.EndsInDirectorySeparator(path); +#endif + #if FEATURE_FILESYSTEM_NET7 /// - public override bool Exists([NotNullWhen(true)] string? path) + public bool Exists([NotNullWhen(true)] string? path) => Path.Exists(path); #endif + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetDirectoryName(ReadOnlySpan path) + => Path.GetDirectoryName(path); +#endif + + /// + public string? GetDirectoryName(string? path) + => Path.GetDirectoryName(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetExtension(ReadOnlySpan path) + => Path.GetExtension(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetExtension(string? path) + => Path.GetExtension(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetFileName(ReadOnlySpan path) + => Path.GetFileName(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetFileName(string? path) + => Path.GetFileName(path); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetFileNameWithoutExtension(ReadOnlySpan path) + => Path.GetFileNameWithoutExtension(path); +#endif + + /// + [return: NotNullIfNotNull("path")] + public string? GetFileNameWithoutExtension(string? path) + => Path.GetFileNameWithoutExtension(path); + + /// + public string GetFullPath(string path) + => Path.GetFullPath(path); + +#if FEATURE_PATH_RELATIVE + /// + public string GetFullPath(string path, string basePath) + => Path.GetFullPath(path, basePath); +#endif + + /// + public char[] GetInvalidFileNameChars() + => Path.GetInvalidFileNameChars(); + + /// + public char[] GetInvalidPathChars() + => Path.GetInvalidPathChars(); + +#if FEATURE_SPAN + /// + public ReadOnlySpan GetPathRoot(ReadOnlySpan path) + => Path.GetPathRoot(path); +#endif + + /// + public string? GetPathRoot(string? path) + => Path.GetPathRoot(path); + + /// + public string GetRandomFileName() + => Path.GetRandomFileName(); + +#if FEATURE_PATH_RELATIVE + /// + public string GetRelativePath(string relativeTo, string path) + => Path.GetRelativePath(relativeTo, path); +#endif + + /// +#if !NETSTANDARD2_0 + [Obsolete( + "Insecure temporary file creation methods should not be used. Use `Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())` instead.")] +#endif + public string GetTempFileName() + => Path.GetTempFileName(); + + /// + public string GetTempPath() + => Path.GetTempPath(); + +#if FEATURE_SPAN + /// + public bool HasExtension(ReadOnlySpan path) + => Path.HasExtension(path); +#endif + + /// + public bool HasExtension([NotNullWhen(true)] string? path) + => Path.HasExtension(path); + +#if FEATURE_SPAN + /// + public bool IsPathFullyQualified(ReadOnlySpan path) + => Path.IsPathFullyQualified(path); +#endif + +#if FEATURE_PATH_RELATIVE + /// + public bool IsPathFullyQualified(string path) + => Path.IsPathFullyQualified(path); +#endif + +#if FEATURE_SPAN + /// + public bool IsPathRooted(ReadOnlySpan path) + => Path.IsPathRooted(path); +#endif + + /// + public bool IsPathRooted(string? path) + => Path.IsPathRooted(path); + +#if FEATURE_PATH_JOIN + /// + public string Join(ReadOnlySpan path1, ReadOnlySpan path2) + => Path.Join(path1, path2); +#endif + +#if FEATURE_PATH_JOIN + /// + public string Join(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3) + => Path.Join(path1, path2, path3); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3, + ReadOnlySpan path4) + => Path.Join(path1, path2, path3, path4); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2) + => Path.Join(path1, path2); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2, string? path3) + => Path.Join(path1, path2, path3); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(string? path1, string? path2, string? path3, string? path4) + => Path.Join(path1, path2, path3, path4); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string Join(params string?[] paths) + => Path.Join(paths); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public ReadOnlySpan TrimEndingDirectorySeparator(ReadOnlySpan path) + => Path.TrimEndingDirectorySeparator(path); +#endif + +#if FEATURE_PATH_ADVANCED + /// + public string TrimEndingDirectorySeparator(string path) + => Path.TrimEndingDirectorySeparator(path); +#endif + +#if FEATURE_PATH_JOIN + /// + public bool TryJoin(ReadOnlySpan path1, + ReadOnlySpan path2, + Span destination, + out int charsWritten) + => Path.TryJoin(path1, path2, destination, out charsWritten); +#endif + +#if FEATURE_PATH_JOIN + /// + public bool TryJoin(ReadOnlySpan path1, + ReadOnlySpan path2, + ReadOnlySpan path3, + Span destination, + out int charsWritten) + => Path.TryJoin(path1, path2, path3, destination, out charsWritten); +#endif + + #endregion } diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt index 1d027049c..7a422a6e0 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt @@ -24,6 +24,7 @@ namespace Testably.Abstractions.Helpers void StoreMetadata(string key, T? value); bool TryGetWrappedInstance([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out T? wrappedInstance); } + [System.Obsolete("Will be removed in a future version!")] public abstract class PathSystemBase : System.IO.Abstractions.IFileSystemEntity, System.IO.Abstractions.IPath { protected PathSystemBase(System.IO.Abstractions.IFileSystem fileSystem) { } diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net7.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net7.0.txt index 275897c47..c6772ff12 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net7.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net7.0.txt @@ -28,6 +28,7 @@ namespace Testably.Abstractions.Helpers void StoreMetadata(string key, T? value); bool TryGetWrappedInstance([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out T? wrappedInstance); } + [System.Obsolete("Will be removed in a future version!")] public abstract class PathSystemBase : System.IO.Abstractions.IFileSystemEntity, System.IO.Abstractions.IPath { protected PathSystemBase(System.IO.Abstractions.IFileSystem fileSystem) { } diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt index dd2048a37..cee8a781e 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt @@ -28,6 +28,7 @@ namespace Testably.Abstractions.Helpers void StoreMetadata(string key, T? value); bool TryGetWrappedInstance([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out T? wrappedInstance); } + [System.Obsolete("Will be removed in a future version!")] public abstract class PathSystemBase : System.IO.Abstractions.IFileSystemEntity, System.IO.Abstractions.IPath { protected PathSystemBase(System.IO.Abstractions.IFileSystem fileSystem) { } diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt index 2856eed15..52d7b650a 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt @@ -16,6 +16,7 @@ namespace Testably.Abstractions.Helpers void StoreMetadata(string key, T? value); bool TryGetWrappedInstance([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out T? wrappedInstance); } + [System.Obsolete] public abstract class PathSystemBase : System.IO.Abstractions.IFileSystemEntity, System.IO.Abstractions.IPath { protected PathSystemBase(System.IO.Abstractions.IFileSystem fileSystem) { } diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt index b1da22d0d..2f0b70542 100644 --- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt +++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt @@ -24,6 +24,7 @@ namespace Testably.Abstractions.Helpers void StoreMetadata(string key, T? value); bool TryGetWrappedInstance([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out T? wrappedInstance); } + [System.Obsolete("Will be removed in a future version!")] public abstract class PathSystemBase : System.IO.Abstractions.IFileSystemEntity, System.IO.Abstractions.IPath { protected PathSystemBase(System.IO.Abstractions.IFileSystem fileSystem) { } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Helpers/EnumerationOptionsHelperTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Helpers/EnumerationOptionsHelperTests.cs index 467a00935..6900f5967 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Helpers/EnumerationOptionsHelperTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Helpers/EnumerationOptionsHelperTests.cs @@ -29,7 +29,7 @@ public void MatchesPattern_InvalidMatchType_ShouldThrowArgumentOutOfRangeExcepti Exception? exception = Record.Exception(() => { - EnumerationOptionsHelper.MatchesPattern(Execute.Default, + EnumerationOptionsHelper.MatchesPattern(new Execute(new MockFileSystem()), invalidEnumerationOptions, "foo", "*"); }); diff --git a/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteExtensionsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteExtensionsTests.cs index 1e3f4d71f..82d9b5f89 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteExtensionsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteExtensionsTests.cs @@ -211,10 +211,10 @@ public void OnWindowsIf_ShouldExecuteDependingOnOperatingSystem( private static Execute FromType(ExecuteType type) => type switch { - ExecuteType.Windows => new Execute(OSPlatform.Windows), - ExecuteType.Linux => new Execute(OSPlatform.Linux), - ExecuteType.Mac => new Execute(OSPlatform.OSX), - ExecuteType.NetFramework => new Execute(OSPlatform.Windows, true), + ExecuteType.Windows => new Execute(new MockFileSystem(), OSPlatform.Windows), + ExecuteType.Linux => new Execute(new MockFileSystem(), OSPlatform.Linux), + ExecuteType.Mac => new Execute(new MockFileSystem(), OSPlatform.OSX), + ExecuteType.NetFramework => new Execute(new MockFileSystem(), OSPlatform.Windows, true), _ => throw new NotSupportedException() }; diff --git a/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.cs index b0ec7debd..186964215 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.cs @@ -8,7 +8,7 @@ public sealed class ExecuteTests [Fact] public void Constructor_ForLinux_ShouldInitializeAccordingly() { - Execute sut = new(OSPlatform.Linux); + Execute sut = new(new MockFileSystem(), OSPlatform.Linux); sut.IsLinux.Should().BeTrue(); sut.IsMac.Should().BeFalse(); @@ -20,7 +20,7 @@ public void Constructor_ForLinux_ShouldInitializeAccordingly() [Fact] public void Constructor_ForNetFramework_ShouldInitializeAccordingly() { - Execute sut = new(OSPlatform.Windows, true); + Execute sut = new(new MockFileSystem(), OSPlatform.Windows, true); sut.IsLinux.Should().BeFalse(); sut.IsMac.Should().BeFalse(); @@ -32,7 +32,7 @@ public void Constructor_ForNetFramework_ShouldInitializeAccordingly() [Fact] public void Constructor_ForNetFramework_WithLinux_ShouldInitializeLinux() { - Execute sut = new(OSPlatform.Linux, true); + Execute sut = new(new MockFileSystem(), OSPlatform.Linux, true); sut.IsLinux.Should().BeTrue(); sut.IsMac.Should().BeFalse(); @@ -44,7 +44,7 @@ public void Constructor_ForNetFramework_WithLinux_ShouldInitializeLinux() [Fact] public void Constructor_ForNetFramework_WithOSX_ShouldInitializeMac() { - Execute sut = new(OSPlatform.OSX, true); + Execute sut = new(new MockFileSystem(), OSPlatform.OSX, true); sut.IsLinux.Should().BeFalse(); sut.IsMac.Should().BeTrue(); @@ -56,7 +56,7 @@ public void Constructor_ForNetFramework_WithOSX_ShouldInitializeMac() [Fact] public void Constructor_ForOSX_ShouldInitializeAccordingly() { - Execute sut = new(OSPlatform.OSX); + Execute sut = new(new MockFileSystem(), OSPlatform.OSX); sut.IsLinux.Should().BeFalse(); sut.IsMac.Should().BeTrue(); @@ -68,7 +68,7 @@ public void Constructor_ForOSX_ShouldInitializeAccordingly() [Fact] public void Constructor_ForWindows_ShouldInitializeAccordingly() { - Execute sut = new(OSPlatform.Windows); + Execute sut = new(new MockFileSystem(), OSPlatform.Windows); sut.IsLinux.Should().BeFalse(); sut.IsMac.Should().BeFalse(); diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoFactoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoFactoryStatisticsTests.cs index 53c7eb2ae..11c2435a8 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoFactoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoFactoryStatisticsTests.cs @@ -14,6 +14,7 @@ public void Method_New_String_ShouldRegisterCall() sut.DirectoryInfo.New(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.DirectoryInfo.ShouldOnlyContainMethodCall(nameof(IDirectoryInfoFactory.New), path); } @@ -26,6 +27,7 @@ public void Method_Wrap_DirectoryInfo_ShouldRegisterCall() sut.DirectoryInfo.Wrap(directoryInfo); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.DirectoryInfo.ShouldOnlyContainMethodCall(nameof(IDirectoryInfoFactory.Wrap), directoryInfo); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoStatisticsTests.cs index 733dcbb65..477a7eb23 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoStatisticsTests.cs @@ -13,6 +13,7 @@ public void Method_Create_ShouldRegisterCall() sut.DirectoryInfo.New("foo").Create(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.Create)); } @@ -26,6 +27,7 @@ public void Method_CreateAsSymbolicLink_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").CreateAsSymbolicLink(pathToTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.CreateAsSymbolicLink), pathToTarget); @@ -40,6 +42,7 @@ public void Method_CreateSubdirectory_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").CreateSubdirectory(path); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.CreateSubdirectory), path); @@ -54,6 +57,7 @@ public void Method_Delete_Bool_ShouldRegisterCall() sut.DirectoryInfo.New("foo").Delete(recursive); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.Delete), recursive); @@ -67,6 +71,7 @@ public void Method_Delete_ShouldRegisterCall() sut.DirectoryInfo.New("foo").Delete(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.Delete)); } @@ -78,6 +83,7 @@ public void Method_EnumerateDirectories_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateDirectories(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateDirectories)); } @@ -92,6 +98,7 @@ public void Method_EnumerateDirectories_String_EnumerationOptions_ShouldRegister sut.DirectoryInfo.New("foo").EnumerateDirectories(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateDirectories), searchPattern, enumerationOptions); @@ -107,6 +114,7 @@ public void Method_EnumerateDirectories_String_SearchOption_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateDirectories(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateDirectories), searchPattern, searchOption); @@ -120,6 +128,7 @@ public void Method_EnumerateDirectories_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateDirectories(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateDirectories), searchPattern); @@ -132,6 +141,7 @@ public void Method_EnumerateFiles_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFiles(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFiles)); } @@ -146,6 +156,7 @@ public void Method_EnumerateFiles_String_EnumerationOptions_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFiles(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFiles), searchPattern, enumerationOptions); @@ -161,6 +172,7 @@ public void Method_EnumerateFiles_String_SearchOption_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFiles(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFiles), searchPattern, searchOption); @@ -174,6 +186,7 @@ public void Method_EnumerateFiles_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFiles(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFiles), searchPattern); @@ -186,6 +199,7 @@ public void Method_EnumerateFileSystemInfos_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFileSystemInfos(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFileSystemInfos)); } @@ -200,6 +214,7 @@ public void Method_EnumerateFileSystemInfos_String_EnumerationOptions_ShouldRegi sut.DirectoryInfo.New("foo").EnumerateFileSystemInfos(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFileSystemInfos), searchPattern, enumerationOptions); @@ -215,6 +230,7 @@ public void Method_EnumerateFileSystemInfos_String_SearchOption_ShouldRegisterCa sut.DirectoryInfo.New("foo").EnumerateFileSystemInfos(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFileSystemInfos), searchPattern, searchOption); @@ -228,6 +244,7 @@ public void Method_EnumerateFileSystemInfos_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").EnumerateFileSystemInfos(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.EnumerateFileSystemInfos), searchPattern); @@ -241,6 +258,7 @@ public void Method_GetDirectories_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetDirectories(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetDirectories)); } @@ -256,6 +274,7 @@ public void Method_GetDirectories_String_EnumerationOptions_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetDirectories(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetDirectories), searchPattern, enumerationOptions); @@ -272,6 +291,7 @@ public void Method_GetDirectories_String_SearchOption_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetDirectories(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetDirectories), searchPattern, searchOption); @@ -286,6 +306,7 @@ public void Method_GetDirectories_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetDirectories(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetDirectories), searchPattern); @@ -299,6 +320,7 @@ public void Method_GetFiles_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFiles(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFiles)); } @@ -314,6 +336,7 @@ public void Method_GetFiles_String_EnumerationOptions_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFiles(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFiles), searchPattern, enumerationOptions); @@ -330,6 +353,7 @@ public void Method_GetFiles_String_SearchOption_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFiles(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFiles), searchPattern, searchOption); @@ -344,6 +368,7 @@ public void Method_GetFiles_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFiles(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFiles), searchPattern); @@ -357,6 +382,7 @@ public void Method_GetFileSystemInfos_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFileSystemInfos(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFileSystemInfos)); } @@ -372,6 +398,7 @@ public void Method_GetFileSystemInfos_String_EnumerationOptions_ShouldRegisterCa sut.DirectoryInfo.New("foo").GetFileSystemInfos(searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFileSystemInfos), searchPattern, enumerationOptions); @@ -388,6 +415,7 @@ public void Method_GetFileSystemInfos_String_SearchOption_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFileSystemInfos(searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFileSystemInfos), searchPattern, searchOption); @@ -402,6 +430,7 @@ public void Method_GetFileSystemInfos_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").GetFileSystemInfos(searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.GetFileSystemInfos), searchPattern); @@ -416,6 +445,7 @@ public void Method_MoveTo_String_ShouldRegisterCall() sut.DirectoryInfo.New("foo").MoveTo(destDirName); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.MoveTo), destDirName); @@ -428,6 +458,7 @@ public void Method_Refresh_ShouldRegisterCall() sut.DirectoryInfo.New("foo").Refresh(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.Refresh)); } @@ -441,6 +472,7 @@ public void Method_ResolveLinkTarget_Bool_ShouldRegisterCall() sut.DirectoryInfo.New("foo").ResolveLinkTarget(returnFinalTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IDirectoryInfo.ResolveLinkTarget), returnFinalTarget); @@ -454,6 +486,7 @@ public void Property_Attributes_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Attributes; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Attributes)); } @@ -467,6 +500,7 @@ public void Property_Attributes_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").Attributes = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.Attributes)); } @@ -479,6 +513,7 @@ public void Property_CreationTime_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").CreationTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.CreationTime)); } @@ -492,6 +527,7 @@ public void Property_CreationTime_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").CreationTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.CreationTime)); } @@ -504,6 +540,7 @@ public void Property_CreationTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").CreationTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.CreationTimeUtc)); } @@ -517,6 +554,7 @@ public void Property_CreationTimeUtc_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").CreationTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.CreationTimeUtc)); } @@ -529,6 +567,7 @@ public void Property_Exists_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Exists; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Exists)); } @@ -541,6 +580,7 @@ public void Property_Extension_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Extension; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Extension)); } @@ -553,6 +593,7 @@ public void Property_FullName_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").FullName; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.FullName)); } @@ -565,6 +606,7 @@ public void Property_LastAccessTime_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").LastAccessTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.LastAccessTime)); } @@ -578,6 +620,7 @@ public void Property_LastAccessTime_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").LastAccessTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.LastAccessTime)); } @@ -590,6 +633,7 @@ public void Property_LastAccessTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").LastAccessTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.LastAccessTimeUtc)); } @@ -603,6 +647,7 @@ public void Property_LastAccessTimeUtc_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").LastAccessTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.LastAccessTimeUtc)); } @@ -615,6 +660,7 @@ public void Property_LastWriteTime_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").LastWriteTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.LastWriteTime)); } @@ -628,6 +674,7 @@ public void Property_LastWriteTime_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").LastWriteTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.LastWriteTime)); } @@ -640,6 +687,7 @@ public void Property_LastWriteTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").LastWriteTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.LastWriteTimeUtc)); } @@ -653,6 +701,7 @@ public void Property_LastWriteTimeUtc_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").LastWriteTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.LastWriteTimeUtc)); } @@ -666,6 +715,7 @@ public void Property_LinkTarget_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").LinkTarget; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.LinkTarget)); } @@ -679,6 +729,7 @@ public void Property_Name_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Name; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Name)); } @@ -691,6 +742,7 @@ public void Property_Parent_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Parent; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Parent)); } @@ -703,6 +755,7 @@ public void Property_Root_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").Root; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.Root)); } @@ -716,6 +769,7 @@ public void Property_UnixFileMode_Get_ShouldRegisterPropertyAccess() _ = sut.DirectoryInfo.New("foo").UnixFileMode; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IDirectoryInfo.UnixFileMode)); } @@ -735,6 +789,7 @@ public void Property_UnixFileMode_Set_ShouldRegisterPropertyAccess() sut.DirectoryInfo.New("foo").UnixFileMode = value; #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DirectoryInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IDirectoryInfo.UnixFileMode)); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryStatisticsTests.cs index 6e149232f..ea6339324 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryStatisticsTests.cs @@ -14,6 +14,7 @@ public void Method_CreateDirectory_String_ShouldRegisterCall() sut.Directory.CreateDirectory(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.CreateDirectory), path); } @@ -30,6 +31,7 @@ public void Method_CreateDirectory_String_UnixFileMode_ShouldRegisterCall() sut.Directory.CreateDirectory(path, unixCreateMode); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.CreateDirectory), path, unixCreateMode); } @@ -45,6 +47,7 @@ public void Method_CreateSymbolicLink_String_String_ShouldRegisterCall() sut.Directory.CreateSymbolicLink(path, pathToTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.CreateSymbolicLink), path, pathToTarget); } @@ -59,6 +62,7 @@ public void Method_CreateTempSubdirectory_String_ShouldRegisterCall() sut.Directory.CreateTempSubdirectory(prefix); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.CreateTempSubdirectory), prefix); @@ -75,6 +79,7 @@ public void Method_Delete_String_Bool_ShouldRegisterCall() sut.Directory.Delete(path, recursive); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.Delete), path, recursive); } @@ -88,6 +93,7 @@ public void Method_Delete_String_ShouldRegisterCall() sut.Directory.Delete(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.Delete), path); } @@ -100,6 +106,7 @@ public void Method_EnumerateDirectories_String_ShouldRegisterCall() sut.Directory.EnumerateDirectories(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateDirectories), path); @@ -116,6 +123,7 @@ public void Method_EnumerateDirectories_String_String_EnumerationOptions_ShouldR sut.Directory.EnumerateDirectories(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateDirectories), path, searchPattern, enumerationOptions); @@ -132,6 +140,7 @@ public void Method_EnumerateDirectories_String_String_SearchOption_ShouldRegiste sut.Directory.EnumerateDirectories(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateDirectories), path, searchPattern, searchOption); @@ -146,6 +155,7 @@ public void Method_EnumerateDirectories_String_String_ShouldRegisterCall() sut.Directory.EnumerateDirectories(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateDirectories), path, searchPattern); @@ -159,6 +169,7 @@ public void Method_EnumerateFiles_String_ShouldRegisterCall() sut.Directory.EnumerateFiles(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.EnumerateFiles), path); } @@ -174,6 +185,7 @@ public void Method_EnumerateFiles_String_String_EnumerationOptions_ShouldRegiste sut.Directory.EnumerateFiles(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.EnumerateFiles), path, searchPattern, enumerationOptions); } @@ -189,6 +201,7 @@ public void Method_EnumerateFiles_String_String_SearchOption_ShouldRegisterCall( sut.Directory.EnumerateFiles(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.EnumerateFiles), path, searchPattern, searchOption); } @@ -202,6 +215,7 @@ public void Method_EnumerateFiles_String_String_ShouldRegisterCall() sut.Directory.EnumerateFiles(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.EnumerateFiles), path, searchPattern); } @@ -214,6 +228,7 @@ public void Method_EnumerateFileSystemEntries_String_ShouldRegisterCall() sut.Directory.EnumerateFileSystemEntries(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateFileSystemEntries), path); @@ -231,6 +246,7 @@ public void sut.Directory.EnumerateFileSystemEntries(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateFileSystemEntries), path, searchPattern, enumerationOptions); @@ -247,6 +263,7 @@ public void Method_EnumerateFileSystemEntries_String_String_SearchOption_ShouldR sut.Directory.EnumerateFileSystemEntries(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateFileSystemEntries), path, searchPattern, searchOption); @@ -261,6 +278,7 @@ public void Method_EnumerateFileSystemEntries_String_String_ShouldRegisterCall() sut.Directory.EnumerateFileSystemEntries(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.EnumerateFileSystemEntries), path, searchPattern); @@ -274,6 +292,7 @@ public void Method_Exists_String_ShouldRegisterCall() sut.Directory.Exists(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.Exists), path); } @@ -286,6 +305,7 @@ public void Method_GetCreationTime_String_ShouldRegisterCall() sut.Directory.GetCreationTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetCreationTime), path); } @@ -298,6 +318,7 @@ public void Method_GetCreationTimeUtc_String_ShouldRegisterCall() sut.Directory.GetCreationTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetCreationTimeUtc), path); } @@ -309,6 +330,7 @@ public void Method_GetCurrentDirectory_ShouldRegisterCall() sut.Directory.GetCurrentDirectory(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetCurrentDirectory)); } @@ -322,6 +344,7 @@ public void Method_GetDirectories_String_ShouldRegisterCall() sut.Directory.GetDirectories(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetDirectories), path); } @@ -338,6 +361,7 @@ public void Method_GetDirectories_String_String_EnumerationOptions_ShouldRegiste sut.Directory.GetDirectories(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetDirectories), path, searchPattern, enumerationOptions); } @@ -354,6 +378,7 @@ public void Method_GetDirectories_String_String_SearchOption_ShouldRegisterCall( sut.Directory.GetDirectories(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetDirectories), path, searchPattern, searchOption); } @@ -368,6 +393,7 @@ public void Method_GetDirectories_String_String_ShouldRegisterCall() sut.Directory.GetDirectories(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetDirectories), path, searchPattern); } @@ -380,6 +406,7 @@ public void Method_GetDirectoryRoot_String_ShouldRegisterCall() sut.Directory.GetDirectoryRoot(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetDirectoryRoot), path); } @@ -393,6 +420,7 @@ public void Method_GetFiles_String_ShouldRegisterCall() sut.Directory.GetFiles(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetFiles), path); } @@ -409,6 +437,7 @@ public void Method_GetFiles_String_String_EnumerationOptions_ShouldRegisterCall( sut.Directory.GetFiles(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetFiles), path, searchPattern, enumerationOptions); } @@ -425,6 +454,7 @@ public void Method_GetFiles_String_String_SearchOption_ShouldRegisterCall() sut.Directory.GetFiles(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetFiles), path, searchPattern, searchOption); } @@ -439,6 +469,7 @@ public void Method_GetFiles_String_String_ShouldRegisterCall() sut.Directory.GetFiles(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetFiles), path, searchPattern); } @@ -452,6 +483,7 @@ public void Method_GetFileSystemEntries_String_ShouldRegisterCall() sut.Directory.GetFileSystemEntries(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetFileSystemEntries), path); @@ -469,6 +501,7 @@ public void Method_GetFileSystemEntries_String_String_EnumerationOptions_ShouldR sut.Directory.GetFileSystemEntries(path, searchPattern, enumerationOptions); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetFileSystemEntries), path, searchPattern, enumerationOptions); @@ -486,6 +519,7 @@ public void Method_GetFileSystemEntries_String_String_SearchOption_ShouldRegiste sut.Directory.GetFileSystemEntries(path, searchPattern, searchOption); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetFileSystemEntries), path, searchPattern, searchOption); @@ -501,6 +535,7 @@ public void Method_GetFileSystemEntries_String_String_ShouldRegisterCall() sut.Directory.GetFileSystemEntries(path, searchPattern); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetFileSystemEntries), path, searchPattern); @@ -514,6 +549,7 @@ public void Method_GetLastAccessTime_String_ShouldRegisterCall() sut.Directory.GetLastAccessTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetLastAccessTime), path); } @@ -526,6 +562,7 @@ public void Method_GetLastAccessTimeUtc_String_ShouldRegisterCall() sut.Directory.GetLastAccessTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.GetLastAccessTimeUtc), path); @@ -539,6 +576,7 @@ public void Method_GetLastWriteTime_String_ShouldRegisterCall() sut.Directory.GetLastWriteTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetLastWriteTime), path); } @@ -551,6 +589,7 @@ public void Method_GetLastWriteTimeUtc_String_ShouldRegisterCall() sut.Directory.GetLastWriteTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetLastWriteTimeUtc), path); } @@ -562,6 +601,7 @@ public void Method_GetLogicalDrives_ShouldRegisterCall() sut.Directory.GetLogicalDrives(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetLogicalDrives)); } @@ -573,6 +613,7 @@ public void Method_GetParent_String_ShouldRegisterCall() sut.Directory.GetParent(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.GetParent), path); } @@ -587,6 +628,7 @@ public void Method_Move_String_String_ShouldRegisterCall() sut.Directory.Move(sourceDirName, destDirName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.Move), sourceDirName, destDirName); } @@ -601,6 +643,7 @@ public void Method_ResolveLinkTarget_String_Bool_ShouldRegisterCall() sut.Directory.ResolveLinkTarget(linkPath, returnFinalTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.ResolveLinkTarget), linkPath, returnFinalTarget); } @@ -616,6 +659,7 @@ public void Method_SetCreationTime_String_DateTime_ShouldRegisterCall() sut.Directory.SetCreationTime(path, creationTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetCreationTime), path, creationTime); } @@ -630,6 +674,7 @@ public void Method_SetCreationTimeUtc_String_DateTime_ShouldRegisterCall() sut.Directory.SetCreationTimeUtc(path, creationTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetCreationTimeUtc), path, creationTimeUtc); } @@ -643,6 +688,7 @@ public void Method_SetCurrentDirectory_String_ShouldRegisterCall() sut.Directory.SetCurrentDirectory(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetCurrentDirectory), path); } @@ -657,6 +703,7 @@ public void Method_SetLastAccessTime_String_DateTime_ShouldRegisterCall() sut.Directory.SetLastAccessTime(path, lastAccessTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetLastAccessTime), path, lastAccessTime); } @@ -671,6 +718,7 @@ public void Method_SetLastAccessTimeUtc_String_DateTime_ShouldRegisterCall() sut.Directory.SetLastAccessTimeUtc(path, lastAccessTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall( nameof(IDirectory.SetLastAccessTimeUtc), path, lastAccessTimeUtc); @@ -686,6 +734,7 @@ public void Method_SetLastWriteTime_String_DateTime_ShouldRegisterCall() sut.Directory.SetLastWriteTime(path, lastWriteTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetLastWriteTime), path, lastWriteTime); } @@ -700,6 +749,7 @@ public void Method_SetLastWriteTimeUtc_String_DateTime_ShouldRegisterCall() sut.Directory.SetLastWriteTimeUtc(path, lastWriteTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Directory.ShouldOnlyContainMethodCall(nameof(IDirectory.SetLastWriteTimeUtc), path, lastWriteTimeUtc); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoFactoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoFactoryStatisticsTests.cs index 3f14ded1d..d289b51f0 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoFactoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoFactoryStatisticsTests.cs @@ -14,6 +14,7 @@ public void Method_GetDrives_ShouldRegisterCall() sut.DriveInfo.GetDrives(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.DriveInfo.ShouldOnlyContainMethodCall(nameof(IDriveInfoFactory.GetDrives)); } @@ -25,6 +26,7 @@ public void Method_New_String_ShouldRegisterCall() sut.DriveInfo.New(driveName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.DriveInfo.ShouldOnlyContainMethodCall(nameof(IDriveInfoFactory.New), driveName); } @@ -37,6 +39,7 @@ public void Method_Wrap_DriveInfo_ShouldRegisterCall() sut.DriveInfo.Wrap(driveInfo); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.DriveInfo.ShouldOnlyContainMethodCall(nameof(IDriveInfoFactory.Wrap), driveInfo); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoStatisticsTests.cs index 558af657d..7c7ea7159 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoStatisticsTests.cs @@ -14,6 +14,7 @@ public void Property_AvailableFreeSpace_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").AvailableFreeSpace; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.AvailableFreeSpace)); } @@ -27,6 +28,7 @@ public void Property_DriveFormat_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").DriveFormat; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.DriveFormat)); } @@ -40,6 +42,7 @@ public void Property_DriveType_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").DriveType; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.DriveType)); } @@ -53,6 +56,7 @@ public void Property_IsReady_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").IsReady; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.IsReady)); } @@ -66,6 +70,7 @@ public void Property_Name_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").Name; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"].ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.Name)); } @@ -78,6 +83,7 @@ public void Property_RootDirectory_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").RootDirectory; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.RootDirectory)); } @@ -91,6 +97,7 @@ public void Property_TotalFreeSpace_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").TotalFreeSpace; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.TotalFreeSpace)); } @@ -104,6 +111,7 @@ public void Property_TotalSize_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").TotalSize; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.TotalSize)); } @@ -117,6 +125,7 @@ public void Property_VolumeLabel_Get_ShouldRegisterPropertyAccess() _ = sut.DriveInfo.New("F:").VolumeLabel; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertyGetAccess(nameof(IDriveInfo.VolumeLabel)); } @@ -133,6 +142,7 @@ public void Property_VolumeLabel_Set_ShouldRegisterPropertyAccess() sut.DriveInfo.New("F:").VolumeLabel = value; #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.DriveInfo["F:"] .ShouldOnlyContainPropertySetAccess(nameof(IDriveInfo.VolumeLabel)); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoFactoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoFactoryStatisticsTests.cs index 217190a06..794c216e0 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoFactoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoFactoryStatisticsTests.cs @@ -14,6 +14,7 @@ public void Method_New_String_ShouldRegisterCall() sut.FileInfo.New(fileName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileInfo.ShouldOnlyContainMethodCall(nameof(IFileInfoFactory.New), fileName); } @@ -26,6 +27,7 @@ public void Method_Wrap_FileInfo_ShouldRegisterCall() sut.FileInfo.Wrap(fileInfo); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileInfo.ShouldOnlyContainMethodCall(nameof(IFileInfoFactory.Wrap), fileInfo); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoStatisticsTests.cs index a65e5862b..02705fd07 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoStatisticsTests.cs @@ -13,6 +13,7 @@ public void Method_AppendText_ShouldRegisterCall() sut.FileInfo.New("foo").AppendText(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.AppendText)); } @@ -27,6 +28,7 @@ public void Method_CopyTo_String_Bool_ShouldRegisterCall() sut.FileInfo.New("foo").CopyTo(destFileName, overwrite); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.CopyTo), destFileName, overwrite); @@ -41,6 +43,7 @@ public void Method_CopyTo_String_ShouldRegisterCall() sut.FileInfo.New("foo").CopyTo(destFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.CopyTo), destFileName); @@ -53,6 +56,7 @@ public void Method_Create_ShouldRegisterCall() sut.FileInfo.New("foo").Create(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Create)); } @@ -66,6 +70,7 @@ public void Method_CreateAsSymbolicLink_String_ShouldRegisterCall() sut.FileInfo.New("foo").CreateAsSymbolicLink(pathToTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.CreateAsSymbolicLink), pathToTarget); @@ -79,6 +84,7 @@ public void Method_CreateText_ShouldRegisterCall() sut.FileInfo.New("foo").CreateText(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.CreateText)); } @@ -94,6 +100,7 @@ public void Method_Decrypt_ShouldRegisterCall() sut.FileInfo.New("foo").Decrypt(); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Decrypt)); } @@ -106,6 +113,7 @@ public void Method_Delete_ShouldRegisterCall() sut.FileInfo.New("foo").Delete(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Delete)); } @@ -121,6 +129,7 @@ public void Method_Encrypt_ShouldRegisterCall() sut.FileInfo.New("foo").Encrypt(); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Encrypt)); } @@ -136,6 +145,7 @@ public void Method_MoveTo_String_Bool_ShouldRegisterCall() sut.FileInfo.New("foo").MoveTo(destFileName, overwrite); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.MoveTo), destFileName, overwrite); @@ -151,6 +161,7 @@ public void Method_MoveTo_String_ShouldRegisterCall() sut.FileInfo.New("foo").MoveTo(destFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.MoveTo), destFileName); @@ -166,6 +177,7 @@ public void Method_Open_FileMode_FileAccess_FileShare_ShouldRegisterCall() sut.FileInfo.New("foo").Open(mode, access, share); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Open), mode, access, share); @@ -180,6 +192,7 @@ public void Method_Open_FileMode_FileAccess_ShouldRegisterCall() sut.FileInfo.New("foo").Open(mode, access); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Open), mode, access); @@ -193,6 +206,7 @@ public void Method_Open_FileMode_ShouldRegisterCall() sut.FileInfo.New("foo").Open(mode); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Open), mode); @@ -208,6 +222,7 @@ public void Method_Open_FileStreamOptions_ShouldRegisterCall() sut.FileInfo.New("foo").Open(options); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Open), options); @@ -222,6 +237,7 @@ public void Method_OpenRead_ShouldRegisterCall() sut.FileInfo.New("foo").OpenRead(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.OpenRead)); } @@ -234,6 +250,7 @@ public void Method_OpenText_ShouldRegisterCall() sut.FileInfo.New("foo").OpenText(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.OpenText)); } @@ -245,6 +262,7 @@ public void Method_OpenWrite_ShouldRegisterCall() sut.FileInfo.New("foo").OpenWrite(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.OpenWrite)); } @@ -256,6 +274,7 @@ public void Method_Refresh_ShouldRegisterCall() sut.FileInfo.New("foo").Refresh(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Refresh)); } @@ -272,6 +291,7 @@ public void Method_Replace_String_String_Bool_ShouldRegisterCall() sut.FileInfo.New("foo").Replace(destinationFileName, destinationBackupFileName, ignoreMetadataErrors); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Replace), destinationFileName, destinationBackupFileName, ignoreMetadataErrors); @@ -287,6 +307,7 @@ public void Method_Replace_String_String_ShouldRegisterCall() sut.FileInfo.New("foo").Replace(destinationFileName, destinationBackupFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall(nameof(IFileInfo.Replace), destinationFileName, destinationBackupFileName); @@ -301,6 +322,7 @@ public void Method_ResolveLinkTarget_Bool_ShouldRegisterCall() sut.FileInfo.New("foo").ResolveLinkTarget(returnFinalTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainMethodCall( nameof(IFileInfo.ResolveLinkTarget), @@ -316,6 +338,7 @@ public void Property_Attributes_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Attributes; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Attributes)); } @@ -329,6 +352,7 @@ public void Property_Attributes_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").Attributes = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.Attributes)); } @@ -341,6 +365,7 @@ public void Property_CreationTime_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").CreationTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.CreationTime)); } @@ -354,6 +379,7 @@ public void Property_CreationTime_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").CreationTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.CreationTime)); } @@ -366,6 +392,7 @@ public void Property_CreationTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").CreationTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.CreationTimeUtc)); } @@ -379,6 +406,7 @@ public void Property_CreationTimeUtc_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").CreationTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.CreationTimeUtc)); } @@ -391,6 +419,7 @@ public void Property_Directory_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Directory; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Directory)); } @@ -403,6 +432,7 @@ public void Property_DirectoryName_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").DirectoryName; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.DirectoryName)); } @@ -415,6 +445,7 @@ public void Property_Exists_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Exists; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"].ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Exists)); } @@ -426,6 +457,7 @@ public void Property_Extension_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Extension; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Extension)); } @@ -438,6 +470,7 @@ public void Property_FullName_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").FullName; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.FullName)); } @@ -450,6 +483,7 @@ public void Property_IsReadOnly_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").IsReadOnly; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.IsReadOnly)); } @@ -463,6 +497,7 @@ public void Property_IsReadOnly_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").IsReadOnly = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.IsReadOnly)); } @@ -475,6 +510,7 @@ public void Property_LastAccessTime_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").LastAccessTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.LastAccessTime)); } @@ -488,6 +524,7 @@ public void Property_LastAccessTime_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").LastAccessTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.LastAccessTime)); } @@ -500,6 +537,7 @@ public void Property_LastAccessTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").LastAccessTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.LastAccessTimeUtc)); } @@ -513,6 +551,7 @@ public void Property_LastAccessTimeUtc_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").LastAccessTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.LastAccessTimeUtc)); } @@ -525,6 +564,7 @@ public void Property_LastWriteTime_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").LastWriteTime; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.LastWriteTime)); } @@ -538,6 +578,7 @@ public void Property_LastWriteTime_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").LastWriteTime = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.LastWriteTime)); } @@ -550,6 +591,7 @@ public void Property_LastWriteTimeUtc_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").LastWriteTimeUtc; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.LastWriteTimeUtc)); } @@ -563,6 +605,7 @@ public void Property_LastWriteTimeUtc_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").LastWriteTimeUtc = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.LastWriteTimeUtc)); } @@ -575,6 +618,7 @@ public void Property_Length_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Length; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"].ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Length)); } @@ -587,6 +631,7 @@ public void Property_LinkTarget_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").LinkTarget; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.LinkTarget)); } @@ -600,6 +645,7 @@ public void Property_Name_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").Name; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"].ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.Name)); } @@ -612,6 +658,7 @@ public void Property_UnixFileMode_Get_ShouldRegisterPropertyAccess() _ = sut.FileInfo.New("foo").UnixFileMode; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileInfo.UnixFileMode)); } @@ -631,6 +678,7 @@ public void Property_UnixFileMode_Set_ShouldRegisterPropertyAccess() sut.FileInfo.New("foo").UnixFileMode = value; #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileInfo["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileInfo.UnixFileMode)); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStatisticsTests.cs index 5d59a866c..ff12cb434 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStatisticsTests.cs @@ -27,6 +27,7 @@ public void Method_AppendAllLines_String_IEnumerableString_Encoding_ShouldRegist sut.File.AppendAllLines(path, contents, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllLines), path, contents, encoding); } @@ -40,6 +41,7 @@ public void Method_AppendAllLines_String_IEnumerableString_ShouldRegisterCall() sut.File.AppendAllLines(path, contents); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllLines), path, contents); } @@ -56,6 +58,7 @@ public async Task await sut.File.AppendAllLinesAsync(path, contents, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllLinesAsync), path, contents, cancellationToken); } @@ -74,6 +77,7 @@ public async Task await sut.File.AppendAllLinesAsync(path, contents, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllLinesAsync), path, contents, encoding, cancellationToken); } @@ -89,6 +93,7 @@ public void Method_AppendAllText_String_String_Encoding_ShouldRegisterCall() sut.File.AppendAllText(path, contents, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllText), path, contents, encoding); } @@ -102,6 +107,7 @@ public void Method_AppendAllText_String_String_ShouldRegisterCall() sut.File.AppendAllText(path, contents); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllText), path, contents); } @@ -117,6 +123,7 @@ public async Task Method_AppendAllTextAsync_String_String_CancellationToken_Shou await sut.File.AppendAllTextAsync(path, contents, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllTextAsync), path, contents, cancellationToken); } @@ -135,6 +142,7 @@ public async Task await sut.File.AppendAllTextAsync(path, contents, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendAllTextAsync), path, contents, encoding, cancellationToken); } @@ -148,6 +156,7 @@ public void Method_AppendText_String_ShouldRegisterCall() sut.File.AppendText(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.AppendText), path); } @@ -163,6 +172,7 @@ public void Method_Copy_String_String_Bool_ShouldRegisterCall() sut.File.Copy(sourceFileName, destFileName, overwrite); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Copy), sourceFileName, destFileName, overwrite); } @@ -177,6 +187,7 @@ public void Method_Copy_String_String_ShouldRegisterCall() sut.File.Copy(sourceFileName, destFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Copy), sourceFileName, destFileName); } @@ -191,6 +202,7 @@ public void Method_Create_String_Int_FileOptions_ShouldRegisterCall() sut.File.Create(path, bufferSize, options); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Create), path, bufferSize, options); } @@ -204,6 +216,7 @@ public void Method_Create_String_Int_ShouldRegisterCall() sut.File.Create(path, bufferSize); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Create), path, bufferSize); } @@ -216,6 +229,7 @@ public void Method_Create_String_ShouldRegisterCall() sut.File.Create(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Create), path); } @@ -230,6 +244,7 @@ public void Method_CreateSymbolicLink_String_String_ShouldRegisterCall() sut.File.CreateSymbolicLink(path, pathToTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.CreateSymbolicLink), path, pathToTarget); } @@ -243,6 +258,7 @@ public void Method_CreateText_String_ShouldRegisterCall() sut.File.CreateText(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.CreateText), path); } @@ -260,6 +276,7 @@ public void Method_Decrypt_String_ShouldRegisterCall() sut.File.Decrypt(path); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Decrypt), path); } @@ -273,6 +290,7 @@ public void Method_Delete_String_ShouldRegisterCall() sut.File.Delete(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Delete), path); } @@ -290,6 +308,7 @@ public void Method_Encrypt_String_ShouldRegisterCall() sut.File.Encrypt(path); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Encrypt), path); } @@ -302,6 +321,7 @@ public void Method_Exists_String_ShouldRegisterCall() sut.File.Exists(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Exists), path); } @@ -318,6 +338,7 @@ public void Method_GetAttributes_SafeFileHandle_ShouldRegisterCall() sut.File.GetAttributes(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetAttributes), fileHandle); } @@ -332,6 +353,7 @@ public void Method_GetAttributes_String_ShouldRegisterCall() sut.File.GetAttributes(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetAttributes), path); } @@ -348,6 +370,7 @@ public void Method_GetCreationTime_SafeFileHandle_ShouldRegisterCall() sut.File.GetCreationTime(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetCreationTime), fileHandle); } @@ -362,6 +385,7 @@ public void Method_GetCreationTime_String_ShouldRegisterCall() sut.File.GetCreationTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetCreationTime), path); } @@ -378,6 +402,7 @@ public void Method_GetCreationTimeUtc_SafeFileHandle_ShouldRegisterCall() sut.File.GetCreationTimeUtc(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetCreationTimeUtc), fileHandle); } @@ -392,6 +417,7 @@ public void Method_GetCreationTimeUtc_String_ShouldRegisterCall() sut.File.GetCreationTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetCreationTimeUtc), path); } @@ -408,6 +434,7 @@ public void Method_GetLastAccessTime_SafeFileHandle_ShouldRegisterCall() sut.File.GetLastAccessTime(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastAccessTime), fileHandle); } @@ -422,6 +449,7 @@ public void Method_GetLastAccessTime_String_ShouldRegisterCall() sut.File.GetLastAccessTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastAccessTime), path); } @@ -438,6 +466,7 @@ public void Method_GetLastAccessTimeUtc_SafeFileHandle_ShouldRegisterCall() sut.File.GetLastAccessTimeUtc(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastAccessTimeUtc), fileHandle); } @@ -452,6 +481,7 @@ public void Method_GetLastAccessTimeUtc_String_ShouldRegisterCall() sut.File.GetLastAccessTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastAccessTimeUtc), path); } @@ -468,6 +498,7 @@ public void Method_GetLastWriteTime_SafeFileHandle_ShouldRegisterCall() sut.File.GetLastWriteTime(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastWriteTime), fileHandle); } @@ -482,6 +513,7 @@ public void Method_GetLastWriteTime_String_ShouldRegisterCall() sut.File.GetLastWriteTime(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastWriteTime), path); } @@ -498,6 +530,7 @@ public void Method_GetLastWriteTimeUtc_SafeFileHandle_ShouldRegisterCall() sut.File.GetLastWriteTimeUtc(fileHandle); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastWriteTimeUtc), fileHandle); } @@ -512,6 +545,7 @@ public void Method_GetLastWriteTimeUtc_String_ShouldRegisterCall() sut.File.GetLastWriteTimeUtc(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetLastWriteTimeUtc), path); } @@ -532,6 +566,7 @@ public void Method_GetUnixFileMode_SafeFileHandle_ShouldRegisterCall() sut.File.GetUnixFileMode(fileHandle); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetUnixFileMode), fileHandle); } @@ -551,6 +586,7 @@ public void Method_GetUnixFileMode_String_ShouldRegisterCall() sut.File.GetUnixFileMode(path); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.GetUnixFileMode), path); } @@ -568,6 +604,7 @@ public void Method_Move_String_String_Bool_ShouldRegisterCall() sut.File.Move(sourceFileName, destFileName, overwrite); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Move), sourceFileName, destFileName, overwrite); } @@ -583,6 +620,7 @@ public void Method_Move_String_String_ShouldRegisterCall() sut.File.Move(sourceFileName, destFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Move), sourceFileName, destFileName); } @@ -598,6 +636,7 @@ public void Method_Open_String_FileMode_FileAccess_FileShare_ShouldRegisterCall( sut.File.Open(path, mode, access, share); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Open), path, mode, access, share); } @@ -612,6 +651,7 @@ public void Method_Open_String_FileMode_FileAccess_ShouldRegisterCall() sut.File.Open(path, mode, access); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Open), path, mode, access); } @@ -625,6 +665,7 @@ public void Method_Open_String_FileMode_ShouldRegisterCall() sut.File.Open(path, mode); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Open), path, mode); } @@ -640,6 +681,7 @@ public void Method_Open_String_FileStreamOptions_ShouldRegisterCall() sut.File.Open(path, options); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Open), path, options); } @@ -654,6 +696,7 @@ public void Method_OpenRead_String_ShouldRegisterCall() sut.File.OpenRead(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.OpenRead), path); } @@ -667,6 +710,7 @@ public void Method_OpenText_String_ShouldRegisterCall() sut.File.OpenText(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.OpenText), path); } @@ -679,6 +723,7 @@ public void Method_OpenWrite_String_ShouldRegisterCall() sut.File.OpenWrite(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.OpenWrite), path); } @@ -692,6 +737,7 @@ public void Method_ReadAllBytes_String_ShouldRegisterCall() sut.File.ReadAllBytes(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllBytes), path); } @@ -707,6 +753,7 @@ public async Task Method_ReadAllBytesAsync_String_CancellationToken_ShouldRegist await sut.File.ReadAllBytesAsync(path, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllBytesAsync), path, cancellationToken); } @@ -722,6 +769,7 @@ public void Method_ReadAllLines_String_Encoding_ShouldRegisterCall() sut.File.ReadAllLines(path, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllLines), path, encoding); } @@ -735,6 +783,7 @@ public void Method_ReadAllLines_String_ShouldRegisterCall() sut.File.ReadAllLines(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllLines), path); } @@ -750,6 +799,7 @@ public async Task Method_ReadAllLinesAsync_String_CancellationToken_ShouldRegist await sut.File.ReadAllLinesAsync(path, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllLinesAsync), path, cancellationToken); } @@ -768,6 +818,7 @@ public async Task await sut.File.ReadAllLinesAsync(path, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllLinesAsync), path, encoding, cancellationToken); } @@ -783,6 +834,7 @@ public void Method_ReadAllText_String_Encoding_ShouldRegisterCall() sut.File.ReadAllText(path, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllText), path, encoding); } @@ -796,6 +848,7 @@ public void Method_ReadAllText_String_ShouldRegisterCall() sut.File.ReadAllText(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllText), path); } @@ -811,6 +864,7 @@ public async Task Method_ReadAllTextAsync_String_CancellationToken_ShouldRegiste await sut.File.ReadAllTextAsync(path, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllTextAsync), path, cancellationToken); } @@ -828,6 +882,7 @@ public async Task Method_ReadAllTextAsync_String_Encoding_CancellationToken_Shou await sut.File.ReadAllTextAsync(path, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadAllTextAsync), path, encoding, cancellationToken); } @@ -843,6 +898,7 @@ public void Method_ReadLines_String_Encoding_ShouldRegisterCall() sut.File.ReadLines(path, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadLines), path, encoding); } @@ -856,6 +912,7 @@ public void Method_ReadLines_String_ShouldRegisterCall() sut.File.ReadLines(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadLines), path); } @@ -871,6 +928,7 @@ public void Method_ReadLinesAsync_String_CancellationToken_ShouldRegisterCall() sut.File.ReadLinesAsync(path, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadLinesAsync), path, cancellationToken); } @@ -888,6 +946,7 @@ public void Method_ReadLinesAsync_String_Encoding_CancellationToken_ShouldRegist sut.File.ReadLinesAsync(path, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ReadLinesAsync), path, encoding, cancellationToken); } @@ -906,6 +965,7 @@ public void Method_Replace_String_String_String_Bool_ShouldRegisterCall() sut.File.Replace(sourceFileName, destinationFileName, destinationBackupFileName, ignoreMetadataErrors); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Replace), sourceFileName, destinationFileName, destinationBackupFileName, ignoreMetadataErrors); } @@ -921,6 +981,7 @@ public void Method_Replace_String_String_String_ShouldRegisterCall() sut.File.Replace(sourceFileName, destinationFileName, destinationBackupFileName); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.Replace), sourceFileName, destinationFileName, destinationBackupFileName); } @@ -936,6 +997,7 @@ public void Method_ResolveLinkTarget_String_Bool_ShouldRegisterCall() sut.File.ResolveLinkTarget(linkPath, returnFinalTarget); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.ResolveLinkTarget), linkPath, returnFinalTarget); } @@ -954,6 +1016,7 @@ public void Method_SetAttributes_SafeFileHandle_FileAttributes_ShouldRegisterCal sut.File.SetAttributes(fileHandle, fileAttributes); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetAttributes), fileHandle, fileAttributes); } @@ -969,6 +1032,7 @@ public void Method_SetAttributes_String_FileAttributes_ShouldRegisterCall() sut.File.SetAttributes(path, fileAttributes); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetAttributes), path, fileAttributes); } @@ -986,6 +1050,7 @@ public void Method_SetCreationTime_SafeFileHandle_DateTime_ShouldRegisterCall() sut.File.SetCreationTime(fileHandle, creationTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetCreationTime), fileHandle, creationTime); } @@ -1001,6 +1066,7 @@ public void Method_SetCreationTime_String_DateTime_ShouldRegisterCall() sut.File.SetCreationTime(path, creationTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetCreationTime), path, creationTime); } @@ -1018,6 +1084,7 @@ public void Method_SetCreationTimeUtc_SafeFileHandle_DateTime_ShouldRegisterCall sut.File.SetCreationTimeUtc(fileHandle, creationTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetCreationTimeUtc), fileHandle, creationTimeUtc); } @@ -1033,6 +1100,7 @@ public void Method_SetCreationTimeUtc_String_DateTime_ShouldRegisterCall() sut.File.SetCreationTimeUtc(path, creationTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetCreationTimeUtc), path, creationTimeUtc); } @@ -1050,6 +1118,7 @@ public void Method_SetLastAccessTime_SafeFileHandle_DateTime_ShouldRegisterCall( sut.File.SetLastAccessTime(fileHandle, lastAccessTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastAccessTime), fileHandle, lastAccessTime); } @@ -1065,6 +1134,7 @@ public void Method_SetLastAccessTime_String_DateTime_ShouldRegisterCall() sut.File.SetLastAccessTime(path, lastAccessTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastAccessTime), path, lastAccessTime); } @@ -1082,6 +1152,7 @@ public void Method_SetLastAccessTimeUtc_SafeFileHandle_DateTime_ShouldRegisterCa sut.File.SetLastAccessTimeUtc(fileHandle, lastAccessTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastAccessTimeUtc), fileHandle, lastAccessTimeUtc); } @@ -1097,6 +1168,7 @@ public void Method_SetLastAccessTimeUtc_String_DateTime_ShouldRegisterCall() sut.File.SetLastAccessTimeUtc(path, lastAccessTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastAccessTimeUtc), path, lastAccessTimeUtc); } @@ -1114,6 +1186,7 @@ public void Method_SetLastWriteTime_SafeFileHandle_DateTime_ShouldRegisterCall() sut.File.SetLastWriteTime(fileHandle, lastWriteTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastWriteTime), fileHandle, lastWriteTime); } @@ -1129,6 +1202,7 @@ public void Method_SetLastWriteTime_String_DateTime_ShouldRegisterCall() sut.File.SetLastWriteTime(path, lastWriteTime); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastWriteTime), path, lastWriteTime); } @@ -1146,6 +1220,7 @@ public void Method_SetLastWriteTimeUtc_SafeFileHandle_DateTime_ShouldRegisterCal sut.File.SetLastWriteTimeUtc(fileHandle, lastWriteTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastWriteTimeUtc), fileHandle, lastWriteTimeUtc); } @@ -1161,6 +1236,7 @@ public void Method_SetLastWriteTimeUtc_String_DateTime_ShouldRegisterCall() sut.File.SetLastWriteTimeUtc(path, lastWriteTimeUtc); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetLastWriteTimeUtc), path, lastWriteTimeUtc); } @@ -1182,6 +1258,7 @@ public void Method_SetUnixFileMode_SafeFileHandle_UnixFileMode_ShouldRegisterCal sut.File.SetUnixFileMode(fileHandle, mode); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetUnixFileMode), fileHandle, mode); } @@ -1202,6 +1279,7 @@ public void Method_SetUnixFileMode_String_UnixFileMode_ShouldRegisterCall() sut.File.SetUnixFileMode(path, mode); #pragma warning restore CA1416 + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.SetUnixFileMode), path, mode); } @@ -1216,6 +1294,7 @@ public void Method_WriteAllBytes_String_ByteArray_ShouldRegisterCall() sut.File.WriteAllBytes(path, bytes); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllBytes), path, bytes); } @@ -1232,6 +1311,7 @@ public async Task await sut.File.WriteAllBytesAsync(path, bytes, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllBytesAsync), path, bytes, cancellationToken); } @@ -1247,6 +1327,7 @@ public void Method_WriteAllLines_String_IEnumerableString_Encoding_ShouldRegiste sut.File.WriteAllLines(path, contents, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLines), path, contents, encoding); } @@ -1260,6 +1341,7 @@ public void Method_WriteAllLines_String_IEnumerableString_ShouldRegisterCall() sut.File.WriteAllLines(path, contents); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLines), path, contents); } @@ -1274,6 +1356,7 @@ public void Method_WriteAllLines_String_StringArray_Encoding_ShouldRegisterCall( sut.File.WriteAllLines(path, contents, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLines), path, contents, encoding); } @@ -1287,6 +1370,7 @@ public void Method_WriteAllLines_String_StringArray_ShouldRegisterCall() sut.File.WriteAllLines(path, contents); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLines), path, contents); } @@ -1303,6 +1387,7 @@ public async Task await sut.File.WriteAllLinesAsync(path, contents, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLinesAsync), path, contents, cancellationToken); } @@ -1321,6 +1406,7 @@ public async Task await sut.File.WriteAllLinesAsync(path, contents, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllLinesAsync), path, contents, encoding, cancellationToken); } @@ -1336,6 +1422,7 @@ public void Method_WriteAllText_String_String_Encoding_ShouldRegisterCall() sut.File.WriteAllText(path, contents, encoding); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllText), path, contents, encoding); } @@ -1349,6 +1436,7 @@ public void Method_WriteAllText_String_String_ShouldRegisterCall() sut.File.WriteAllText(path, contents); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllText), path, contents); } @@ -1364,6 +1452,7 @@ public async Task Method_WriteAllTextAsync_String_String_CancellationToken_Shoul await sut.File.WriteAllTextAsync(path, contents, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllTextAsync), path, contents, cancellationToken); } @@ -1382,6 +1471,7 @@ public async Task await sut.File.WriteAllTextAsync(path, contents, encoding, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.File.ShouldOnlyContainMethodCall(nameof(IFile.WriteAllTextAsync), path, contents, encoding, cancellationToken); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamFactoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamFactoryStatisticsTests.cs index 9fa140baa..6ca1006f6 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamFactoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamFactoryStatisticsTests.cs @@ -25,6 +25,7 @@ public void Method_New_SafeFileHandle_FileAccess_Int_Bool_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(handle, access, bufferSize, isAsync); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), handle, access, bufferSize, isAsync); } @@ -44,6 +45,7 @@ public void Method_New_SafeFileHandle_FileAccess_Int_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(handle, access, bufferSize); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), handle, access, bufferSize); } @@ -61,6 +63,7 @@ public void Method_New_SafeFileHandle_FileAccess_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(handle, access); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), handle, access); } @@ -80,6 +83,7 @@ public void Method_New_String_FileMode_FileAccess_FileShare_Int_Bool_ShouldRegis using FileSystemStream result = sut.FileStream.New(path, mode, access, share, bufferSize, useAsync); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode, access, share, bufferSize, useAsync); } @@ -98,6 +102,7 @@ public void Method_New_String_FileMode_FileAccess_FileShare_Int_FileOptions_Shou using FileSystemStream result = sut.FileStream.New(path, mode, access, share, bufferSize, options); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode, access, share, bufferSize, options); } @@ -114,6 +119,7 @@ public void Method_New_String_FileMode_FileAccess_FileShare_Int_ShouldRegisterCa using FileSystemStream result = sut.FileStream.New(path, mode, access, share, bufferSize); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode, access, share, bufferSize); } @@ -129,6 +135,7 @@ public void Method_New_String_FileMode_FileAccess_FileShare_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(path, mode, access, share); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode, access, share); } @@ -143,6 +150,7 @@ public void Method_New_String_FileMode_FileAccess_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(path, mode, access); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode, access); } @@ -156,6 +164,7 @@ public void Method_New_String_FileMode_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(path, mode); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, mode); } @@ -171,6 +180,7 @@ public void Method_New_String_FileStreamOptions_ShouldRegisterCall() using FileSystemStream result = sut.FileStream.New(path, options); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.New), path, options); } @@ -191,6 +201,7 @@ public void Method_Wrap_FileStream_ShouldRegisterCall() // Wrap is not possible on the MockFileSystem, but should still be registered! } + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileStream.ShouldOnlyContainMethodCall(nameof(IFileStreamFactory.Wrap), fileStream); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamStatisticsTests.cs index 8ce4ea31c..b863f2f00 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamStatisticsTests.cs @@ -22,6 +22,7 @@ public void Method_BeginRead_ByteArray_Int_Int_AsyncCallback_Object_ShouldRegist fileStream.BeginRead(buffer, offset, count, callback, state); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.BeginRead), buffer, offset, count, callback, state); @@ -40,6 +41,7 @@ public void Method_BeginWrite_ByteArray_Int_Int_AsyncCallback_Object_ShouldRegis fileStream.BeginWrite(buffer, offset, count, callback, state); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.BeginWrite), buffer, offset, count, callback, state); @@ -55,6 +57,7 @@ public void Method_CopyTo_Stream_Int_ShouldRegisterCall() fileStream.CopyTo(destination, bufferSize); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.CopyTo), destination, bufferSize); @@ -71,6 +74,7 @@ public async Task Method_CopyToAsync_Stream_Int_CancellationToken_ShouldRegister await fileStream.CopyToAsync(destination, bufferSize, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.CopyToAsync), destination, bufferSize, cancellationToken); @@ -86,6 +90,7 @@ public void Method_EndRead_IAsyncResult_ShouldRegisterCall() fileStream.EndRead(asyncResult); + sut.StatisticsRegistration.TotalCount.Should().Be(3); sut.Statistics.FileStream["foo"].Methods.Length.Should().Be(2); sut.Statistics.FileStream["foo"].Methods.Should() .ContainSingle(c => c.Name == nameof(FileSystemStream.EndRead) && @@ -103,6 +108,7 @@ public void Method_EndWrite_IAsyncResult_ShouldRegisterCall() fileStream.EndWrite(asyncResult); + sut.StatisticsRegistration.TotalCount.Should().Be(3); sut.Statistics.FileStream["foo"].Methods.Length.Should().Be(2); sut.Statistics.FileStream["foo"].Methods.Should() .ContainSingle(c => c.Name == nameof(FileSystemStream.EndWrite) && @@ -119,6 +125,7 @@ public void Method_Flush_Bool_ShouldRegisterCall() fileStream.Flush(flushToDisk); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Flush), flushToDisk); @@ -132,6 +139,7 @@ public void Method_Flush_ShouldRegisterCall() fileStream.Flush(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Flush)); } @@ -145,6 +153,7 @@ public async Task Method_FlushAsync_CancellationToken_ShouldRegisterCall() await fileStream.FlushAsync(cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.FlushAsync), cancellationToken); @@ -161,6 +170,7 @@ public void Method_Read_ByteArray_Int_Int_ShouldRegisterCall() _ = fileStream.Read(buffer, offset, count); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Read), buffer, offset, count); @@ -176,6 +186,7 @@ public void Method_Read_SpanByte_ShouldRegisterCall() _ = fileStream.Read(buffer); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Read), buffer); @@ -194,6 +205,7 @@ public async Task Method_ReadAsync_ByteArray_Int_Int_CancellationToken_ShouldReg _ = await fileStream.ReadAsync(buffer, offset, count, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.ReadAsync), buffer, offset, count, cancellationToken); @@ -210,6 +222,7 @@ public async Task Method_ReadAsync_MemoryByte_CancellationToken_ShouldRegisterCa _ = await fileStream.ReadAsync(buffer, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.ReadAsync), buffer, cancellationToken); @@ -224,6 +237,7 @@ public void Method_ReadByte_ShouldRegisterCall() fileStream.ReadByte(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.ReadByte)); } @@ -238,6 +252,7 @@ public void Method_Seek_Int64_SeekOrigin_ShouldRegisterCall() fileStream.Seek(offset, origin); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Seek), offset, origin); @@ -252,6 +267,7 @@ public void Method_SetLength_Int64_ShouldRegisterCall() fileStream.SetLength(value); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.SetLength), value); @@ -265,6 +281,7 @@ public void Method_ToString_ShouldRegisterCall() _ = fileStream.ToString(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.ToString)); } @@ -280,6 +297,7 @@ public void Method_Write_ByteArray_Int_Int_ShouldRegisterCall() fileStream.Write(buffer, offset, count); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Write), buffer, offset, count); @@ -295,6 +313,7 @@ public void Method_Write_ReadOnlySpanByte_ShouldRegisterCall() fileStream.Write(buffer); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.Write), buffer); @@ -313,6 +332,7 @@ public async Task Method_WriteAsync_ByteArray_Int_Int_CancellationToken_ShouldRe await fileStream.WriteAsync(buffer, offset, count, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.WriteAsync), buffer, offset, count, cancellationToken); @@ -329,6 +349,7 @@ public async Task Method_WriteAsync_ReadOnlyMemoryByte_CancellationToken_ShouldR await fileStream.WriteAsync(buffer, cancellationToken); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.WriteAsync), buffer, cancellationToken); @@ -344,6 +365,7 @@ public void Method_WriteByte_Byte_ShouldRegisterCall() fileStream.WriteByte(value); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainMethodCall(nameof(FileSystemStream.WriteByte), value); @@ -357,6 +379,7 @@ public void Property_CanRead_Get_ShouldRegisterPropertyAccess() _ = fileStream.CanRead; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.CanRead)); } @@ -369,6 +392,7 @@ public void Property_CanSeek_Get_ShouldRegisterPropertyAccess() _ = fileStream.CanSeek; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.CanSeek)); } @@ -381,6 +405,7 @@ public void Property_CanTimeout_Get_ShouldRegisterPropertyAccess() _ = fileStream.CanTimeout; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.CanTimeout)); } @@ -393,6 +418,7 @@ public void Property_CanWrite_Get_ShouldRegisterPropertyAccess() _ = fileStream.CanWrite; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.CanWrite)); } @@ -405,6 +431,7 @@ public void Property_IsAsync_Get_ShouldRegisterPropertyAccess() _ = fileStream.IsAsync; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.IsAsync)); } @@ -417,6 +444,7 @@ public void Property_Length_Get_ShouldRegisterPropertyAccess() _ = fileStream.Length; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.Length)); } @@ -429,6 +457,7 @@ public void Property_Name_Get_ShouldRegisterPropertyAccess() _ = fileStream.Name; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.Name)); } @@ -441,6 +470,7 @@ public void Property_Position_Get_ShouldRegisterPropertyAccess() _ = fileStream.Position; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.Position)); } @@ -454,6 +484,7 @@ public void Property_Position_Set_ShouldRegisterPropertyAccess() fileStream.Position = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertySetAccess(nameof(FileSystemStream.Position)); } @@ -473,6 +504,7 @@ public void Property_ReadTimeout_Get_ShouldRegisterPropertyAccess() // Timeouts are not supported on this stream. } + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.ReadTimeout)); } @@ -493,6 +525,7 @@ public void Property_ReadTimeout_Set_ShouldRegisterPropertyAccess() // Timeouts are not supported on this stream. } + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertySetAccess(nameof(FileSystemStream.ReadTimeout)); } @@ -512,6 +545,7 @@ public void Property_WriteTimeout_Get_ShouldRegisterPropertyAccess() // Timeouts are not supported on this stream. } + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(FileSystemStream.WriteTimeout)); } @@ -532,6 +566,7 @@ public void Property_WriteTimeout_Set_ShouldRegisterPropertyAccess() // Timeouts are not supported on this stream. } + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileStream["foo"] .ShouldOnlyContainPropertySetAccess(nameof(FileSystemStream.WriteTimeout)); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherFactoryStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherFactoryStatisticsTests.cs index d4dae7fd7..98a724227 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherFactoryStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherFactoryStatisticsTests.cs @@ -13,6 +13,7 @@ public void Method_New_ShouldRegisterCall() using IFileSystemWatcher result = sut.FileSystemWatcher.New(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileSystemWatcher.ShouldOnlyContainMethodCall( nameof(IFileSystemWatcherFactory.New)); } @@ -26,6 +27,7 @@ public void Method_New_String_ShouldRegisterCall() using IFileSystemWatcher result = sut.FileSystemWatcher.New(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileSystemWatcher.ShouldOnlyContainMethodCall( nameof(IFileSystemWatcherFactory.New), path); @@ -41,6 +43,7 @@ public void Method_New_String_String_ShouldRegisterCall() using IFileSystemWatcher result = sut.FileSystemWatcher.New(path, filter); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileSystemWatcher.ShouldOnlyContainMethodCall( nameof(IFileSystemWatcherFactory.New), path, filter); @@ -55,6 +58,7 @@ public void Method_Wrap_FileSystemWatcher_ShouldRegisterCall() using IFileSystemWatcher result = sut.FileSystemWatcher.Wrap(fileSystemWatcher); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.FileSystemWatcher.ShouldOnlyContainMethodCall( nameof(IFileSystemWatcherFactory.Wrap), fileSystemWatcher); diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherStatisticsTests.cs index 7c76e5c9a..3cfd9c41d 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherStatisticsTests.cs @@ -18,6 +18,7 @@ public void Method_BeginInit_ShouldRegisterCall() fileSystemWatcher.BeginInit(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainMethodCall(nameof(IFileSystemWatcher.BeginInit)); } @@ -31,6 +32,7 @@ public void Method_EndInit_ShouldRegisterCall() fileSystemWatcher.EndInit(); + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainMethodCall(nameof(IFileSystemWatcher.EndInit)); } @@ -130,6 +132,7 @@ public void Property_EnableRaisingEvents_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").EnableRaisingEvents; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.EnableRaisingEvents)); } @@ -143,6 +146,7 @@ public void Property_EnableRaisingEvents_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").EnableRaisingEvents = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.EnableRaisingEvents)); } @@ -155,6 +159,7 @@ public void Property_Filter_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").Filter; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.Filter)); } @@ -168,6 +173,7 @@ public void Property_Filter_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").Filter = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.Filter)); } @@ -181,6 +187,7 @@ public void Property_Filters_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").Filters; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.Filters)); } @@ -194,6 +201,7 @@ public void Property_IncludeSubdirectories_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").IncludeSubdirectories; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.IncludeSubdirectories)); } @@ -207,6 +215,7 @@ public void Property_IncludeSubdirectories_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").IncludeSubdirectories = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.IncludeSubdirectories)); } @@ -219,6 +228,7 @@ public void Property_InternalBufferSize_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").InternalBufferSize; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.InternalBufferSize)); } @@ -232,6 +242,7 @@ public void Property_InternalBufferSize_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").InternalBufferSize = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.InternalBufferSize)); } @@ -244,6 +255,7 @@ public void Property_NotifyFilter_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").NotifyFilter; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.NotifyFilter)); } @@ -257,6 +269,7 @@ public void Property_NotifyFilter_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").NotifyFilter = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.NotifyFilter)); } @@ -269,6 +282,7 @@ public void Property_Path_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").Path; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.Path)); } @@ -282,6 +296,7 @@ public void Property_Path_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").Path = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.Path)); } @@ -294,6 +309,7 @@ public void Property_Site_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").Site; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.Site)); } @@ -307,6 +323,7 @@ public void Property_Site_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").Site = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.Site)); } @@ -319,6 +336,7 @@ public void Property_SynchronizingObject_Get_ShouldRegisterPropertyAccess() _ = sut.FileSystemWatcher.New("foo").SynchronizingObject; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertyGetAccess(nameof(IFileSystemWatcher.SynchronizingObject)); } @@ -332,6 +350,7 @@ public void Property_SynchronizingObject_Set_ShouldRegisterPropertyAccess() sut.FileSystemWatcher.New("foo").SynchronizingObject = value; + sut.StatisticsRegistration.TotalCount.Should().Be(2); sut.Statistics.FileSystemWatcher["foo"] .ShouldOnlyContainPropertySetAccess(nameof(IFileSystemWatcher.SynchronizingObject)); } diff --git a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/PathStatisticsTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/PathStatisticsTests.cs index 076dc5513..3a5ffad23 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/PathStatisticsTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/PathStatisticsTests.cs @@ -17,6 +17,7 @@ public void Method_ChangeExtension_String_String_ShouldRegisterCall() sut.Path.ChangeExtension(path, extension); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.ChangeExtension), path, extension); } @@ -30,6 +31,7 @@ public void Method_Combine_String_String_ShouldRegisterCall() sut.Path.Combine(path1, path2); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Combine), path1, path2); } @@ -44,6 +46,7 @@ public void Method_Combine_String_String_String_ShouldRegisterCall() sut.Path.Combine(path1, path2, path3); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Combine), path1, path2, path3); } @@ -59,6 +62,7 @@ public void Method_Combine_String_String_String_String_ShouldRegisterCall() sut.Path.Combine(path1, path2, path3, path4); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Combine), path1, path2, path3, path4); } @@ -71,6 +75,7 @@ public void Method_Combine_StringArray_ShouldRegisterCall() sut.Path.Combine(paths); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Combine), paths); } @@ -84,6 +89,7 @@ public void Method_EndsInDirectorySeparator_ReadOnlySpanChar_ShouldRegisterCall( sut.Path.EndsInDirectorySeparator(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.EndsInDirectorySeparator), path); } @@ -98,6 +104,7 @@ public void Method_EndsInDirectorySeparator_String_ShouldRegisterCall() sut.Path.EndsInDirectorySeparator(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.EndsInDirectorySeparator), path); } @@ -112,6 +119,7 @@ public void Method_Exists_String_ShouldRegisterCall() sut.Path.Exists(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Exists), path); } @@ -126,6 +134,7 @@ public void Method_GetDirectoryName_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.GetDirectoryName(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetDirectoryName), path); } @@ -139,6 +148,7 @@ public void Method_GetDirectoryName_String_ShouldRegisterCall() sut.Path.GetDirectoryName(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetDirectoryName), path); } @@ -152,6 +162,7 @@ public void Method_GetExtension_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.GetExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetExtension), path); } @@ -165,6 +176,7 @@ public void Method_GetExtension_String_ShouldRegisterCall() sut.Path.GetExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetExtension), path); } @@ -178,6 +190,7 @@ public void Method_GetFileName_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.GetFileName(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFileName), path); } @@ -191,6 +204,7 @@ public void Method_GetFileName_String_ShouldRegisterCall() sut.Path.GetFileName(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFileName), path); } @@ -204,6 +218,7 @@ public void Method_GetFileNameWithoutExtension_ReadOnlySpanChar_ShouldRegisterCa sut.Path.GetFileNameWithoutExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFileNameWithoutExtension), path); } @@ -217,6 +232,7 @@ public void Method_GetFileNameWithoutExtension_String_ShouldRegisterCall() sut.Path.GetFileNameWithoutExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFileNameWithoutExtension), path); } @@ -229,6 +245,7 @@ public void Method_GetFullPath_String_ShouldRegisterCall() sut.Path.GetFullPath(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFullPath), path); } @@ -243,6 +260,7 @@ public void Method_GetFullPath_String_String_ShouldRegisterCall() sut.Path.GetFullPath(path, basePath); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetFullPath), path, basePath); } @@ -255,6 +273,7 @@ public void Method_GetInvalidFileNameChars_ShouldRegisterCall() sut.Path.GetInvalidFileNameChars(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetInvalidFileNameChars)); } @@ -265,6 +284,7 @@ public void Method_GetInvalidPathChars_ShouldRegisterCall() sut.Path.GetInvalidPathChars(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetInvalidPathChars)); } @@ -277,6 +297,7 @@ public void Method_GetPathRoot_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.GetPathRoot(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetPathRoot), path); } @@ -290,6 +311,7 @@ public void Method_GetPathRoot_String_ShouldRegisterCall() sut.Path.GetPathRoot(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetPathRoot), path); } @@ -301,6 +323,7 @@ public void Method_GetRandomFileName_ShouldRegisterCall() sut.Path.GetRandomFileName(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetRandomFileName)); } @@ -314,6 +337,7 @@ public void Method_GetRelativePath_String_String_ShouldRegisterCall() sut.Path.GetRelativePath(relativeTo, path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetRelativePath), relativeTo, path); } @@ -326,6 +350,7 @@ public void Method_GetTempFileName_ShouldRegisterCall() sut.Path.GetTempFileName(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetTempFileName)); } @@ -336,6 +361,7 @@ public void Method_GetTempPath_ShouldRegisterCall() sut.Path.GetTempPath(); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.GetTempPath)); } @@ -348,6 +374,7 @@ public void Method_HasExtension_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.HasExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.HasExtension), path); } @@ -361,6 +388,7 @@ public void Method_HasExtension_String_ShouldRegisterCall() sut.Path.HasExtension(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.HasExtension), path); } @@ -374,6 +402,7 @@ public void Method_IsPathFullyQualified_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.IsPathFullyQualified(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.IsPathFullyQualified), path); } @@ -388,6 +417,7 @@ public void Method_IsPathFullyQualified_String_ShouldRegisterCall() sut.Path.IsPathFullyQualified(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.IsPathFullyQualified), path); } @@ -402,6 +432,7 @@ public void Method_IsPathRooted_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.IsPathRooted(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.IsPathRooted), path); } @@ -415,6 +446,7 @@ public void Method_IsPathRooted_String_ShouldRegisterCall() sut.Path.IsPathRooted(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.IsPathRooted), path); } @@ -432,6 +464,7 @@ public void sut.Path.Join(path1, path2, path3, path4); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2, path3, path4); } @@ -448,6 +481,7 @@ public void Method_Join_ReadOnlySpanChar_ReadOnlySpanChar_ReadOnlySpanChar_Shoul sut.Path.Join(path1, path2, path3); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2, path3); } @@ -463,6 +497,7 @@ public void Method_Join_ReadOnlySpanChar_ReadOnlySpanChar_ShouldRegisterCall() sut.Path.Join(path1, path2); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2); } @@ -478,6 +513,7 @@ public void Method_Join_String_String_ShouldRegisterCall() sut.Path.Join(path1, path2); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2); } @@ -494,6 +530,7 @@ public void Method_Join_String_String_String_ShouldRegisterCall() sut.Path.Join(path1, path2, path3); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2, path3); } @@ -511,6 +548,7 @@ public void Method_Join_String_String_String_String_ShouldRegisterCall() sut.Path.Join(path1, path2, path3, path4); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), path1, path2, path3, path4); } @@ -525,6 +563,7 @@ public void Method_Join_StringArray_ShouldRegisterCall() sut.Path.Join(paths); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.Join), paths); } @@ -539,6 +578,7 @@ public void Method_TrimEndingDirectorySeparator_ReadOnlySpanChar_ShouldRegisterC sut.Path.TrimEndingDirectorySeparator(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.TrimEndingDirectorySeparator), path); } @@ -553,6 +593,7 @@ public void Method_TrimEndingDirectorySeparator_String_ShouldRegisterCall() sut.Path.TrimEndingDirectorySeparator(path); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.TrimEndingDirectorySeparator), path); } @@ -571,6 +612,7 @@ public void sut.Path.TryJoin(path1, path2, path3, destination, out int charsWritten); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.TryJoin), path1, path2, path3, destination, charsWritten); } @@ -588,6 +630,7 @@ public void sut.Path.TryJoin(path1, path2, destination, out int charsWritten); + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainMethodCall(nameof(IPath.TryJoin), path1, path2, destination, charsWritten); } @@ -600,6 +643,7 @@ public void Property_AltDirectorySeparatorChar_Get_ShouldRegisterPropertyAccess( _ = sut.Path.AltDirectorySeparatorChar; + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainPropertyGetAccess( nameof(IPath.AltDirectorySeparatorChar)); } @@ -611,6 +655,7 @@ public void Property_DirectorySeparatorChar_Get_ShouldRegisterPropertyAccess() _ = sut.Path.DirectorySeparatorChar; + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainPropertyGetAccess( nameof(IPath.DirectorySeparatorChar)); } @@ -622,6 +667,7 @@ public void Property_PathSeparator_Get_ShouldRegisterPropertyAccess() _ = sut.Path.PathSeparator; + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainPropertyGetAccess(nameof(IPath.PathSeparator)); } @@ -632,6 +678,7 @@ public void Property_VolumeSeparatorChar_Get_ShouldRegisterPropertyAccess() _ = sut.Path.VolumeSeparatorChar; + sut.StatisticsRegistration.TotalCount.Should().Be(1); sut.Statistics.Path.ShouldOnlyContainPropertyGetAccess(nameof(IPath.VolumeSeparatorChar)); }