Sync daemon authority migration
This commit is contained in:
parent
030b4b5d74
commit
39a0dc8737
295 changed files with 25121 additions and 7360 deletions
108
Assets/Scripts/Tests/StatRecipeSurfaceCommandTests.cs
Normal file
108
Assets/Scripts/Tests/StatRecipeSurfaceCommandTests.cs
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
using System.Linq;
|
||||
using GameCult.Aetheria.State.Unity;
|
||||
using NUnit.Framework;
|
||||
|
||||
public class StatRecipeSurfaceCommandTests
|
||||
{
|
||||
private const string TestUpdatedAtUtc = "2026-06-18T00:00:00.0000000Z";
|
||||
|
||||
[Test]
|
||||
public void ToggleConditionCreatesEnabledInfluenceForSelectedRecipe()
|
||||
{
|
||||
var state = StateWithRecipe();
|
||||
|
||||
var next = AetheriaRuntimeStatRecipes.ToggleCondition(
|
||||
state,
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Range,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
var influence = next.SelectedRecipe.Influences.Single();
|
||||
Assert.AreEqual(AetheriaRuntimeStatRecipeConditions.Range, influence.Condition);
|
||||
Assert.AreEqual(AetheriaRuntimeStatRecipeOperations.Add, influence.Operation);
|
||||
Assert.IsTrue(influence.Enabled);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CycleInfluenceOperationAdvancesAddMultiplyOverride()
|
||||
{
|
||||
var state = AetheriaRuntimeStatRecipes.ToggleCondition(
|
||||
StateWithRecipe(),
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Quality,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
state = AetheriaRuntimeStatRecipes.CycleInfluenceOperation(
|
||||
state,
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Quality,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
Assert.AreEqual(AetheriaRuntimeStatRecipeOperations.Multiply, state.SelectedRecipe.Influences[0].Operation);
|
||||
|
||||
state = AetheriaRuntimeStatRecipes.CycleInfluenceOperation(
|
||||
state,
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Quality,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
Assert.AreEqual(AetheriaRuntimeStatRecipeOperations.Override, state.SelectedRecipe.Influences[0].Operation);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetInfluenceAmountAndCurveUpdateOnlyTargetInfluence()
|
||||
{
|
||||
var state = AetheriaRuntimeStatRecipes.ToggleCondition(
|
||||
StateWithRecipe(),
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Heat,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
state = AetheriaRuntimeStatRecipes.SetInfluenceAmount(
|
||||
state,
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Heat,
|
||||
3.5,
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
state = AetheriaRuntimeStatRecipes.SetInfluenceCurve(
|
||||
state,
|
||||
"weapon.damage",
|
||||
AetheriaRuntimeStatRecipeConditions.Heat,
|
||||
"easeOut",
|
||||
updatedAtUtc: TestUpdatedAtUtc);
|
||||
|
||||
var influence = state.SelectedRecipe.Influences.Single();
|
||||
Assert.AreEqual(3.5, influence.Amount, 0.0001);
|
||||
Assert.AreEqual("easeOut", influence.CurveLabel);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetPreviewConditionUpdatesRequestedPreviewAxis()
|
||||
{
|
||||
var next = AetheriaRuntimeStatRecipes.SetPreviewCondition(
|
||||
StateWithRecipe(),
|
||||
AetheriaRuntimeStatRecipeConditions.Charge,
|
||||
0.25,
|
||||
TestUpdatedAtUtc);
|
||||
|
||||
Assert.AreEqual(0.25, next.Preview.Charge, 0.0001);
|
||||
Assert.AreEqual(AetheriaRuntimeStatRecipePreviewState.Default.Quality, next.Preview.Quality, 0.0001);
|
||||
}
|
||||
|
||||
private static AetheriaRuntimeStatRecipeSurfaceState StateWithRecipe()
|
||||
{
|
||||
return new AetheriaRuntimeStatRecipeSurfaceState(
|
||||
new[]
|
||||
{
|
||||
new AetheriaRuntimeStatRecipeState(
|
||||
"weapon.damage",
|
||||
"Weapon Damage",
|
||||
10,
|
||||
new AetheriaRuntimeStatInfluenceState[0])
|
||||
},
|
||||
"Weapon Damage",
|
||||
AetheriaRuntimeStatRecipePreviewState.Default,
|
||||
"");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue