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); } }