mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-09-13 20:09:21 +00:00
83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
using Daybreak.Utils;
|
|
using FluentAssertions;
|
|
|
|
namespace Daybreak.Tests.Utils;
|
|
|
|
[TestClass]
|
|
public sealed class PeVersionReaderTests
|
|
{
|
|
// Reuses the Gw.exe fixtures from GuildWarsExecutableParserTests
|
|
// (committed under Daybreak.Tests/Fixtures/Gw/).
|
|
private const string AnyFixture = "Gw.387585.exe";
|
|
private const string ExpectedProductName = "Guild Wars";
|
|
private const string ExpectedVersionString = "1, 0, 0, 1";
|
|
|
|
private static string RequireFixture(string fileName)
|
|
{
|
|
var dir = Environment.GetEnvironmentVariable("DAYBREAK_TEST_GW_FIXTURES")
|
|
?? Path.Combine(AppContext.BaseDirectory, "Fixtures", "Gw");
|
|
|
|
var path = Path.Combine(dir, fileName);
|
|
if (!File.Exists(path))
|
|
{
|
|
Assert.Inconclusive($"Fixture '{fileName}' not found under '{dir}'.");
|
|
}
|
|
|
|
return path;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetProductVersion_MissingFile_ReturnsNull()
|
|
{
|
|
PeVersionReader.GetProductVersion(Path.Combine(Path.GetTempPath(), $"missing-{Guid.NewGuid():N}.exe"))
|
|
.Should().BeNull();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetFileVersion_MissingFile_ReturnsNull()
|
|
{
|
|
PeVersionReader.GetFileVersion(Path.Combine(Path.GetTempPath(), $"missing-{Guid.NewGuid():N}.exe"))
|
|
.Should().BeNull();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetProductName_MissingFile_ReturnsNull()
|
|
{
|
|
PeVersionReader.GetProductName(Path.Combine(Path.GetTempPath(), $"missing-{Guid.NewGuid():N}.exe"))
|
|
.Should().BeNull();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetProductVersion_NotAPeFile_ReturnsNull()
|
|
{
|
|
var path = Path.Combine(Path.GetTempPath(), $"daybreak-tests-{Guid.NewGuid():N}.bin");
|
|
File.WriteAllBytes(path, [0x00, 0x01, 0x02, 0x03]);
|
|
try
|
|
{
|
|
PeVersionReader.GetProductVersion(path).Should().BeNull();
|
|
}
|
|
finally
|
|
{
|
|
File.Delete(path);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetProductVersion_GwExe_ReturnsExpectedVersionString()
|
|
{
|
|
PeVersionReader.GetProductVersion(RequireFixture(AnyFixture)).Should().Be(ExpectedVersionString);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetFileVersion_GwExe_ReturnsExpectedVersionString()
|
|
{
|
|
PeVersionReader.GetFileVersion(RequireFixture(AnyFixture)).Should().Be(ExpectedVersionString);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetProductName_GwExe_ReturnsGuildWars()
|
|
{
|
|
PeVersionReader.GetProductName(RequireFixture(AnyFixture)).Should().Be(ExpectedProductName);
|
|
}
|
|
}
|