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 GalaxyOriginalPowerFiltersTests
{
    [Test] public void OriginalExpansionAndStrongholdTogglesEachControlTwoDistinctNativeStages()
    {
        var withoutExpansion=GalaxyOriginalPowerFilters.SetStateGroup(null,"expansion",false);Check.Equal(249u,withoutExpansion);
        Check.Equal(false,GalaxyOriginalPowerFilters.MatchesState(withoutExpansion,1));Check.Equal(false,GalaxyOriginalPowerFilters.MatchesState(withoutExpansion,2));Check.Equal(true,GalaxyOriginalPowerFilters.MatchesState(withoutExpansion,0));
        Check.That(GalaxyOriginalPowerFilters.SetStateGroup(withoutExpansion,"expansion",true) is null);
        Check.That(GalaxyOriginalPowerFilters.StateSelected(2,"expansion") is null);Check.Equal("stronghold",GalaxyOriginalPowerFilters.StateKeyForIndex(6));Check.Equal("stronghold",GalaxyOriginalPowerFilters.StateKeyForIndex(7));
        Check.That(GalaxyOriginalPowerFilters.StateKeyForIndex(8) is null);Check.Equal(0u,GalaxyOriginalPowerFilters.FromSavedMask(0));Check.That(GalaxyOriginalPowerFilters.FromSavedMask(-1) is null);
    }
    [Test] public void OriginalPowerMaskUsesTheActualIndexAndLeavesFlaglessUnoccupiedSystemsVisible()
    {
        Check.Equal(true,GalaxyOriginalPowerFilters.MatchesPower(0,0,null,0));Check.Equal(false,GalaxyOriginalPowerFilters.MatchesPower(0,0,null,4));
        Check.Equal(true,GalaxyOriginalPowerFilters.MatchesPower(4,0,null,12));Check.Equal(false,GalaxyOriginalPowerFilters.MatchesPower(2,0,null,12));
        Check.Equal(true,GalaxyOriginalPowerFilters.MatchesPower(4,2,2,null));Check.Equal(false,GalaxyOriginalPowerFilters.MatchesPower(4,2,9,null));
        Check.Equal(true,GalaxyOriginalPowerFilters.MatchesPower(4,2,34,null));Check.Equal(false,GalaxyOriginalPowerFilters.MatchesPower(2,2,34,null));
        Check.That(GalaxyOriginalPowerFilters.MatchesPower(4,2,null,null) is null);Check.That(GalaxyOriginalPowerFilters.MatchesState(0,null) is null);Check.Equal(true,GalaxyOriginalPowerFilters.MatchesState(null,null));
    }
    [Test] public void OriginalTerritoryRequiresCurrentNativeAdmissibilityAndNeverLetsPublicProofBypassMasks()
    {
        var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power,TerritoryPowerMask=4,TerritoryStateMask=6};
        GalacticSystem Actual(GalaxyNativePowerStatus? status)=>new("Actual",new(0,0,0)){Data=new(){Power="Unrelated public owner",ConfirmedQueries=new HashSet<string>{filter.QueryKey},NativeFilterFacts=new("F1",42,100){PowerStatus=status}}};
        var expansion=Actual(new(0,1,null,null,4,0,true));Check.That(filter.Matches(expansion)&&filter.Evaluate(expansion).Matches&&!filter.IsUnknown(expansion));
        Check.That(filter.Matches(Actual(new(0,2,null,null,12,1,true))));
        Check.That(!filter.Matches(Actual(new(0,3,null,null,4,3,true))));Check.That(!(filter with{IncludeUnknown=true}).Matches(Actual(new(1,1,9,7,0,0,true))));
        Check.That(!(filter with{IncludeUnknown=true}).Matches(Actual(new(0,1,null,null,4,0,false))));
        var unknown=Actual(new(0,1,null,null,4,0,null));Check.That(!filter.Matches(unknown)&&filter.IsUnknown(unknown));Check.That((filter with{IncludeUnknown=true}).Matches(unknown));
        Check.That(!filter.Matches(Actual(null)));Check.That((filter with{TerritoryPowerMask=0}).Matches(Actual(new(0,1,null,null,0,0,true))));
        Check.That(!(filter with{TerritoryStateMask=0,IncludeUnknown=true}).Matches(expansion));
        Check.That(filter.QueryKey!=(filter with{TerritoryPowerMask=8}).QueryKey&&filter.QueryKey!=(filter with{TerritoryStateMask=192}).QueryKey);
        var outer=filter with{PowerplayView=GalaxyPowerplayView.Activities,TerritoryStateMask=0};
        var visible=expansion with{Data=expansion.Data with{NativeFilterFacts=expansion.Data.NativeFilterFacts! with{PowerOuter=new(true,null,null,null)}}};
        Check.That(outer.UsesPowerStatus&&outer.Matches(visible));
    }
    [Test] public void SavedMasksPreserveDisabledEmptyAndPartialOriginalGroupsWithoutPublicNameSelections()
    {
        var current=new GalaxyMapFilter{Values=new HashSet<string>{"oldowner"},PowerStateValues=new HashSet<string>{"exploited"}};
        var partial=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='2'/><PoliticsTerritoryModePowersFilter Value='4'/><PoliticsTerritoryModeStatesFilter Value='2'/></Root>",current).Filter;
        Check.Equal(4u,partial.TerritoryPowerMask);Check.Equal(2u,partial.TerritoryStateMask);Check.That(partial.Values is null&&partial.PowerStateValues is null);Check.That(GalaxyOriginalPowerFilters.StateSelected(partial.TerritoryStateMask,"expansion") is null);
        var empty=GalaxyOriginalSettings.Parse("<Root><PoliticsTerritoryModePowersFilter Value='0'/><PoliticsTerritoryModeStatesFilter Value='0'/></Root>",partial).Filter;
        Check.Equal(0u,empty.TerritoryPowerMask);Check.Equal(0u,empty.TerritoryStateMask);
        var disabled=GalaxyOriginalSettings.Parse("<Root><PoliticsTerritoryModePowersFilter Value='-1'/><PoliticsTerritoryModeStatesFilter Value='-1'/></Root>",empty).Filter;
        Check.That(disabled.TerritoryPowerMask is null&&disabled.TerritoryStateMask is null);
        var invalid=GalaxyOriginalSettings.Parse("<Root><PoliticsTerritoryModePowersFilter Value='not-a-number'/></Root>",partial);Check.Equal(4u,invalid.Filter.TerritoryPowerMask);Check.That(invalid.Limitations.Any(l=>l.Contains("格式无效")));
    }
    [Test] public async Task OriginalUnoccupiedMaskCandidatesAreNotIncorrectlyRestrictedToPublicControllingPower()
    {
        using var http=new HttpClient();var service=new GalaxyQueryService(http);
        var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power,TerritoryPowerMask=4,TerritoryStateMask=6,Values=new HashSet<string>{"somepublicowner"},PowerStateValues=new HashSet<string>{"expansion"}};
        var plans=await service.PlansAsync(filter);Check.Equal(1,plans.Count);Check.Equal("systems",plans[0].Index);Check.Equal(0,plans[0].Filters.Count);Check.That(!plans[0].CertifiesMatch);
    }
}