using System; using System.Reflection; using BumpCombat.Combat; using BumpCombat.Player; using NUnit.Framework; using UnityEditor; using UnityEngine; namespace BumpCombat.Tests { public sealed class ArtifactChargeVisualTests { private static readonly ActiveArtifactEffect[] Effects = { ActiveArtifactEffect.Dash, ActiveArtifactEffect.Pulse, ActiveArtifactEffect.Phoenix, ActiveArtifactEffect.Cyclone, ActiveArtifactEffect.ThunderCrash, ActiveArtifactEffect.ChainLightning, }; [Test] public void ChargeResources_UseSix64PixelCellsAndPointImport() { foreach (ActiveArtifactEffect effect in Effects) { foreach (string phase in new[] { "Aura", "ReadyAura", "Flash", "Release", }) { string path = $"Assets/_Project/Resources/Artifacts/Charge/" + $"{effect}-{phase}-v1.png"; Texture2D texture = AssetDatabase.LoadAssetAtPath(path); Assert.That(texture, Is.Not.Null, path); Assert.That( texture.width, Is.EqualTo(phase == "Flash" ? 256 : 384), path); Assert.That(texture.height, Is.EqualTo(64), path); Assert.That(texture.filterMode, Is.EqualTo(FilterMode.Point), path); Assert.That(texture.mipmapCount, Is.EqualTo(1), path); } } } [Test] public void ControllerAwake_AutoAddsChargeVisualComponent() { GameObject owner = new("Artifact Charge Visual Harness"); try { owner.AddComponent(); owner.AddComponent(); ActiveArtifactController controller = owner.AddComponent(); typeof(ActiveArtifactController) .GetMethod("Awake", BindingFlags.Instance | BindingFlags.NonPublic) ?.Invoke(controller, null); Assert.That( owner.GetComponent(), Is.Not.Null); Assert.That(controller, Is.Not.Null); } finally { UnityEngine.Object.DestroyImmediate(owner); } } } }