diff --git a/src/Extensions/NexusMods.Paths.Extensions.Nx/Extensions/NxUnpackerBuilderExtensions.cs b/src/Extensions/NexusMods.Paths.Extensions.Nx/Extensions/NxUnpackerBuilderExtensions.cs
index 4849278..1d13526 100644
--- a/src/Extensions/NexusMods.Paths.Extensions.Nx/Extensions/NxUnpackerBuilderExtensions.cs
+++ b/src/Extensions/NexusMods.Paths.Extensions.Nx/Extensions/NxUnpackerBuilderExtensions.cs
@@ -37,7 +37,7 @@ public static NxUnpackerBuilder AddFilesWithFileSystemOutput(this NxUnpackerBuil
for (var x = 0; x < entries.Length; x++)
{
var entry = entries[x];
- var outputPath = outputDirectory.Combine(entry.FilePath);
+ var outputPath = outputDirectory / entry.FilePath;
outputProviders[x] = new OutputAbsolutePathProvider(outputPath, entry.FilePath, entry.Entry);
}
builder.Outputs.AddRange(outputProviders);
diff --git a/src/NexusMods.Paths.Benchmarks/Benchmarks/Paths.cs b/src/NexusMods.Paths.Benchmarks/Benchmarks/Paths.cs
index 7d29449..d93c437 100644
--- a/src/NexusMods.Paths.Benchmarks/Benchmarks/Paths.cs
+++ b/src/NexusMods.Paths.Benchmarks/Benchmarks/Paths.cs
@@ -92,7 +92,7 @@ public AbsolutePath NexusJoinSmall()
{
// Not a fair test here since one is a string concat; other includes
// normalization to OS path.
- return CurrentPath.AbsolutePath.Combine("foo");
+ return CurrentPath.AbsolutePath / "foo";
}
[Benchmark]
@@ -104,7 +104,7 @@ public string SystemJoinLarge()
[Benchmark]
public AbsolutePath NexusJoinLarge()
{
- return CurrentPath.AbsolutePath.Combine("foo/bar/baz/quz/qax");
+ return CurrentPath.AbsolutePath / "foo/bar/baz/quz/qax";
}
[Benchmark]
diff --git a/src/NexusMods.Paths/AbsolutePath.cs b/src/NexusMods.Paths/AbsolutePath.cs
index 96e0cc5..aabbf53 100644
--- a/src/NexusMods.Paths/AbsolutePath.cs
+++ b/src/NexusMods.Paths/AbsolutePath.cs
@@ -240,6 +240,12 @@ public AbsolutePath Combine(RelativePath path)
var res = PathHelpers.JoinParts(GetFullPath(), path.Path, FileSystem.OS);
return FromSanitizedFullPath(res, FileSystem);
}
+
+ ///
+ /// Combines the current path with a relative path.
+ ///
+ public static AbsolutePath operator / (AbsolutePath path, RelativePath relativePath)
+ => path.Combine(relativePath);
///
[Obsolete(message: "This will be removed once dependents have updated.", error: true)]
diff --git a/src/NexusMods.Paths/FileSystemAbstraction/BaseFileSystem.cs b/src/NexusMods.Paths/FileSystemAbstraction/BaseFileSystem.cs
index b1442a6..18f59bd 100644
--- a/src/NexusMods.Paths/FileSystemAbstraction/BaseFileSystem.cs
+++ b/src/NexusMods.Paths/FileSystemAbstraction/BaseFileSystem.cs
@@ -72,7 +72,7 @@ internal AbsolutePath GetMappedPath(AbsolutePath originalPath)
if (newParentDirectory == default) return originalPath;
var relativePath = originalPath.RelativeTo(originalParentDirectory);
- var newPath = newParentDirectory.Combine(relativePath);
+ var newPath = newParentDirectory / relativePath;
return newPath;
}
@@ -189,10 +189,10 @@ public virtual AbsolutePath GetKnownPath(KnownPath knownPath)
KnownPath.MyDocumentsDirectory => FromUnsanitizedFullPath(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)),
KnownPath.MyGamesDirectory => FromUnsanitizedDirectoryAndFileName(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "My Games"),
- KnownPath.XDG_CONFIG_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_CONFIG_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory).Combine(".config")),
- KnownPath.XDG_CACHE_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_CACHE_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory).Combine(".cache")),
- KnownPath.XDG_DATA_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_DATA_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory).Combine(".local").Combine("share")),
- KnownPath.XDG_STATE_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_STATE_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory).Combine(".local").Combine("state")),
+ KnownPath.XDG_CONFIG_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_CONFIG_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory) / ".config"),
+ KnownPath.XDG_CACHE_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_CACHE_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory) / ".cache"),
+ KnownPath.XDG_DATA_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_DATA_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory) / ".local" / "share"),
+ KnownPath.XDG_STATE_HOME => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_STATE_HOME)}", static fs => fs.GetKnownPath(KnownPath.HomeDirectory) / ".local" / "state"),
KnownPath.XDG_RUNTIME_DIR => GetXDGBaseDirectory($"{nameof(KnownPath.XDG_RUNTIME_DIR)}", static fs => fs.GetKnownPath(KnownPath.TempDirectory)),
};
@@ -244,18 +244,18 @@ public static (Dictionary pathMappings, Dictionary fileSystem.GetKnownPath(knownPath),
KnownPath.CurrentDirectory => fileSystem.GetKnownPath(knownPath),
- KnownPath.CommonApplicationDataDirectory => rootDirectory.Combine("ProgramData"),
- KnownPath.ProgramFilesDirectory => rootDirectory.Combine("Program Files"),
- KnownPath.ProgramFilesX86Directory => rootDirectory.Combine("Program Files (x86)"),
- KnownPath.CommonProgramFilesDirectory => rootDirectory.Combine("Program Files/Common Files"),
- KnownPath.CommonProgramFilesX86Directory => rootDirectory.Combine("Program Files (x86)/Common Files"),
+ KnownPath.CommonApplicationDataDirectory => rootDirectory / "ProgramData",
+ KnownPath.ProgramFilesDirectory => rootDirectory / "Program Files",
+ KnownPath.ProgramFilesX86Directory => rootDirectory / "Program Files (x86)",
+ KnownPath.CommonProgramFilesDirectory => rootDirectory / "Program Files/Common Files",
+ KnownPath.CommonProgramFilesX86Directory => rootDirectory / "Program Files (x86)/Common Files",
KnownPath.HomeDirectory => newHomeDirectory,
- KnownPath.MyDocumentsDirectory => newHomeDirectory.Combine("Documents"),
- KnownPath.MyGamesDirectory => newHomeDirectory.Combine("Documents/My Games"),
- KnownPath.LocalApplicationDataDirectory => newHomeDirectory.Combine("AppData/Local"),
- KnownPath.ApplicationDataDirectory => newHomeDirectory.Combine("AppData/Roaming"),
- KnownPath.TempDirectory => newHomeDirectory.Combine("AppData/Local/Temp"),
+ KnownPath.MyDocumentsDirectory => newHomeDirectory / "Documents",
+ KnownPath.MyGamesDirectory => newHomeDirectory / "Documents/My Games",
+ KnownPath.LocalApplicationDataDirectory => newHomeDirectory / "AppData/Local",
+ KnownPath.ApplicationDataDirectory => newHomeDirectory / "AppData/Roaming",
+ KnownPath.TempDirectory => newHomeDirectory / "AppData/Local/Temp",
_ => default
};
diff --git a/src/NexusMods.Paths/RelativePath.cs b/src/NexusMods.Paths/RelativePath.cs
index 7779e17..fc3c87e 100644
--- a/src/NexusMods.Paths/RelativePath.cs
+++ b/src/NexusMods.Paths/RelativePath.cs
@@ -164,6 +164,11 @@ public RelativePath Join(RelativePath other)
{
return new RelativePath(PathHelpers.JoinParts(Path, other.Path, OS));
}
+
+ ///
+ /// Appends another path to an existing path.
+ ///
+ public static RelativePath operator /(RelativePath self, RelativePath other) => self.Join(other);
///
/// Returns true if the relative path starts with a given string.
diff --git a/src/NexusMods.Paths/TemporaryFileManager.cs b/src/NexusMods.Paths/TemporaryFileManager.cs
index 8b7c279..8ee7d99 100644
--- a/src/NexusMods.Paths/TemporaryFileManager.cs
+++ b/src/NexusMods.Paths/TemporaryFileManager.cs
@@ -43,7 +43,7 @@ public TemporaryPath CreateFile(Extension? ext = default, bool deleteOnDispose =
if (_isDisposed)
throw new ObjectDisposedException(nameof(TemporaryFileManager));
- var path = _basePath.Combine(Guid.NewGuid().ToString());
+ var path = _basePath / Guid.NewGuid().ToString();
if (path.Extension != default)
path = path.AppendExtension(ext ?? KnownExtensions.Tmp);
@@ -58,7 +58,7 @@ public TemporaryPath CreateFolder(string prefix = "", bool deleteOnDispose = tru
if (_isDisposed)
throw new ObjectDisposedException(nameof(TemporaryFileManager));
- var path = _basePath.Combine(prefix + Guid.NewGuid());
+ var path = _basePath / (prefix + Guid.NewGuid());
_fileSystem.CreateDirectory(path);
return new TemporaryPath(_fileSystem, path, deleteOnDispose);
}
diff --git a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/Extensions/NxBuilderExtensionsTests.cs b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/Extensions/NxBuilderExtensionsTests.cs
index 8e7e1ea..d81b553 100644
--- a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/Extensions/NxBuilderExtensionsTests.cs
+++ b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/Extensions/NxBuilderExtensionsTests.cs
@@ -16,13 +16,13 @@ public class NxBuilderExtensionsTests
public async Task NxPackerBuilder_CanAddFolderFromIFileSystem_AndExtractToIFileSystem(InMemoryFileSystem fs, AbsolutePath folderPath)
{
// Arrange
- var file1 = folderPath.Combine("file1.txt");
- var file2 = folderPath.Combine("subfolder/file2.txt");
+ var file1 = folderPath / "file1.txt";
+ var file2 = folderPath / "subfolder/file2.txt";
await fs.WriteAllTextAsync(file1, "Content 1");
await fs.WriteAllTextAsync(file2, "Content 2");
var builder = new NxPackerBuilder();
- var outputPath = folderPath.Parent.Combine("output.nx");
+ var outputPath = folderPath.Parent / "output.nx";
// Act
builder.AddFolder(folderPath)
@@ -38,11 +38,11 @@ public async Task NxPackerBuilder_CanAddFolderFromIFileSystem_AndExtractToIFileS
entries.Should().Contain(e => e.FilePath == "subfolder/file2.txt");
// Verify we can extract all files
- var extractFolder = folderPath.Parent.Combine("extracted");
+ var extractFolder = folderPath.Parent / "extracted";
unpacker.AddAllFilesWithFileSystemOutput(extractFolder).Extract();
- var extractedFile1 = extractFolder.Combine("file1.txt");
- var extractedFile2 = extractFolder.Combine("subfolder/file2.txt");
+ var extractedFile1 = extractFolder / "file1.txt";
+ var extractedFile2 = extractFolder / "subfolder/file2.txt";
fs.FileExists(extractedFile1).Should().BeTrue();
fs.FileExists(extractedFile2).Should().BeTrue();
@@ -52,7 +52,7 @@ public async Task NxPackerBuilder_CanAddFolderFromIFileSystem_AndExtractToIFileS
// Verify we can extract a single file.
unpacker = NxUnpackerBuilderExtensions.FromFile(outputPath);
- var extractedFile1Copy = extractFolder.Combine("file1-copy.txt");
+ var extractedFile1Copy = extractFolder / "file1-copy.txt";
var file1Entry = entries.First(x => x.FilePath == "file1.txt");
unpacker.AddFileWithFileSystemOutput(file1Entry, extractedFile1Copy).Extract();
(await fs.ReadAllTextAsync(extractedFile1Copy)).Should().Be("Content 1");
diff --git a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/FromAbsolutePathProviderTests.cs b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/FromAbsolutePathProviderTests.cs
index 5433ba9..ff0e63d 100644
--- a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/FromAbsolutePathProviderTests.cs
+++ b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/FromAbsolutePathProviderTests.cs
@@ -101,7 +101,7 @@ public async Task GetFileData_HandlesOutOfBoundsOverflow(IFileSystem fileSystem)
private static async Task CreateTestFile(IFileSystem fileSystem, byte[] testData)
{
- var path = fileSystem.GetKnownPath(KnownPath.TempDirectory).Combine(Guid.NewGuid().ToString());
+ var path = fileSystem.GetKnownPath(KnownPath.TempDirectory) / Guid.NewGuid().ToString();
await fileSystem.WriteAllBytesAsync(path, testData);
return path;
}
diff --git a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/OutputAbsolutePathProviderTests.cs b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/OutputAbsolutePathProviderTests.cs
index 01b7394..040b79b 100644
--- a/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/OutputAbsolutePathProviderTests.cs
+++ b/tests/Extensions/NexusMods.Paths.Extensions.Nx.Tests/FileProviders/OutputAbsolutePathProviderTests.cs
@@ -75,7 +75,7 @@ public void Constructor_CreatesFile(IFileSystem fileSystem)
private static AbsolutePath CreateTestPath(IFileSystem fileSystem)
{
- return fileSystem.GetKnownPath(KnownPath.TempDirectory).Combine(Guid.NewGuid().ToString());
+ return fileSystem.GetKnownPath(KnownPath.TempDirectory) / Guid.NewGuid().ToString();
}
private static void CleanupTestFile(IFileSystem fileSystem, AbsolutePath path)
diff --git a/tests/NexusMods.Paths.Tests/FileSystem/BaseFileSystemTests.cs b/tests/NexusMods.Paths.Tests/FileSystem/BaseFileSystemTests.cs
index bac9c72..9765447 100644
--- a/tests/NexusMods.Paths.Tests/FileSystem/BaseFileSystemTests.cs
+++ b/tests/NexusMods.Paths.Tests/FileSystem/BaseFileSystemTests.cs
@@ -21,8 +21,8 @@ public void Test_PathMapping(InMemoryFileSystem fs, AbsolutePath originalPath, A
public void Test_PathMapping_WithDirectory(InMemoryFileSystem fs,
AbsolutePath originalDirectoryPath, AbsolutePath newDirectoryPath, string fileName)
{
- var originalFilePath = originalDirectoryPath.Combine(fileName);
- var newFilePath = newDirectoryPath.Combine(fileName);
+ var originalFilePath = originalDirectoryPath / fileName;
+ var newFilePath = newDirectoryPath / fileName;
var overlayFileSystem = (BaseFileSystem)fs.CreateOverlayFileSystem(
new Dictionary
@@ -116,7 +116,7 @@ public void Test_EnumerateRootDirectories_Windows()
{
var driveLetter = (char)iDriveLetter;
var originalPath = fs.FromUnsanitizedFullPath($"{driveLetter}:/");
- var newPath = rootDirectory.Combine(Guid.NewGuid().ToString("D"));
+ var newPath = rootDirectory / Guid.NewGuid().ToString("D");
return (originalPath, newPath);
}).ToDictionary(x => x.originalPath, x => x.newPath);
@@ -167,7 +167,7 @@ public void Test_EnumerateRootDirectories_WithCrossPlatformPathMappings()
{
var driveLetter = (char)iDriveLetter;
var originalPath = fs.FromUnsanitizedDirectoryAndFileName("/", driveLetter.ToString());
- var newPath = rootDirectory.Combine(Guid.NewGuid().ToString("D"));
+ var newPath = rootDirectory / Guid.NewGuid().ToString("D");
return (originalPath, newPath);
}).ToDictionary(x => x.originalPath, x => x.newPath);
diff --git a/tests/NexusMods.Paths.Tests/FileSystem/FileSystemTests.cs b/tests/NexusMods.Paths.Tests/FileSystem/FileSystemTests.cs
index 7301afa..f3746e1 100644
--- a/tests/NexusMods.Paths.Tests/FileSystem/FileSystemTests.cs
+++ b/tests/NexusMods.Paths.Tests/FileSystem/FileSystemTests.cs
@@ -36,7 +36,7 @@ public void Test_DeleteDirectoryShouldDeleteEmpty()
{
var fs = new Paths.FileSystem();
- var directory = fs.FromUnsanitizedFullPath(AppContext.BaseDirectory).Combine("TestDirectory");
+ var directory = fs.FromUnsanitizedFullPath(AppContext.BaseDirectory) / "TestDirectory";
fs.CreateDirectory(directory);
fs.DeleteDirectory(directory, recursive: false);
@@ -49,8 +49,8 @@ public void Test_DeleteDirectoryShouldNotDeleteNonEmpty()
{
var fs = new Paths.FileSystem();
- var directory = fs.FromUnsanitizedFullPath(AppContext.BaseDirectory).Combine("TestDirectory");
- var child = directory.Combine("Child");
+ var directory = fs.FromUnsanitizedFullPath(AppContext.BaseDirectory) / ("TestDirectory");
+ var child = directory / "Child";
fs.CreateDirectory(directory);
fs.CreateDirectory(child);
@@ -85,7 +85,7 @@ public void Test_EnumerateFileEntries()
public async Task Test_CreateMemoryMappedFile_CanOpen(RelativePath relativePath, byte[] contents)
{
var fs = new Paths.FileSystem();
- var file = fs.GetKnownPath(KnownPath.TempDirectory).Combine(relativePath);
+ var file = fs.GetKnownPath(KnownPath.TempDirectory) / relativePath;
await using (var stream = fs.CreateFile(file))
{
stream.Write(contents);
@@ -107,7 +107,7 @@ public async Task Test_CreateMemoryMappedFile_CanOpen(RelativePath relativePath,
public async Task Test_CreateMemoryMappedFile_CanCreateAndWrite()
{
var fs = new Paths.FileSystem();
- var tempFile = fs.GetKnownPath(KnownPath.TempDirectory).Combine(Path.GetRandomFileName());
+ var tempFile = fs.GetKnownPath(KnownPath.TempDirectory) / Path.GetRandomFileName();
var contents = new byte[] { 1, 2, 3, 4, 5 };
// Create a new MemoryMappedFile
@@ -155,7 +155,7 @@ and we propagate this when opening the MemoryMappedFile.
public void Test_ReadBytesRandom()
{
var fs = new Paths.FileSystem();
- var tempFile = fs.GetKnownPath(KnownPath.TempDirectory).Combine(Path.GetRandomFileName());
+ var tempFile = fs.GetKnownPath(KnownPath.TempDirectory) / Path.GetRandomFileName();
var contents = new byte[] { 1, 2, 3, 4, 5 };
using (var stream = fs.CreateFile(tempFile))
{
@@ -171,7 +171,7 @@ public void Test_ReadBytesRandom()
public void Test_ReadBytesRandomWithOffset()
{
var fs = new Paths.FileSystem();
- var tempFile = fs.GetKnownPath(KnownPath.TempDirectory).Combine(Path.GetRandomFileName());
+ var tempFile = fs.GetKnownPath(KnownPath.TempDirectory) / Path.GetRandomFileName();
var contents = new byte[] { 1, 2, 3, 4, 5 };
using (var stream = fs.CreateFile(tempFile))
{
@@ -188,7 +188,7 @@ public void Test_ReadBytesRandomWithOffset()
public async Task Test_ReadBytesRandomAsync()
{
var fs = new Paths.FileSystem();
- var tempFile = fs.GetKnownPath(KnownPath.TempDirectory).Combine(Path.GetRandomFileName());
+ var tempFile = fs.GetKnownPath(KnownPath.TempDirectory) / Path.GetRandomFileName();
var contents = new byte[] { 1, 2, 3, 4, 5 };
await using (var stream = fs.CreateFile(tempFile))
{
@@ -204,7 +204,7 @@ public async Task Test_ReadBytesRandomAsync()
public async Task Test_ReadBytesRandomAsyncWithOffset()
{
var fs = new Paths.FileSystem();
- var tempFile = fs.GetKnownPath(KnownPath.TempDirectory).Combine(Path.GetRandomFileName());
+ var tempFile = fs.GetKnownPath(KnownPath.TempDirectory) / Path.GetRandomFileName();
var contents = new byte[] { 1, 2, 3, 4, 5 };
await using (var stream = fs.CreateFile(tempFile))
{
diff --git a/tests/NexusMods.Paths.Tests/FileSystem/InMemoryFileSystemTests.cs b/tests/NexusMods.Paths.Tests/FileSystem/InMemoryFileSystemTests.cs
index be11e8c..f69e911 100644
--- a/tests/NexusMods.Paths.Tests/FileSystem/InMemoryFileSystemTests.cs
+++ b/tests/NexusMods.Paths.Tests/FileSystem/InMemoryFileSystemTests.cs
@@ -28,10 +28,10 @@ public void Test_EnumerateFiles(
string fileName2,
string subDirectoryName1)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
+ var subDirectory1 = parentDirectory / subDirectoryName1;
- var file1 = parentDirectory.Combine(fileName1);
- var file2 = subDirectory1.Combine(fileName2);
+ var file1 = parentDirectory / fileName1;
+ var file2 = subDirectory1 / fileName2;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -53,12 +53,12 @@ public void Test_EnumerateFiles_Recursive(
string subDirectoryName1,
string subDirectoryName2)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
- var subDirectory2 = parentDirectory.Combine(subDirectoryName2);
+ var subDirectory1 = parentDirectory / subDirectoryName1;
+ var subDirectory2 = parentDirectory / subDirectoryName2;
- var file1 = parentDirectory.Combine(fileName1);
- var file2 = subDirectory1.Combine(fileName2);
- var file3 = subDirectory2.Combine(fileName3);
+ var file1 = parentDirectory / fileName1;
+ var file2 = subDirectory1 / fileName2;
+ var file3 = subDirectory2 / fileName3;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -80,9 +80,9 @@ public void Test_EnumerateDirectories(
string subDirectoryName2,
string subDirectoryName3)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
- var subDirectory2 = parentDirectory.Combine(subDirectoryName2);
- var subDirectory3 = subDirectory1.Combine(subDirectoryName3);
+ var subDirectory1 = parentDirectory / subDirectoryName1;
+ var subDirectory2 = parentDirectory / subDirectoryName2;
+ var subDirectory3 = subDirectory1 / subDirectoryName3;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -102,9 +102,9 @@ public void Test_EnumerateDirectories_Recursive(
string subDirectoryName2,
string subDirectoryName3)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
- var subDirectory2 = parentDirectory.Combine(subDirectoryName2);
- var subDirectory3 = subDirectory1.Combine(subDirectoryName3);
+ var subDirectory1 = parentDirectory / subDirectoryName1;
+ var subDirectory2 = parentDirectory / subDirectoryName2;
+ var subDirectory3 = subDirectory1 / subDirectoryName3;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -124,10 +124,10 @@ public void Test_EnumerateFilesEntries(
string fileName2,
string subDirectoryName1)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
+ var subDirectory1 = parentDirectory / (subDirectoryName1);
- var file1 = parentDirectory.Combine(fileName1);
- var file2 = subDirectory1.Combine(fileName2);
+ var file1 = parentDirectory / (fileName1);
+ var file2 = subDirectory1 / fileName2;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -149,12 +149,12 @@ public void Test_EnumerateFilesEntries_Recursive(
string subDirectoryName1,
string subDirectoryName2)
{
- var subDirectory1 = parentDirectory.Combine(subDirectoryName1);
- var subDirectory2 = parentDirectory.Combine(subDirectoryName2);
+ var subDirectory1 = parentDirectory / (subDirectoryName1);
+ var subDirectory2 = parentDirectory / (subDirectoryName2);
- var file1 = parentDirectory.Combine(fileName1);
- var file2 = subDirectory1.Combine(fileName2);
- var file3 = subDirectory2.Combine(fileName3);
+ var file1 = parentDirectory / (fileName1);
+ var file2 = subDirectory1 / fileName2;
+ var file3 = subDirectory2 / fileName3;
fs.AddDirectory(parentDirectory);
fs.AddDirectory(subDirectory1);
@@ -180,7 +180,7 @@ public void Test_CreateDirectory_SubDirectory(InMemoryFileSystem fs,
AbsolutePath parentDirectory,
string subDirectoryName)
{
- var subDirectory = parentDirectory.Combine(subDirectoryName);
+ var subDirectory = parentDirectory / subDirectoryName;
fs.CreateDirectory(subDirectory);
@@ -249,11 +249,11 @@ public void Test_DeleteDirectory_Recursive(
{
fs.CreateDirectory(directory);
- var subDirectory = directory.Combine(subDirectoryName);
+ var subDirectory = directory / subDirectoryName;
fs.CreateDirectory(subDirectory);
- var file1 = directory.Combine(fileName1);
- var file2 = subDirectory.Combine(fileName2);
+ var file1 = directory / (fileName1);
+ var file2 = subDirectory / fileName2;
fs.AddEmptyFile(file1);
fs.AddEmptyFile(file2);
@@ -279,7 +279,7 @@ public void Test_DeleteDirectory_NotEmpty(
{
fs.CreateDirectory(directory);
- var file = directory.Combine(fileName);
+ var file = directory / fileName;
fs.AddEmptyFile(file);
fs.DirectoryExists(directory).Should().BeTrue();
diff --git a/tests/NexusMods.Paths.Tests/RelativePathTests.cs b/tests/NexusMods.Paths.Tests/RelativePathTests.cs
index deabcc3..02343cd 100644
--- a/tests/NexusMods.Paths.Tests/RelativePathTests.cs
+++ b/tests/NexusMods.Paths.Tests/RelativePathTests.cs
@@ -28,7 +28,7 @@ public void Test_FromStringImplicitCast(string input, string expected)
// A little roundabout, but I wanted to make sure the cast happens as part
// of a method call.
var basePath = Paths.FileSystem.Shared.EnumerateRootDirectories().First();
- var path = basePath.Combine(input).RelativeTo(basePath);
+ var path = (basePath / input).RelativeTo(basePath);
path.ToString().Should().Be(expected);
}
@@ -207,7 +207,7 @@ public void Test_Join(string left, string right, string expectedOutput)
{
var leftPath = new RelativePath(left);
var rightPath = new RelativePath(right);
- var actualOutput = leftPath.Join(rightPath);
+ var actualOutput = leftPath / rightPath;
actualOutput.Should().Be(expectedOutput);
}
diff --git a/tests/NexusMods.Paths.Tests/TemporaryPathTests.cs b/tests/NexusMods.Paths.Tests/TemporaryPathTests.cs
index bc4bd5b..ab9036e 100644
--- a/tests/NexusMods.Paths.Tests/TemporaryPathTests.cs
+++ b/tests/NexusMods.Paths.Tests/TemporaryPathTests.cs
@@ -36,12 +36,12 @@ public async Task DirectoriesAreDeleted(InMemoryFileSystem fs, TemporaryFileMana
var tempDirPath = manager.CreateFolder();
// Create some children
- var childFileA = tempDirPath.Path.Combine("File A");
+ var childFileA = tempDirPath.Path / "File A";
fs.CreateFile(childFileA);
- var childFolder = tempDirPath.Path.Combine("Child Folder");
+ var childFolder = tempDirPath.Path / "Child Folder";
fs.CreateDirectory(childFolder);
- var childFileB = childFolder.Combine("File B");
+ var childFileB = childFolder / "File B";
fs.CreateFile(childFileB);