using XFEEDToolBox.Core.Galaxy; using XFEExtension.NetCore.XUnit.Attributes; namespace XFEEDToolBox.Test; [TestFixture] public class GalaxyOriginalSizeTests { private static GalacticSystem Star(int? colony=null)=>new("Measured",new(1,2,3),StarClass:"O") {Data=new(){Population=600,NativeFilterFacts=colony is {} status?new("F1",42,7,ColonisationStatus:status):null}}; [Test] public void CurrentPanelDoesNotOfferAllSavedVisualisationIdentifiers() { Check.That(GalaxyOriginalSizeOptions.CurrentPanelCategories.SequenceEqual([GalaxyFilterCategory.None,GalaxyFilterCategory.Population])); for(var id=0;id<16;id++) { var category=GalaxyOriginalSettings.CategoryForIndex(id)!.Value; var option=GalaxyOriginalSizeOptions.ForCategory(category);Check.That(option is not null); Check.Equal(id is 0 or 1,option!.Value.CurrentPanelOption); } Check.That(GalaxyOriginalSizeOptions.ForCategory(GalaxyFilterCategory.Markers) is null); Check.That(GalaxyOriginalSizeOptions.ForCategory(GalaxyFilterCategory.PowerActivity) is null); } [Test] public void SavedClassifiedSizeChannelsUseTheActualConstantWithoutDependingOnCategoryFacts() { foreach(var id in new[]{2,3,4,5,6,7,8,10,11,12,14,15}) { var category=GalaxyOriginalSettings.CategoryForIndex(id)!.Value; var imported=GalaxyOriginalSettings.Parse($"",new()); Check.Equal(category,imported.Filter.SizeCategory); Check.Equal(GalaxyOriginalAppearance.DefaultSize,imported.Filter.SelectedOriginalSize(Star())!.Value); Check.Equal(GalaxyOriginalAppearance.DefaultSize,imported.Filter.RelativeSize(Star() with{Data=new()})); Check.That(imported.Limitations.All(l=>!l.Contains("公式尚未核验"))); } } [Test] public void ColonisationSizeUsesRawCandidateClassificationAndDoesNotGuessFromPublicLabels() { var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.None,SizeCategory=GalaxyFilterCategory.Colonisation}; Check.That(filter.IsQueryActive&&filter.RequestsOriginalColonisationSize); for(var status=0;status<=15;status++) Check.Equal(GalaxyOriginalAppearance.DefaultSize*(status is 5 or 6?GalaxyOriginalSizeOptions.ColonisationExcludedMultiplier:1),filter.SelectedOriginalSize(Star(status))!.Value); Check.That(filter.SelectedOriginalSize(Star() with{Data=new(){Colonisation="excluded",OwnedColony=true}}) is null); Check.That(filter.SelectedOriginalSize(Star(16)) is null); Check.Equal(1f,(filter with{Mode=GalaxyMapMode.Realistic}).RelativeSize(Star(5))); Check.That(!(filter with{Mode=GalaxyMapMode.Realistic}).RequestsOriginalColonisationSize); } [Test] public void PopulationAndCommoditySizesRemainIndependentOfTheColourSelection() { var population=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Security,SizeCategory=GalaxyFilterCategory.Population,PopulationMinimum=100,PopulationMaximum=1100}; Check.That(Math.Abs(population.SelectedOriginalSize(Star())!.Value-1.15f)<.00001f); Check.Equal(0f,population.SelectedOriginalSize(Star() with{Data=new(){Population=99}})!.Value); Check.That(population.SelectedOriginalSize(Star() with{Data=new()}) is null); var commodity=population with{SizeCategory=GalaxyFilterCategory.Commodity}; Check.That(commodity.RequiresOriginalCommodity&&commodity.SelectedOriginalSize(Star()) is null); Check.Equal(GalaxyOriginalAppearance.DefaultSize,commodity.RelativeSize(Star())); } }