mirror of
https://github.com/SabreTools/SabreTools.IO.git
synced 2026-02-13 21:33:03 +00:00
122 lines
4.8 KiB
C#
122 lines
4.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Xunit;
|
|
|
|
namespace SabreTools.IO.Test
|
|
{
|
|
public class PathToolTests
|
|
{
|
|
[Fact]
|
|
public void GetDirectoriesOnly_NoAppendParent()
|
|
{
|
|
string expectedParent = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
string expectedCurrent = Path.Combine(expectedParent, "Subdirectory");
|
|
|
|
List<string> inputs =
|
|
[
|
|
string.Empty,
|
|
Path.Combine(Environment.CurrentDirectory, "TestData"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "Subdir*"),
|
|
];
|
|
var actual = PathTool.GetDirectoriesOnly(inputs, appendParent: true);
|
|
Assert.NotEmpty(actual);
|
|
|
|
var first = actual[0];
|
|
Assert.Equal(expectedCurrent, first.CurrentPath);
|
|
Assert.Equal(expectedParent, first.ParentPath);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetDirectoriesOnly_AppendParent()
|
|
{
|
|
string expectedParent = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
string expectedCurrent = Path.Combine(expectedParent, "Subdirectory");
|
|
|
|
List<string> inputs =
|
|
[
|
|
string.Empty,
|
|
Path.Combine(Environment.CurrentDirectory, "TestData"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "Subdir*"),
|
|
];
|
|
var actual = PathTool.GetDirectoriesOnly(inputs, appendParent: false);
|
|
Assert.NotEmpty(actual);
|
|
|
|
var first = actual[0];
|
|
Assert.Equal(expectedCurrent, first.CurrentPath);
|
|
Assert.Equal(string.Empty, first.ParentPath);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetFilesOnly_NoAppendParent()
|
|
{
|
|
string expectedParent = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
string expectedCurrent = Path.Combine(expectedParent, "ascii.txt");
|
|
|
|
List<string> inputs =
|
|
[
|
|
string.Empty,
|
|
Path.Combine(Environment.CurrentDirectory, "TestData"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "Subdir*"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "utf8bom.txt"),
|
|
];
|
|
var actual = PathTool.GetFilesOnly(inputs, appendParent: true);
|
|
Assert.NotEmpty(actual);
|
|
|
|
var first = actual[0];
|
|
Assert.Equal(expectedCurrent, first.CurrentPath);
|
|
Assert.Equal(expectedParent, first.ParentPath);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetFilesOnly_AppendParent()
|
|
{
|
|
string expectedParent = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
string expectedCurrent = Path.Combine(expectedParent, "ascii.txt");
|
|
|
|
List<string> inputs =
|
|
[
|
|
string.Empty,
|
|
Path.Combine(Environment.CurrentDirectory, "TestData"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "Subdir*"),
|
|
Path.Combine(Environment.CurrentDirectory, "TestData", "utf8bom.txt"),
|
|
];
|
|
var actual = PathTool.GetFilesOnly(inputs, appendParent: false);
|
|
Assert.NotEmpty(actual);
|
|
|
|
var first = actual[0];
|
|
Assert.Equal(expectedCurrent, first.CurrentPath);
|
|
Assert.Equal(string.Empty, first.ParentPath);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null, false, "")]
|
|
[InlineData(null, true, "")]
|
|
[InlineData("", false, "")]
|
|
[InlineData("", true, "")]
|
|
[InlineData("filename.bin", false, "filename.bin")]
|
|
[InlineData("filename.bin", true, "filename.bin")]
|
|
[InlineData("\"filename.bin\"", false, "filename.bin")]
|
|
[InlineData("\"filename.bin\"", true, "filename.bin")]
|
|
[InlineData("<filename.bin>", false, "filename.bin")]
|
|
[InlineData("<filename.bin>", true, "filename.bin")]
|
|
[InlineData("1.2.3.4..bin", false, "1.2.3.4..bin")]
|
|
[InlineData("1.2.3.4..bin", true, "1.2.3.4..bin")]
|
|
[InlineData("dir/filename.bin", false, "dir/filename.bin")]
|
|
[InlineData("dir/filename.bin", true, "dir/filename.bin")]
|
|
[InlineData(" dir / filename.bin", false, "dir/filename.bin")]
|
|
[InlineData(" dir / filename.bin", true, "dir/filename.bin")]
|
|
[InlineData("\0dir/\0filename.bin", false, "_dir/_filename.bin")]
|
|
[InlineData("\0dir/\0filename.bin", true, "_dir/_filename.bin")]
|
|
public void NormalizeOutputPathsTest(string? path, bool getFullPath, string expected)
|
|
{
|
|
// Modify expected to account for test data if necessary
|
|
if (getFullPath && !string.IsNullOrEmpty(expected))
|
|
expected = Path.GetFullPath(expected);
|
|
|
|
string actual = PathTool.NormalizeFilePath(path, getFullPath);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
}
|
|
}
|