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 sealed class GalaxyOriginalCarrierFilteringTests
{
    private static GalaxyMapFilter Filter(string key)=>new(){Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.FleetCarrier,
        RequireOriginalCarrierFacts=true,Values=new HashSet<string>{key}};
    private static GalacticSystem Star(bool? dockable,bool requested=true)=>new("Actual",new(0,0,0))
    {Data=new(){FleetCarrier=true,NativeFilterFacts=new("F1",42,100){CarrierDockable=dockable,CarrierRequested=requested}}};

    [Test] public void OriginalDockabilityIsIndependentFromContradictoryPublicCarrierPresence()
    {
        var none=Star(false);var filter=Filter("fleetcarriernone");
        Check.That(filter.Matches(none)&&!filter.IsUnknown(none));
        Check.That(!Filter("fleetcarrierdockable").Matches(none));
        Check.Equal("fleetcarriernone",GalaxyMapFilter.Keys(none,GalaxyFilterCategory.FleetCarrier)!.Single());
        Check.Equal(filter.ColourForValue("fleetcarriernone"),filter.GetColour(none));
        var actual=Star(true) with{Data=Star(true).Data with{FleetCarrier=false}};
        Check.That(Filter("fleetcarrierdockable").Matches(actual)&&!Filter("fleetcarriernone").Matches(actual));
        Check.That(Filter("fleetcarrierdockable").GetOriginalRgba(actual) is not null);
    }
    [Test] public void UnknownOrUnrequestedOriginalCacheCannotUseOldPublicProofOrColour()
    {
        var filter=Filter("fleetcarrierdockable") with{IncludeUnknown=true};
        foreach(var system in new[]{Star(null),Star(true,false),new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}}})
        {
            var oldProof=system with{Data=system.Data with{ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
            Check.That(filter.IsUnknown(oldProof)&&filter.Matches(oldProof));
            Check.That(!(filter with{IncludeUnknown=false}).Matches(oldProof));
            Check.That(filter.GetOriginalRgba(oldProof) is null);
            Check.Equal(new StarColour(125,140,150),filter.GetColour(oldProof));
        }
        Check.That(Filter("fleetcarriernone").RequestsOriginalCarrierFacts);
        Check.That(!(filter with{Mode=GalaxyMapMode.Realistic}).RequestsOriginalCarrierFacts);
    }
    [Test] public void PublicPresenceDoesNotAnswerOriginalChoicesWithoutAnOriginalConnection()
    {
        var filter=Filter("fleetcarrierdockable") with{RequireOriginalCarrierFacts=false};
        var publicOnly=new GalacticSystem("Public",new(0,0,0)){Data=new(){FleetCarrier=true}};
        Check.That(filter.IsUnknown(publicOnly)&&!filter.Matches(publicOnly)&&filter.GetOriginalRgba(publicOnly) is null);
        var choices=GalaxyFilterDefinitions.All.Single(d=>d.Category==GalaxyFilterCategory.FleetCarrier).Choices.Select(c=>c.Key).ToArray();
        Check.That(choices.SequenceEqual(new[]{"fleetcarriernone","fleetcarrierdockable"}));
    }
    [Test] public void UnknownOriginalServicesNeverBorrowSelectedColourFromPublicProofs()
    {
        var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Services,RequireOriginalServiceFacts=true,
            IncludeUnknown=true,Values=new HashSet<string>{"blackmarket"}};
        var system=new GalacticSystem("Unknown",new(0,0,0)){Data=new(){Services=["BlackMarket"],
            NativeFilterFacts=new("F1",42,100){ServicesRequested=true},ConfirmedQueries=new HashSet<string>{filter.QueryKey}}};
        Check.That(filter.IsUnknown(system)&&filter.Matches(system));
        Check.That(filter.GetOriginalRgba(system) is null);
        Check.Equal(new StarColour(125,140,150),filter.GetColour(system));
    }
}