mirror of
https://github.com/SabreTools/SabreTools.IO.git
synced 2026-02-13 21:33:03 +00:00
313 lines
9.7 KiB
C#
313 lines
9.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using SabreTools.IO.Extensions;
|
|
using Xunit;
|
|
|
|
namespace SabreTools.IO.Test.Extensions
|
|
{
|
|
public class IOExtensionsTests
|
|
{
|
|
#region Ensure
|
|
|
|
[Theory]
|
|
[InlineData(null, null)]
|
|
[InlineData("", null)]
|
|
[InlineData(" ", " ")] // TODO: This is a bad result
|
|
[InlineData("dirname", "dirname")]
|
|
[InlineData("\"dirname\"", "dirname")]
|
|
public void EnsureTest(string? dir, string? expected)
|
|
{
|
|
// Handle test setup
|
|
expected ??= PathTool.GetRuntimeDirectory();
|
|
if (expected != null)
|
|
expected = Path.GetFullPath(expected);
|
|
|
|
string actual = dir.Ensure(create: false);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Get Encoding
|
|
|
|
[Fact]
|
|
public void GetEncoding_EmptyPath()
|
|
{
|
|
string path = "";
|
|
Encoding expected = Encoding.Default;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEncoding_InvalidPath()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "INVALID");
|
|
Encoding expected = Encoding.Default;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
// Disable warning about UTF7 usage
|
|
#pragma warning disable SYSLIB0001
|
|
[Fact]
|
|
public void GetEncoding_UTF7()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "utf7bom.txt");
|
|
Encoding expected = Encoding.UTF7;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
#pragma warning restore SYSLIB0001
|
|
|
|
[Fact]
|
|
public void GetEncoding_UTF8()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "utf8bom.txt");
|
|
Encoding expected = Encoding.UTF8;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEncoding_Unicode()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "utf16lebom.txt");
|
|
Encoding expected = Encoding.Unicode;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEncoding_BigEndianUnicode()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "utf16bebom.txt");
|
|
Encoding expected = Encoding.BigEndianUnicode;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEncoding_UTF32()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "utf32bom.txt");
|
|
Encoding expected = Encoding.UTF32;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEncoding_ASCII()
|
|
{
|
|
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "ascii.txt");
|
|
Encoding expected = Encoding.Default;
|
|
|
|
var actual = path.GetEncoding();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Get Normalized Extension
|
|
|
|
[Theory]
|
|
[InlineData(null, null)]
|
|
[InlineData("", null)]
|
|
[InlineData(" ", null)]
|
|
[InlineData("no-extension", null)]
|
|
[InlineData("NO-EXTENSION", null)]
|
|
[InlineData("no-extension.", null)]
|
|
[InlineData("NO-EXTENSION.", null)]
|
|
[InlineData("filename.ext", "ext")]
|
|
[InlineData("FILENAME.EXT", "ext")]
|
|
public void GetNormalizedExtensionTest(string? path, string? expected)
|
|
{
|
|
string? actual = path.GetNormalizedExtension();
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Path
|
|
|
|
[Fact]
|
|
public void ListEmpty_NullDirectory()
|
|
{
|
|
string? dir = null;
|
|
var empty = dir.ListEmpty();
|
|
Assert.Null(empty);
|
|
}
|
|
|
|
[Fact]
|
|
public void ListEmpty_InvalidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData", "INVALID");
|
|
var empty = dir.ListEmpty();
|
|
Assert.Null(empty);
|
|
}
|
|
|
|
[Fact]
|
|
public void ListEmpty_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var empty = dir.ListEmpty();
|
|
Assert.NotNull(empty);
|
|
Assert.Empty(empty);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetDirectories_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeGetDirectories();
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetDirectories_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeGetDirectories("*");
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetDirectories_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeGetDirectories("*", SearchOption.AllDirectories);
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFiles_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeGetFiles();
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFiles_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeGetFiles("*");
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFiles_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeGetFiles("*", SearchOption.AllDirectories);
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFileSystemEntries_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeGetFileSystemEntries();
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFileSystemEntries_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeGetFileSystemEntries("*");
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeGetFileSystemEntries_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeGetFileSystemEntries("*", SearchOption.AllDirectories);
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateDirectories_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeEnumerateDirectories();
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateDirectories_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeEnumerateDirectories("*");
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateDirectories_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var dirs = dir.SafeEnumerateDirectories("*", SearchOption.AllDirectories);
|
|
Assert.Single(dirs);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFiles_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeEnumerateFiles();
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFiles_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeEnumerateFiles("*");
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFiles_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var files = dir.SafeEnumerateFiles("*", SearchOption.AllDirectories);
|
|
Assert.NotEmpty(files);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFileSystemEntries_ValidDirectory()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeEnumerateFileSystemEntries();
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFileSystemEntries_ValidDirectory_Pattern()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeEnumerateFileSystemEntries("*");
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
[Fact]
|
|
public void SafeEnumerateFileSystemEntries_ValidDirectory_PatternOption()
|
|
{
|
|
string dir = Path.Combine(Environment.CurrentDirectory, "TestData");
|
|
var entries = dir.SafeEnumerateFileSystemEntries("*", SearchOption.AllDirectories);
|
|
Assert.NotEmpty(entries);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|