XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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)));
    }
}