Files
AIC-Project/Client/Assets/Script/Tests/EditMode/ResourcePoolManagerTests.cs
T
2026-07-30 20:57:59 +08:00

83 lines
2.5 KiB
C#

using NUnit.Framework;
using UnityEngine;
using XGame;
public sealed class ResourcePoolManagerTests
{
private const string EffectPath = "Assets/Game/Art/Effect/Prefab/test.prefab";
private GameObject _mainBefore;
private GameObject _cacheBefore;
private GameObject _parent;
private GameObject _instance;
[SetUp]
public void SetUp()
{
_mainBefore = GameObject.Find("Main");
_cacheBefore = _mainBefore != null
? _mainBefore.transform.Find("Cache")?.gameObject
: null;
}
[TearDown]
public void TearDown()
{
ResourcePoolManager.ClearAll();
if (_parent != null)
{
Object.DestroyImmediate(_parent);
_parent = null;
}
if (_instance != null)
{
Object.DestroyImmediate(_instance);
_instance = null;
}
GameObject main = GameObject.Find("Main");
if (_mainBefore == null && main != null)
{
Object.DestroyImmediate(main);
}
else if (_mainBefore != null && _cacheBefore == null)
{
Transform createdCache = _mainBefore.transform.Find("Cache");
if (createdCache != null)
{
Object.DestroyImmediate(createdCache.gameObject);
}
}
_mainBefore = null;
_cacheBefore = null;
}
[Test]
public void ReleaseAndTryGet_ReusesInactiveInstanceForSamePath()
{
_parent = new GameObject("parent");
_instance = new GameObject("pooled-effect");
_instance.transform.SetParent(_parent.transform);
_instance.transform.localPosition = new Vector3(1f, 2f, 3f);
_instance.SetActive(true);
ResourcePoolManager.Release(EffectPath, _instance);
Assert.IsFalse(_instance.activeSelf);
Assert.IsNotNull(_instance.transform.parent);
Assert.That(_instance.transform.parent.name, Is.EqualTo("Cache"));
Assert.IsNotNull(_instance.transform.parent.parent);
Assert.That(_instance.transform.parent.parent.name, Is.EqualTo("Main"));
Assert.That(ResourcePoolManager.GetPooledCount(EffectPath), Is.EqualTo(1));
GameObject reused = ResourcePoolManager.TryGet(EffectPath, _parent.transform, Vector3.one, Quaternion.identity);
Assert.AreSame(_instance, reused);
Assert.IsTrue(reused.activeSelf);
Assert.AreSame(_parent.transform, reused.transform.parent);
Assert.That(reused.transform.localPosition, Is.EqualTo(Vector3.one));
}
}