mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add GetInfo tests
This commit is contained in:
128
SabreTools.FileTypes.Test/FileTypeToolTests.cs
Normal file
128
SabreTools.FileTypes.Test/FileTypeToolTests.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.IO.Extensions;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.FileTypes.Test
|
||||
{
|
||||
public class FileTypeToolTests
|
||||
{
|
||||
private static readonly HashType[] _defaultHashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
|
||||
|
||||
private const long _expectedSize = 125;
|
||||
private const string _expectedCrc = "ba02a660";
|
||||
private const string _expectedMd5 = "b722871eaa950016296184d026c5dec9";
|
||||
private const string _expectedSha1 = "eea1ee2d801d830c4bdad4df3c8da6f9f52d1a9f";
|
||||
|
||||
#region GetInfo
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_EmptyPath()
|
||||
{
|
||||
string input = string.Empty;
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes);
|
||||
|
||||
Assert.Null(actual.Filename);
|
||||
Assert.Null(actual.Size);
|
||||
Assert.Null(actual.CRC);
|
||||
Assert.Null(actual.MD5);
|
||||
Assert.Null(actual.SHA1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_NotExists()
|
||||
{
|
||||
string input = "INVALID";
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes);
|
||||
|
||||
Assert.Null(actual.Filename);
|
||||
Assert.Null(actual.Size);
|
||||
Assert.Null(actual.CRC);
|
||||
Assert.Null(actual.MD5);
|
||||
Assert.Null(actual.SHA1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_NoHeader()
|
||||
{
|
||||
string input = Path.Combine(Environment.CurrentDirectory, "TestData", "file-to-hash.bin");
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes);
|
||||
|
||||
Assert.Equal("file-to-hash.bin", actual.Filename);
|
||||
Assert.Equal(_expectedSize, actual.Size);
|
||||
Assert.Equal(_expectedCrc, actual.CRC.ToHexString());
|
||||
Assert.Equal(_expectedMd5, actual.MD5.ToHexString());
|
||||
Assert.Equal(_expectedSha1, actual.SHA1.ToHexString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_NullHeader()
|
||||
{
|
||||
string input = Path.Combine(Environment.CurrentDirectory, "TestData", "file-to-hash.bin");
|
||||
string? header = null;
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes, header);
|
||||
|
||||
Assert.Equal("file-to-hash.bin", actual.Filename);
|
||||
Assert.Equal(_expectedSize, actual.Size);
|
||||
Assert.Equal(_expectedCrc, actual.CRC.ToHexString());
|
||||
Assert.Equal(_expectedMd5, actual.MD5.ToHexString());
|
||||
Assert.Equal(_expectedSha1, actual.SHA1.ToHexString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_EmptyHeader()
|
||||
{
|
||||
string input = Path.Combine(Environment.CurrentDirectory, "TestData", "file-to-hash.bin");
|
||||
string? header = string.Empty;
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes, header);
|
||||
|
||||
Assert.Equal("file-to-hash.bin", actual.Filename);
|
||||
Assert.Equal(_expectedSize, actual.Size);
|
||||
Assert.Equal(_expectedCrc, actual.CRC.ToHexString());
|
||||
Assert.Equal(_expectedMd5, actual.MD5.ToHexString());
|
||||
Assert.Equal(_expectedSha1, actual.SHA1.ToHexString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_File_NonMatchingHeader()
|
||||
{
|
||||
string input = Path.Combine(Environment.CurrentDirectory, "TestData", "file-to-hash.bin");
|
||||
string? header = "nes";
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes, header);
|
||||
|
||||
Assert.Equal("file-to-hash.bin", actual.Filename);
|
||||
Assert.Equal(_expectedSize, actual.Size);
|
||||
Assert.Equal(_expectedCrc, actual.CRC.ToHexString());
|
||||
Assert.Equal(_expectedMd5, actual.MD5.ToHexString());
|
||||
Assert.Equal(_expectedSha1, actual.SHA1.ToHexString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_Stream_Null()
|
||||
{
|
||||
Stream? input = null;
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes);
|
||||
|
||||
Assert.Null(actual.Size);
|
||||
Assert.Null(actual.CRC);
|
||||
Assert.Null(actual.MD5);
|
||||
Assert.Null(actual.SHA1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetInfo_Stream_Valid()
|
||||
{
|
||||
string path = Path.Combine(Environment.CurrentDirectory, "TestData", "file-to-hash.bin");
|
||||
Stream? input = File.OpenRead(path);
|
||||
BaseFile actual = FileTypeTool.GetInfo(input, _defaultHashes);
|
||||
|
||||
Assert.Equal(_expectedSize, actual.Size);
|
||||
Assert.Equal(_expectedCrc, actual.CRC.ToHexString());
|
||||
Assert.Equal(_expectedMd5, actual.MD5.ToHexString());
|
||||
Assert.Equal(_expectedSha1, actual.SHA1.ToHexString());
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user