Publish Ludarium source
Public source validation / source (push) Successful in 2m16s

This commit is contained in:
Ludarium release export
2026-09-03 02:08:58 +02:00
commit df869819ce
339 changed files with 46455 additions and 0 deletions
@@ -0,0 +1,53 @@
using Ludarium.Application;
namespace Ludarium.UnitTests;
public sealed class DolphinLaunchPolicyTests
{
[Fact]
public void UniqueReadOnlyFixtureIsReleaseEligible()
{
var gameId = Guid.NewGuid();
var candidate = Candidate("roms/wii/Synthetic.wbfs", true);
var capability = DolphinLaunchPolicy.EvaluateCapability(gameId, "wii", true, [candidate],
DateTimeOffset.UnixEpoch, vaultBacked: true);
Assert.True(capability.Available);
Assert.True(capability.AutomaticRestore);
Assert.Equal("Dolphin", capability.Emulator);
Assert.Equal("dolphin", capability.Player);
Assert.Equal("wii", capability.Platform);
Assert.True(capability.SupportsSavestates);
// Automatic restore is a live runtime property, never an assumption about the sidecar.
Assert.False(DolphinLaunchPolicy.EvaluateCapability(gameId, "wii", true, [candidate],
DateTimeOffset.UnixEpoch).AutomaticRestore);
Assert.Equal("wii/Synthetic.wbfs", DolphinLaunchPolicy.ToRuntimePath("wii", candidate.RelativePath, "roms/wii"));
}
[Fact]
public void AmbiguousWritableAndUnsafeSourcesFailClosed()
{
var first = Candidate("roms/gamecube/One.rvz", true);
var second = Candidate("roms/gamecube/Two.iso", true);
Assert.Null(DolphinLaunchPolicy.SelectGame([first, second]));
Assert.Null(DolphinLaunchPolicy.SelectGame([first with { SourceReadOnly = false }]));
Assert.Null(DolphinLaunchPolicy.SelectGame([first with { RelativePath = "../One.rvz" }]));
Assert.False(DolphinLaunchPolicy.EvaluateCapability(Guid.NewGuid(), "gamecube", true,
[first, second]).Available);
}
[Theory]
[InlineData("ps2", true, NativeRemotePlayState.UnsupportedPlatform)]
[InlineData("wii", false, NativeRemotePlayState.RuntimeUnavailable)]
public void UnsupportedPlatformAndMissingRuntimeStayUnavailable(string platform, bool runtime,
NativeRemotePlayState state)
{
var capability = DolphinLaunchPolicy.EvaluateCapability(Guid.NewGuid(), platform, runtime, []);
Assert.Equal(state, capability.State);
}
private static NativeLaunchCandidate Candidate(string path, bool readOnly) =>
new(Guid.NewGuid(), path, 2 * 1024 * 1024, readOnly);
}