Files
Ludarium-Public/tests/Ludarium.UnitTests/GameDataVaultPolicyTests.cs
T
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

35 lines
1.2 KiB
C#

using Ludarium.Application;
using Ludarium.Domain;
namespace Ludarium.UnitTests;
public sealed class GameDataVaultPolicyTests
{
[Fact]
public void MetadataIsTrimmedAndBounded()
{
var result = GameDataVaultPolicy.Normalize(new GameDataEntryInput(GameDataKind.Save,
" Main slot ", " mGBA ", " Steam Deck ", " Before the final dungeon "));
Assert.Equal("Main slot", result.Name);
Assert.Equal("mGBA", result.Emulator);
Assert.Equal("Steam Deck", result.Device);
}
[Theory]
[InlineData("../slot.sav")]
[InlineData("folder\\slot.sav")]
[InlineData("payload.exe")]
[InlineData("script.ps1")]
public void UnsafeFileNamesAreRejected(string fileName) =>
Assert.Throws<ArgumentException>(() => GameDataVaultPolicy.ValidateFileName(fileName));
[Fact]
public void NormalSaveFileNameIsPreserved() =>
Assert.Equal("campaign-slot-1.srm", GameDataVaultPolicy.ValidateFileName("campaign-slot-1.srm"));
[Fact]
public void UnknownKindIsRejected() =>
Assert.Throws<ArgumentException>(() => GameDataVaultPolicy.Normalize(
new GameDataEntryInput((GameDataKind)999, "Slot", null, null, null)));
}