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<<index)))&&!filter.IsUnknown(Star((ushort)(1<<index))));
Check.That(!filter.Matches(Star((ushort)(1023^(1<<index))))&&!filter.IsUnknown(Star((ushort)(1023^(1<<index)))));
}
var both=Filter("materialtraderxeno","techbrokerguardian");Check.That(both.Matches(Star(8))&&both.Matches(Star(32))&&!both.Matches(Star(1)));
Check.That(Filter("facilitator").Matches(Star(64))&&Filter("interstellarfactors").Matches(Star(64)));
}
[Test] public void AReadyZeroCannotBeResurrectedByPublicObservationsQueryProofsOrIncludeUnknown()
{
var filter=Filter("blackmarket") with{IncludeUnknown=true};
var empty=Star(0,defaulted:true);var contradictory=empty with{Data=empty.Data with{Services=["BlackMarket"],ConfirmedQueries=new HashSet<string>{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<string>{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)));
}
}
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<<index)))&&!filter.IsUnknown(Star((ushort)(1<<index))));
Check.That(!filter.Matches(Star((ushort)(1023^(1<<index))))&&!filter.IsUnknown(Star((ushort)(1023^(1<<index)))));
}
var both=Filter("materialtraderxeno","techbrokerguardian");Check.That(both.Matches(Star(8))&&both.Matches(Star(32))&&!both.Matches(Star(1)));
Check.That(Filter("facilitator").Matches(Star(64))&&Filter("interstellarfactors").Matches(Star(64)));
}
[Test] public void AReadyZeroCannotBeResurrectedByPublicObservationsQueryProofsOrIncludeUnknown()
{
var filter=Filter("blackmarket") with{IncludeUnknown=true};
var empty=Star(0,defaulted:true);var contradictory=empty with{Data=empty.Data with{Services=["BlackMarket"],ConfirmedQueries=new HashSet<string>{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<string>{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)));
}
}