using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalCarrierFilteringTests
{
private static GalaxyMapFilter Filter(string key)=>new(){Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.FleetCarrier,
RequireOriginalCarrierFacts=true,Values=new HashSet<string>{key}};
private static GalacticSystem Star(bool? dockable,bool requested=true)=>new("Actual",new(0,0,0))
{Data=new(){FleetCarrier=true,NativeFilterFacts=new("F1",42,100){CarrierDockable=dockable,CarrierRequested=requested}}};
[Test] public void OriginalDockabilityIsIndependentFromContradictoryPublicCarrierPresence()
{
var none=Star(false);var filter=Filter("fleetcarriernone");
Check.That(filter.Matches(none)&&!filter.IsUnknown(none));
Check.That(!Filter("fleetcarrierdockable").Matches(none));
Check.Equal("fleetcarriernone",GalaxyMapFilter.Keys(none,GalaxyFilterCategory.FleetCarrier)!.Single());
Check.Equal(filter.ColourForValue("fleetcarriernone"),filter.GetColour(none));
var actual=Star(true) with{Data=Star(true).Data with{FleetCarrier=false}};
Check.That(Filter("fleetcarrierdockable").Matches(actual)&&!Filter("fleetcarriernone").Matches(actual));
Check.That(Filter("fleetcarrierdockable").GetOriginalRgba(actual) is not null);
}
[Test] public void UnknownOrUnrequestedOriginalCacheCannotUseOldPublicProofOrColour()
{
var filter=Filter("fleetcarrierdockable") with{IncludeUnknown=true};
foreach(var system in new[]{Star(null),Star(true,false),new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}}})
{
var oldProof=system with{Data=system.Data with{ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
Check.That(filter.IsUnknown(oldProof)&&filter.Matches(oldProof));
Check.That(!(filter with{IncludeUnknown=false}).Matches(oldProof));
Check.That(filter.GetOriginalRgba(oldProof) is null);
Check.Equal(new StarColour(125,140,150),filter.GetColour(oldProof));
}
Check.That(Filter("fleetcarriernone").RequestsOriginalCarrierFacts);
Check.That(!(filter with{Mode=GalaxyMapMode.Realistic}).RequestsOriginalCarrierFacts);
}
[Test] public void PublicPresenceDoesNotAnswerOriginalChoicesWithoutAnOriginalConnection()
{
var filter=Filter("fleetcarrierdockable") with{RequireOriginalCarrierFacts=false};
var publicOnly=new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}};
Check.That(filter.IsUnknown(publicOnly)&&!filter.Matches(publicOnly)&&filter.GetOriginalRgba(publicOnly) is null);
var choices=GalaxyFilterDefinitions.All.Single(d=>d.Category==GalaxyFilterCategory.FleetCarrier).Choices.Select(c=>c.Key).ToArray();
Check.That(choices.SequenceEqual(new[]{"fleetcarriernone","fleetcarrierdockable"}));
}
[Test] public void UnknownOriginalServicesNeverBorrowSelectedColourFromPublicProofs()
{
var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Services,RequireOriginalServiceFacts=true,
IncludeUnknown=true,Values=new HashSet<string>{"blackmarket"}};
var system=new GalacticSystem("Unknown",new(0,0,0)){Data=new(){Services=["BlackMarket"],
NativeFilterFacts=new("F1",42,100){ServicesRequested=true},ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
Check.That(filter.IsUnknown(system)&&filter.Matches(system));
Check.That(filter.GetOriginalRgba(system) is null);
Check.Equal(new StarColour(125,140,150),filter.GetColour(system));
}
}
using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalCarrierFilteringTests
{
private static GalaxyMapFilter Filter(string key)=>new(){Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.FleetCarrier,
RequireOriginalCarrierFacts=true,Values=new HashSet<string>{key}};
private static GalacticSystem Star(bool? dockable,bool requested=true)=>new("Actual",new(0,0,0))
{Data=new(){FleetCarrier=true,NativeFilterFacts=new("F1",42,100){CarrierDockable=dockable,CarrierRequested=requested}}};
[Test] public void OriginalDockabilityIsIndependentFromContradictoryPublicCarrierPresence()
{
var none=Star(false);var filter=Filter("fleetcarriernone");
Check.That(filter.Matches(none)&&!filter.IsUnknown(none));
Check.That(!Filter("fleetcarrierdockable").Matches(none));
Check.Equal("fleetcarriernone",GalaxyMapFilter.Keys(none,GalaxyFilterCategory.FleetCarrier)!.Single());
Check.Equal(filter.ColourForValue("fleetcarriernone"),filter.GetColour(none));
var actual=Star(true) with{Data=Star(true).Data with{FleetCarrier=false}};
Check.That(Filter("fleetcarrierdockable").Matches(actual)&&!Filter("fleetcarriernone").Matches(actual));
Check.That(Filter("fleetcarrierdockable").GetOriginalRgba(actual) is not null);
}
[Test] public void UnknownOrUnrequestedOriginalCacheCannotUseOldPublicProofOrColour()
{
var filter=Filter("fleetcarrierdockable") with{IncludeUnknown=true};
foreach(var system in new[]{Star(null),Star(true,false),new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}}})
{
var oldProof=system with{Data=system.Data with{ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
Check.That(filter.IsUnknown(oldProof)&&filter.Matches(oldProof));
Check.That(!(filter with{IncludeUnknown=false}).Matches(oldProof));
Check.That(filter.GetOriginalRgba(oldProof) is null);
Check.Equal(new StarColour(125,140,150),filter.GetColour(oldProof));
}
Check.That(Filter("fleetcarriernone").RequestsOriginalCarrierFacts);
Check.That(!(filter with{Mode=GalaxyMapMode.Realistic}).RequestsOriginalCarrierFacts);
}
[Test] public void PublicPresenceDoesNotAnswerOriginalChoicesWithoutAnOriginalConnection()
{
var filter=Filter("fleetcarrierdockable") with{RequireOriginalCarrierFacts=false};
var publicOnly=new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}};
Check.That(filter.IsUnknown(publicOnly)&&!filter.Matches(publicOnly)&&filter.GetOriginalRgba(publicOnly) is null);
var choices=GalaxyFilterDefinitions.All.Single(d=>d.Category==GalaxyFilterCategory.FleetCarrier).Choices.Select(c=>c.Key).ToArray();
Check.That(choices.SequenceEqual(new[]{"fleetcarriernone","fleetcarrierdockable"}));
}
[Test] public void UnknownOriginalServicesNeverBorrowSelectedColourFromPublicProofs()
{
var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Services,RequireOriginalServiceFacts=true,
IncludeUnknown=true,Values=new HashSet<string>{"blackmarket"}};
var system=new GalacticSystem("Unknown",new(0,0,0)){Data=new(){Services=["BlackMarket"],
NativeFilterFacts=new("F1",42,100){ServicesRequested=true},ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
Check.That(filter.IsUnknown(system)&&filter.Matches(system));
Check.That(filter.GetOriginalRgba(system) is null);
Check.Equal(new StarColour(125,140,150),filter.GetColour(system));
}
}