using XFEEDToolBox.Core.Galaxy; using XFEExtension.NetCore.XUnit.Attributes; namespace XFEEDToolBox.Test; [TestFixture] public class GalaxyOriginalServicesTests { private static GalaxyMapFilter Filter(params string[] keys)=>new(){Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Services, RequireOriginalServiceFacts=true,Values=keys.ToHashSet()}; private static GalacticSystem Star(ushort? mask,bool requested=true,bool? defaulted=null)=>new("Measured",new(0,0,0)) {Data=new(){NativeFilterFacts=new("F1",123,42){ServiceMask=mask,ServicesRequested=requested,ServicesDefaulted=defaulted}}}; [Test] public void OriginalTenIndicesAreIndependentOfPublicServiceOrderAndUseActualOrSelections() { for(var index=0;index<10;index++) { var key=GalaxyOriginalServiceOptions.KeyForIndex(index)!;Check.Equal(index,GalaxyOriginalServiceOptions.IndexForKey(key)); var filter=Filter(key);Check.That(filter.RequestsOriginalServices); Check.That(filter.Matches(Star((ushort)(1<{filter.QueryKey}}}; Check.That(!filter.Matches(contradictory)&&!filter.IsUnknown(contradictory)); var evaluated=filter.Evaluate(contradictory);Check.That(!evaluated.Matches&&!evaluated.Unknown&&evaluated.Keys is{Count:0}); var all=filter with{Values=null};Check.That(!all.Matches(contradictory)&&!all.IsUnknown(contradictory)); Check.That(all.Matches(Star(256))); } [Test] public void ExplicitOriginalUnknownNeverFallsBackToAnOlderPublicPositive() { var filter=Filter("materialtraderencoded"); foreach(var system in new[]{Star(null),Star(4,requested:false),new GalacticSystem("Public only",new(0,0,0))}) { var publicPositive=system with{Data=system.Data with{Services=["materialTraderEncoded"],ConfirmedQueries=new HashSet{filter.QueryKey}}}; Check.That(!filter.Matches(publicPositive)&&filter.IsUnknown(publicPositive)); Check.That((filter with{IncludeUnknown=true}).Matches(publicPositive)); } Check.That(!filter.Matches(Star(ushort.MaxValue))&&filter.IsUnknown(Star(ushort.MaxValue))); var receipt=Star(4);Check.That((filter with{RequireOriginalServiceFacts=false}).Matches(receipt)); var negative=Star(0);Check.That(!(filter with{RequireOriginalServiceFacts=false,IncludeUnknown=true}).Matches(negative)); } [Test] public void ToolOnlyServicesRemainIndependentAndCannotFabricateOriginalSubtypes() { var extended=Filter("repair");Check.That(!extended.RequestsOriginalServices); var data=Star(0) with{Data=Star(0).Data with{Services=["repair","materialTrader"]}}; Check.That(extended.Matches(data));Check.That(!Filter("materialtraderraw").Matches(data)); var mixed=Filter("blackmarket","repair");Check.That(mixed.Matches(data)&&!mixed.IsUnknown(data)); var noObservedExtension=Star(0);Check.That(mixed.IsUnknown(noObservedExtension)&&!mixed.Matches(noObservedExtension)); Check.That((mixed with{IncludeUnknown=true}).Matches(noObservedExtension)); var sourceOnly=Star(128);Check.That(mixed.Matches(sourceOnly)&&!mixed.IsUnknown(sourceOnly)); Check.That((Filter("blackmarket") with{Mode=GalaxyMapMode.Realistic}).Matches(Star(null))); } }