Files
aibis-dream/Assets/Editor/Tests/ActorPrefabContractTests.cs
T

51 lines
2.0 KiB
C#

using AibisDream.FrameAnimation;
using AibisDream.Utility;
using NUnit.Framework;
using UnityEditor;
using UnityEditor.AddressableAssets;
using UnityEngine;
namespace AibisDream.SystemEditor.Tests
{
public sealed class ActorPrefabContractTests
{
private const string PrefabPath =
"Assets/Prefabs/FixSystemPrefabs/FrameAnimationActor.prefab";
[Test]
public void FrameAnimationActor_PrefabAndSnapshotContractAreConsistent()
{
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PrefabPath);
Assert.That(prefab, Is.Not.Null);
Assert.That(prefab.GetComponent<SpriteRenderer>(), Is.Not.Null);
Assert.That(prefab.GetComponent<FrameAnimationPlayer>(), Is.Not.Null);
Assert.That(prefab.GetComponent<FrameAnimationActor>(), Is.Not.Null);
var entry = AddressableAssetSettingsDefaultObject.Settings.FindAssetEntry(
AssetDatabase.AssetPathToGUID(PrefabPath));
Assert.That(entry, Is.Not.Null);
Assert.That(entry.address, Is.EqualTo(ConstRef.FrameAnimationActorPrefabName));
var actorObject = Object.Instantiate(prefab);
var slotObject = new GameObject("Actor Slot");
try
{
var slot = slotObject.AddComponent<ActorSlot>();
slot.slotName = "test-slot";
var actor = actorObject.GetComponent<FrameAnimationActor>();
actor.Init("TestActor", slot, ActorType.FrameAnimation);
var snapshot = actor.CaptureEntry();
Assert.That(snapshot.actorName, Is.EqualTo("TestActor"));
Assert.That(snapshot.slotName, Is.EqualTo("test-slot"));
Assert.That(snapshot.actorType, Is.EqualTo(nameof(ActorType.FrameAnimation)));
}
finally
{
Object.DestroyImmediate(actorObject);
Object.DestroyImmediate(slotObject);
}
}
}
}