XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using XFEEDToolBox.Core.Data;
using XFEExtension.NetCore.XUnit.Attributes;

namespace XFEEDToolBox.Test;

[TestFixture]
public class ResurrectionProtectionTests
{
    [Test] public void RebuyStartsNewProtectionIdentityWithoutTrustingOldDockWalletOrStatus()
    {
        var p=new PlayerProjector();var at=DateTimeOffset.UtcNow.AddMinutes(-2);
        p.Apply(Check.Event(new{timestamp=at,@event="LoadGame",FID="F1",Commander="Fixture",Ship="corsair",GameMode="Solo",Credits=10000000}));
        p.Apply(Check.Event(new{timestamp=at.AddSeconds(1),@event="Location",Docked=true,StarSystem="Fixture",StationName="Old",MarketID=1}));
        p.Apply(Check.Event(new{timestamp=at.AddSeconds(2),@event="Died"}));Check.That(!p.State.InGame);
        var rebuy=at.AddSeconds(3);p.Apply(Check.Event(new{timestamp=rebuy,@event="Resurrect",Option="rebuy",Cost=4427098}));
        Check.That(p.State.InGame&&!p.State.InDanger&&!p.State.Docked);Check.Equal(rebuy,p.State.LoadGameAt!.Value);
        Check.That(!p.State.CreditsReliable&&!p.State.CargoReliable&&!p.State.StationServicesKnown&&p.State.StatusReadAt is null);
        Check.That(p.State.MarketId is null);Check.Equal("F1",p.State.CommanderId);Check.Equal("Solo",p.State.GameMode);
        p.Apply(Check.Event(new{timestamp=at.AddSeconds(4),@event="Location",Docked=true,StarSystem="Fixture",StationName="Recovered",MarketID=2}));
        Check.That(p.State.Docked);Check.Equal(2L,p.State.MarketId!.Value);
    }
}