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{"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{"oldpublicowner"}}).Matches(system)); var oldOwner=filter with{Values=new HashSet{"oldpublicowner"}}; var unmapped=system with{Data=system.Data with{NativeFilterFacts=system.Data.NativeFilterFacts! with{PowerTerritoryOwnerName=null},ConfirmedQueries=new HashSet{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("",new()).Filter; Check.That(disabled.UseMinimumActivity&&!disabled.TerritoryActivityFilterEnabled&&!disabled.UsesPowerActivityCounter);Check.That(disabled.PowerTerritoryRequest is {ActivityEnabled:false,MinimumEnabled:false}); var enabled=GalaxyOriginalSettings.Parse("",new()).Filter; Check.That(enabled.TerritoryActivityFilterEnabled&&enabled.UsesPowerActivityCounter&&!enabled.UseMinimumActivity&&enabled.ActivityAllPowers);Check.That(enabled.PowerTerritoryRequest is {ActivityEnabled:true,MinimumEnabled:false}); } }