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)));
}
}
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)));
}
}