51 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|