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{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{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{"blackmarket"}}; var system=new GalacticSystem("Unknown",new(0,0,0)){Data=new(){Services=["BlackMarket"], NativeFilterFacts=new("F1",42,100){ServicesRequested=true},ConfirmedQueries=new HashSet{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)); } }