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 GalaxyOriginalPowerSelectionTests
{
    private static readonly GalaxyNativePowerOption[] Options=[new(0,1,42,"First actual definition",.1f,.2f,.3f),new(1,2,7,"Second actual definition",.4f,.5f,.6f)];

    [Test] public void SavedZeroBasedIndexRestoresTheActualNameAndInternalIdRatherThanUiIdOrId()
    {
        var initial=new GalaxyMapFilter{OriginalPowerOptions=Options};
        var first=GalaxyOriginalPowerSelection.FromSavedActivityPower(initial,0);
        Check.Equal(42,first.ActivityInternalPowerId);Check.Equal("First actual definition",first.ActivityPowerName);
        var second=GalaxyOriginalPowerSelection.FromSavedActivityPower(initial,1);
        Check.Equal(7,second.ActivityInternalPowerId);Check.Equal("Second actual definition",second.ActivityPowerName);
        Check.That(first.OriginalActivityPowerIndex is null&&second.OriginalActivityPowerIndex is null&&second.TerritoryActivityFilterEnabled);
        Check.That(GalaxyOriginalPowerSelection.FromSavedActivityPower(initial,7).ActivityPowerName is null);
        Check.That(GalaxyOriginalPowerSelection.FromSavedActivityPower(initial,2).ActivityPowerName is null);
    }

    [Test] public void MissingDefinitionsKeepPendingIndexAndLaterCurrentOptionsResolveIt()
    {
        var pending=GalaxyOriginalPowerSelection.FromSavedActivityPower(new(){ActivityPowerName="Old selection",ActivityInternalPowerId=7},0);
        Check.Equal(0,pending.OriginalActivityPowerIndex);Check.That(pending.ActivityPowerName is null&&pending.ActivityInternalPowerId is null&&!pending.ActivityNativeQueryReady);
        Check.That(ReferenceEquals(pending,GalaxyOriginalPowerSelection.WithOptions(pending,[])));
        var resolved=GalaxyOriginalPowerSelection.WithOptions(pending,Options);
        Check.Equal(42,resolved.ActivityInternalPowerId);Check.Equal("First actual definition",resolved.ActivityPowerName);
        Check.That(resolved.OriginalActivityPowerIndex is null&&resolved.ActivityNativeQueryReady);
        Check.That(ReferenceEquals(resolved,GalaxyOriginalPowerSelection.WithOptions(resolved,Options)));
    }

    [Test] public void DuplicateOrUnavailableIndexCannotFallBackToAnInternalIdOrOldSelection()
    {
        var pending=GalaxyOriginalPowerSelection.FromSavedActivityPower(new(),0);
        var duplicated=GalaxyOriginalPowerSelection.WithOptions(pending,[Options[0],Options[1] with{Index=0}]);
        Check.That(duplicated.OriginalActivityPowerIndex==0&&duplicated.ActivityPowerName is null&&duplicated.ActivityInternalPowerId is null);
        var outOfRange=GalaxyOriginalPowerSelection.FromSavedActivityPower(new(){OriginalPowerOptions=Options},42);
        Check.Equal(42,outOfRange.OriginalActivityPowerIndex);Check.That(outOfRange.ActivityPowerName is null&&!outOfRange.ActivityNativeQueryReady);
    }

    [Test] public void ExplicitChoiceAndAllOrDisabledScopesDoNotReapplyThePendingIndex()
    {
        var pending=GalaxyOriginalPowerSelection.FromSavedActivityPower(new(),0);
        var explicitChoice=pending with{OriginalActivityPowerIndex=null,ActivityPowerName=Options[1].Name,ActivityInternalPowerId=7};
        var chosen=GalaxyOriginalPowerSelection.WithOptions(explicitChoice,Options);
        Check.Equal(7,chosen.ActivityInternalPowerId);Check.Equal(Options[1].Name,chosen.ActivityPowerName);
        var all=GalaxyOriginalPowerSelection.FromSavedActivityPower(pending,-2);
        Check.That(all.ActivityAllPowers&&all.TerritoryActivityFilterEnabled&&all.OriginalActivityPowerIndex is null&&all.ActivityNativeQueryReady);
        var disabled=GalaxyOriginalPowerSelection.FromSavedActivityPower(pending,-1);
        Check.That(!disabled.TerritoryActivityFilterEnabled&&!disabled.ActivityAllPowers&&disabled.OriginalActivityPowerIndex is null&&!disabled.ActivityNativeQueryReady);
        Check.That(ReferenceEquals(pending,GalaxyOriginalPowerSelection.FromSavedActivityPower(pending,-3)));
    }
}