79 lines
3.2 KiB
C#
79 lines
3.2 KiB
C#
using AibisDream.FrameAnimation;
|
|
using AibisDream.SaveSystem;
|
|
using AibisDream.Utility;
|
|
using NUnit.Framework;
|
|
using UnityEditor;
|
|
using UnityEditor.AddressableAssets;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.SystemEditor.Tests
|
|
{
|
|
public sealed class FrameAnimationActorIntegrationTests
|
|
{
|
|
private const string PrefabPath =
|
|
"Assets/Prefabs/FixSystemPrefabs/FrameAnimationActor.prefab";
|
|
|
|
[Test]
|
|
public void ActorType_AppendsFrameAnimationWithoutChangingExistingValues()
|
|
{
|
|
Assert.That((int)ActorType.Sprite, Is.EqualTo(0));
|
|
Assert.That((int)ActorType.Anima, Is.EqualTo(1));
|
|
Assert.That((int)ActorType.AnimaEx, Is.EqualTo(2));
|
|
Assert.That((int)ActorType.FrameAnimation, Is.EqualTo(3));
|
|
Assert.That(
|
|
System.Enum.TryParse("FrameAnimation", out ActorType parsed),
|
|
Is.True);
|
|
Assert.That(parsed, Is.EqualTo(ActorType.FrameAnimation));
|
|
}
|
|
|
|
[Test]
|
|
public void Prefab_HasRequiredComponentsAndPersistentAddress()
|
|
{
|
|
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);
|
|
Assert.That(prefab.GetComponent<FrameAnimationPlayer>().PlayOnEnable, Is.False);
|
|
Assert.That(prefab.GetComponent<FrameAnimationPlayer>().Graph, Is.Null);
|
|
|
|
var guid = AssetDatabase.AssetPathToGUID(PrefabPath);
|
|
var entry = AddressableAssetSettingsDefaultObject.Settings.FindAssetEntry(guid);
|
|
Assert.That(entry, Is.Not.Null);
|
|
Assert.That(entry.address, Is.EqualTo(ConstRef.FrameAnimationActorPrefabName));
|
|
}
|
|
|
|
[Test]
|
|
public void CaptureEntry_ReusesActorSnapshotFieldsWithoutSchemaChange()
|
|
{
|
|
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PrefabPath);
|
|
var actorObject = Object.Instantiate(prefab);
|
|
var slotObject = new GameObject("Slot");
|
|
try
|
|
{
|
|
var slot = slotObject.AddComponent<ActorSlot>();
|
|
slot.slotName = "test-slot";
|
|
slot.sortingLayer = 0;
|
|
slot.sortingOrder = 17;
|
|
var actor = actorObject.GetComponent<FrameAnimationActor>();
|
|
actor.Init("TestActor", slot, ActorType.FrameAnimation);
|
|
actor.Show();
|
|
|
|
ActorEntrySnapshotDto entry = actor.CaptureEntry();
|
|
|
|
Assert.That(entry.actorName, Is.EqualTo("TestActor"));
|
|
Assert.That(entry.slotName, Is.EqualTo("test-slot"));
|
|
Assert.That(entry.actorType, Is.EqualTo(nameof(ActorType.FrameAnimation)));
|
|
Assert.That(entry.alpha, Is.EqualTo(1f));
|
|
Assert.That(entry.stateName, Is.Empty);
|
|
Assert.That(SaveSnapshotSchema.CurrentVersion, Is.EqualTo(1));
|
|
}
|
|
finally
|
|
{
|
|
Object.DestroyImmediate(actorObject);
|
|
Object.DestroyImmediate(slotObject);
|
|
}
|
|
}
|
|
}
|
|
}
|