mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using LanMountainDesktop.Launcher;
|
|
using LanMountainDesktop.Launcher.Startup;
|
|
using LanMountainDesktop.Shared.Contracts.Launcher;
|
|
using LanMountainDesktop.Shared.IPC.Abstractions.Services;
|
|
using Xunit;
|
|
|
|
namespace LanMountainDesktop.Tests;
|
|
|
|
public sealed class StartupSuccessTrackerTests
|
|
{
|
|
[Fact]
|
|
public void TryResolve_DesktopVisibleStage_SucceedsForForegroundLaunch()
|
|
{
|
|
var tracker = new StartupSuccessTracker(CreateContext("normal"));
|
|
Assert.True(tracker.TryResolve(StartupStage.DesktopVisible, out var state));
|
|
Assert.Equal("ok", state.Code);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryResolve_ShellStatusWithMainWindowOpened_Succeeds()
|
|
{
|
|
var tracker = new StartupSuccessTracker(CreateContext("normal"));
|
|
var status = new PublicShellStatus(
|
|
ProcessId: 1234,
|
|
StartedAtUtc: DateTimeOffset.UtcNow,
|
|
LaunchSource: "normal",
|
|
ShellState: "opened",
|
|
MainWindowCreated: true,
|
|
MainWindowVisible: false,
|
|
MainWindowOpened: true,
|
|
DesktopVisible: false,
|
|
PublicIpcReady: true,
|
|
Tray: new PublicTrayStatus("Unavailable", false, false, false, false, 0),
|
|
Taskbar: new PublicTaskbarStatus(false, true, false, false, false, true));
|
|
|
|
Assert.True(tracker.TryResolve(status, out var state));
|
|
Assert.Equal(StartupStage.Ready, state.Stage);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryResolve_RestartTrayPolicy_RequiresTrayAndBackground()
|
|
{
|
|
var tracker = new StartupSuccessTracker(CreateContext("restart", "--restart-presentation", "tray"));
|
|
Assert.False(tracker.TryResolve(StartupStage.TrayReady, out _));
|
|
Assert.True(tracker.TryResolve(StartupStage.BackgroundReady, out _));
|
|
Assert.True(tracker.TryResolve(StartupStage.TrayReady, out var final));
|
|
Assert.Equal("background_ready", final.Code);
|
|
}
|
|
|
|
private static CommandContext CreateContext(string launchSource, params string[] extraArgs)
|
|
{
|
|
var args = new List<string> { "launch", "--launch-source", launchSource };
|
|
args.AddRange(extraArgs);
|
|
return CommandContext.FromArgs(args.ToArray());
|
|
}
|
|
}
|