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