2.5 update
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using System.Linq;
|
||||
using BumpCombat.Constants;
|
||||
using BumpCombat.Defense.Comparison;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEditor.SceneManagement;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace BumpCombat.Tests
|
||||
{
|
||||
public sealed class Defense25DRunAssetTests
|
||||
{
|
||||
private const string WaveConstantsPath = "Assets/_Project/Constants/Defense25DComparison/LongDefenseWaveDirector.asset";
|
||||
private const string RunDefinitionPath = "Assets/_Project/Constants/Defense25DComparison/LongDefenseRun.asset";
|
||||
private const string MonsterPoolPath = "Assets/_Project/Constants/Defense25DComparison/MonsterPools.asset";
|
||||
private const string ArtifactDropConstantsPath = "Assets/_Project/Constants/Defense25DComparison/ArtifactDropConstants.asset";
|
||||
private const string ScenePath = "Assets/_Project/Scenes/Defense25DRun.unity";
|
||||
|
||||
[Test]
|
||||
public void SavedRunAssetsReloadAndSceneReferencesTheRunDefinition()
|
||||
{
|
||||
Defense25DWaveDirectorConstants waveConstants =
|
||||
AssetDatabase.LoadAssetAtPath<Defense25DWaveDirectorConstants>(WaveConstantsPath);
|
||||
Defense25DRunDefinition runDefinition =
|
||||
AssetDatabase.LoadAssetAtPath<Defense25DRunDefinition>(RunDefinitionPath);
|
||||
Defense25DMonsterPoolDefinition monsterPool =
|
||||
AssetDatabase.LoadAssetAtPath<Defense25DMonsterPoolDefinition>(MonsterPoolPath);
|
||||
Defense25DArtifactDropConstants artifactDropConstants =
|
||||
AssetDatabase.LoadAssetAtPath<Defense25DArtifactDropConstants>(ArtifactDropConstantsPath);
|
||||
|
||||
Assert.That(waveConstants, Is.Not.Null, "The Wave Director constants must be a persistent standalone asset.");
|
||||
Assert.That(runDefinition, Is.Not.Null, "The long-defense RunDefinition must be a persistent asset.");
|
||||
Assert.That(runDefinition.WaveDirectorConstants, Is.SameAs(waveConstants));
|
||||
Assert.That(monsterPool, Is.Not.Null);
|
||||
Assert.That(artifactDropConstants, Is.Not.Null);
|
||||
Assert.That(runDefinition.MonsterPoolDefinition, Is.SameAs(monsterPool));
|
||||
Assert.That(runDefinition.ArtifactDropConstants, Is.SameAs(artifactDropConstants));
|
||||
Assert.That(runDefinition.PreparationSeconds, Is.EqualTo(20f));
|
||||
Assert.That(waveConstants.SpawnWindowSeconds, Is.EqualTo(18f));
|
||||
Assert.That(waveConstants.MicroBreakSeconds, Is.EqualTo(6f));
|
||||
Assert.That(waveConstants.StrategyBreakEvery, Is.EqualTo(3));
|
||||
Assert.That(waveConstants.StrategyBreakSeconds, Is.EqualTo(15f));
|
||||
Assert.That(waveConstants.TelegraphSeconds, Is.EqualTo(8f));
|
||||
Assert.That(waveConstants.EliteFirstAtSeconds, Is.EqualTo(90f));
|
||||
Assert.That(waveConstants.EliteIntervalSeconds, Is.EqualTo(90f));
|
||||
Assert.That(waveConstants.StrongEventMinimumIntervalSeconds, Is.EqualTo(1f));
|
||||
Assert.That(waveConstants.MidBossTimes, Is.EqualTo(new[] { 240f, 480f }));
|
||||
Assert.That(waveConstants.ThreatCurve.Last().ThreatBudget, Is.EqualTo(84f));
|
||||
Assert.That(waveConstants.Validate(out string constantsError), Is.True, constantsError);
|
||||
Assert.That(runDefinition.PortalDefinitions.Select(portal => portal.PortalId).Distinct().Count(), Is.EqualTo(12));
|
||||
Assert.That(runDefinition.PortalDefinitions.All(portal => portal.TelegraphSeconds == 10f), Is.True);
|
||||
Assert.That(runDefinition.PortalDefinitions.Select(portal => portal.OpenAt),
|
||||
Is.EqualTo(new[] { 0f, 0f, 120f, 120f, 240f, 240f, 360f, 360f, 480f, 480f, 600f, 600f }));
|
||||
Assert.That(runDefinition.Validate(out string error), Is.True, error);
|
||||
|
||||
Scene scene = EditorSceneManager.OpenScene(ScenePath, OpenSceneMode.Additive);
|
||||
try
|
||||
{
|
||||
Defense25DRunSceneProfile[] profiles = scene.GetRootGameObjects()
|
||||
.Select(root => root.GetComponent<Defense25DRunSceneProfile>())
|
||||
.Where(profile => profile != null)
|
||||
.ToArray();
|
||||
Assert.That(profiles.Length, Is.EqualTo(1));
|
||||
Assert.That(profiles[0].RunDefinition, Is.SameAs(runDefinition));
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (scene.IsValid() && scene.isLoaded)
|
||||
EditorSceneManager.CloseScene(scene, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user