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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Text.Json;
using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;

namespace XFEEDToolBox.Test;

[TestFixture]
public class GalaxyPowerTerritoryTests
{
    private static readonly GalaxyNativePowerTerritoryStyle ActualStyle=new(1,4,7,5.775f,[.2f,.4f,.6f],[.03f,.13f,.32f],.15f);
    private static GalacticSystem Sample(GalaxyNativePowerTerritory? territory)=>new("Actual",new(0,0,0))
    {Data=new(){Power="Old Public Owner",NativeFilterFacts=new("F1",42,100){PowerTerritory=territory,PowerStatus=new(1,4,2,7,0,0,true),PowerTerritoryOwnerName=territory?.Style is not null?"Actual Owner":null}}};
    [Test] public void TerritoryActivityAndMinimumAreIndependentAndOnlyTheirActualScopeBindsTheStyle()
    {
        var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power,UseMinimumActivity=true,MinimumActivity=.8};
        Check.That(filter.UsesPowerTerritory&&!filter.UsesPowerActivityCounter);Check.Equal(new GalaxyNativePowerTerritoryRequest(false,false,0),filter.PowerTerritoryRequest);
        var actual=Sample(new(filter.PowerTerritoryRequest!,null,ActualStyle));Check.Equal(ActualStyle,filter.PowerTerritoryStyle(actual));
        var enabled=filter with{TerritoryActivityFilterEnabled=true,UseMinimumActivity=false,ActivityAllPowers=true};
        Check.That(enabled.UsesPowerActivityCounter&&enabled.ActivityNativeQueryReady);Check.Equal(new GalaxyNativePowerTerritoryRequest(true,false,0),enabled.PowerTerritoryRequest);Check.That(enabled.PowerTerritoryStyle(actual) is null);
        var scoped=Sample(new(enabled.PowerTerritoryRequest!,new(true,null,1),ActualStyle));Check.Equal(ActualStyle,enabled.PowerTerritoryStyle(scoped));
        Check.That((enabled with{Activity=GalaxyPowerActivity.Total}).PowerTerritoryStyle(scoped) is null);Check.That((enabled with{UseMinimumActivity=true}).PowerTerritoryStyle(scoped) is null);
        Check.That(enabled.QueryKey!=filter.QueryKey);Check.Equal(enabled.QueryKey,(enabled with{MinimumActivity=.1}).QueryKey);
    }
    [Test] public void PointUsesOriginalRawRgbAndActualOwnerWhileGeometryRetainsItsSeparateLinearRgb()
    {
        var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power,Values=new HashSet<string>{"actualowner"}};
        var system=Sample(new(filter.PowerTerritoryRequest!,null,ActualStyle));Check.That(filter.Matches(system));
        Check.Equal(new StarColour(51,102,153),filter.GetColour(system));Check.That(ReferenceEquals(ActualStyle.LinearRgb,filter.PowerTerritoryStyle(system)!.LinearRgb));Check.Equal(.15f,filter.PowerTerritoryStyle(system)!.Opacity);
        Check.That(Math.Abs(filter.RelativeSize(system)-.7f)<.00001f);
        var active=filter with{TerritoryActivityFilterEnabled=true,ActivityAllPowers=true};
        Check.That(Math.Abs(active.RelativeSize(Sample(new(active.PowerTerritoryRequest!,new(true,null,1),ActualStyle)))-.525f)<.00001f);
        Check.That(!(filter with{Values=new HashSet<string>{"oldpublicowner"}}).Matches(system));
        var oldOwner=filter with{Values=new HashSet<string>{"oldpublicowner"}};
        var unmapped=system with{Data=system.Data with{NativeFilterFacts=system.Data.NativeFilterFacts! with{PowerTerritoryOwnerName=null},ConfirmedQueries=new HashSet<string>{oldOwner.QueryKey}}};
        Check.That(!oldOwner.Matches(unmapped)&&oldOwner.IsUnknown(unmapped));
        var unknown=system.Data.Merge(new(){NativeFilterFacts=new("F1",42,100){PowerTerritory=new(filter.PowerTerritoryRequest!,null,null)}});
        Check.That(unknown.NativeFilterFacts!.PowerTerritory!.Style is null&&unknown.NativeFilterFacts.PowerTerritoryOwnerName is null);
        Check.That(!JsonSerializer.Serialize(system.Data).Contains("PowerTerritory"));
    }
    [Test] public void OriginalDisabledActivityDoesNotBecomeEnabledBecauseTheMinimumToggleWasSavedOn()
    {
        var disabled=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='2'/><PoliticsMode Value='0'/><PoliticsTerritoryActivityFilterPower Value='-1'/><PoliticsTerritoryActivityFilterFilterMinActivity Value='1'/></Root>",new()).Filter;
        Check.That(disabled.UseMinimumActivity&&!disabled.TerritoryActivityFilterEnabled&&!disabled.UsesPowerActivityCounter);Check.That(disabled.PowerTerritoryRequest is {ActivityEnabled:false,MinimumEnabled:false});
        var enabled=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='2'/><PoliticsMode Value='0'/><PoliticsTerritoryActivityFilterPower Value='-2'/><PoliticsTerritoryActivityFilterFilterMinActivity Value='0'/></Root>",new()).Filter;
        Check.That(enabled.TerritoryActivityFilterEnabled&&enabled.UsesPowerActivityCounter&&!enabled.UseMinimumActivity&&enabled.ActivityAllPowers);Check.That(enabled.PowerTerritoryRequest is {ActivityEnabled:true,MinimumEnabled:false});
    }
}