Files
tiny_tackle_heroes/Assets/_Project/Tests/PlayMode/ArtifactImpactFeedbackPlayModeTests.cs
T

108 lines
3.6 KiB
C#

using System.Collections;
using BumpCombat.Combat;
using BumpCombat.Player;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
namespace BumpCombat.PlayModeTests
{
public sealed class ArtifactImpactFeedbackPlayModeTests
{
private GameObject feedbackObject;
private GameObject targetObject;
[SetUp]
public void SetUp()
{
Time.timeScale = 1f;
feedbackObject = new GameObject("Artifact Feedback Test Host");
feedbackObject.AddComponent<SpriteRenderer>();
feedbackObject.AddComponent<CombatFeedback>();
targetObject = new GameObject("Artifact Feedback Test Target");
}
[TearDown]
public void TearDown()
{
if (targetObject != null)
{
Object.Destroy(targetObject);
}
if (feedbackObject != null)
{
Object.Destroy(feedbackObject);
}
Time.timeScale = 1f;
}
[UnityTest]
public IEnumerator SixArtifacts_RenderNormalAndChargedContacts_AndCleanUp()
{
CombatFeedback feedback = feedbackObject.GetComponent<CombatFeedback>();
ActiveArtifactEffect[] effects =
{
ActiveArtifactEffect.Dash,
ActiveArtifactEffect.Pulse,
ActiveArtifactEffect.Phoenix,
ActiveArtifactEffect.Cyclone,
ActiveArtifactEffect.ThunderCrash,
ActiveArtifactEffect.ChainLightning,
};
for (int i = 0; i < effects.Length; i++)
{
ActiveArtifactEffect effect = effects[i];
CombatEvents.RaiseValidHit(new CombatHitResult(
feedbackObject,
targetObject,
false,
HitSide.Front,
0f,
Vector2.up,
0f,
new Vector2(i, 0f),
isArtifactHit: true,
artifactEffect: effect,
isChargedArtifact: false));
CombatEvents.RaiseValidHit(new CombatHitResult(
feedbackObject,
targetObject,
false,
HitSide.Front,
0f,
Vector2.up,
0f,
new Vector2(i, 0.5f),
showsHitFeedback: false,
isArtifactHit: true,
artifactEffect: effect,
isChargedArtifact: true));
string effectName = effect switch
{
ActiveArtifactEffect.Phoenix => "SearingRay",
ActiveArtifactEffect.ChainLightning => "Arc",
_ => effect.ToString(),
};
Assert.That(
GameObject.Find($"Artifact Impact {effectName} Normal"),
Is.Not.Null);
Assert.That(
GameObject.Find($"Artifact Impact {effectName} Charged"),
Is.Not.Null);
}
Assert.That(feedback.ActiveArtifactImpactVisualCount, Is.EqualTo(12));
Assert.That(GameObject.Find("Hit Impact"), Is.Null);
Assert.That(GameObject.Find("Attack Slash"), Is.Null);
Time.timeScale = 1f;
yield return new WaitForSecondsRealtime(0.25f);
Assert.That(feedback.ActiveArtifactImpactVisualCount, Is.Zero);
LogAssert.NoUnexpectedReceived();
}
}
}