2.5 update
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using System.Linq;
|
||||
using BumpCombat.Constants;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BumpCombat.Tests
|
||||
{
|
||||
public sealed class Defense25DMonsterPoolPrefabAssetTests
|
||||
{
|
||||
private const string PoolPath = "Assets/_Project/Constants/Defense25DComparison/MonsterPools.asset";
|
||||
private const string PrefabRoot = "Assets/_Project/Prefabs/Defense25DMonsters/Roster25D-v1/";
|
||||
|
||||
[Test]
|
||||
public void EveryAllowedSpeciesHasADistinctVisualPrefabWithASprite()
|
||||
{
|
||||
GameObject existingPrefab = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/_Project/Prefabs/Enemies/Slime.prefab");
|
||||
Assert.That(existingPrefab, Is.Not.Null, "The existing Slime prefab must load as the control asset.");
|
||||
Assert.That(PrefabUtility.IsPartOfPrefabAsset(existingPrefab), Is.True,
|
||||
$"The existing prefab control was not recognized: {AssetDatabase.GetAssetPath(existingPrefab)} / {PrefabUtility.GetPrefabAssetType(existingPrefab)}.");
|
||||
|
||||
Defense25DMonsterPoolDefinition pool = AssetDatabase.LoadAssetAtPath<Defense25DMonsterPoolDefinition>(PoolPath);
|
||||
Assert.That(pool, Is.Not.Null, $"Missing pool asset at {PoolPath}.");
|
||||
|
||||
Assert.That(pool.TryValidate(out string validationError), Is.True, validationError);
|
||||
var entries = pool.Tiers.SelectMany(tier => tier.Entries).ToArray();
|
||||
Assert.That(entries.Length, Is.EqualTo(28));
|
||||
Assert.That(entries.Select(entry => entry.VisualPrefab).All(prefab => prefab != null), Is.True);
|
||||
Assert.That(entries.Select(entry => entry.VisualPrefab).Distinct().Count(), Is.EqualTo(28));
|
||||
|
||||
foreach (Defense25DMonsterPoolEntry entry in entries)
|
||||
{
|
||||
GameObject prefab = entry.VisualPrefab;
|
||||
string assetPath = AssetDatabase.GetAssetPath(prefab);
|
||||
GlobalObjectId globalId = GlobalObjectId.GetGlobalObjectIdSlow(prefab);
|
||||
string assetGuid = AssetDatabase.AssetPathToGUID(assetPath);
|
||||
TestContext.WriteLine($"{entry.EnemyDefinitionId}: path={assetPath}; globalObjectId={globalId}; prefabAsset={PrefabUtility.IsPartOfPrefabAsset(prefab)}");
|
||||
Assert.That(PrefabUtility.IsPartOfPrefabAsset(prefab), Is.True,
|
||||
$"{entry.EnemyDefinitionId}: {assetPath} / {PrefabUtility.GetPrefabAssetType(prefab)} / persistent={EditorUtility.IsPersistent(prefab)} / {globalId}.");
|
||||
Assert.That(assetPath, Does.StartWith(PrefabRoot), entry.EnemyDefinitionId);
|
||||
Assert.That(globalId.ToString(), Does.Contain(assetGuid), $"GlobalObjectId doesn't identify the prefab asset for {entry.EnemyDefinitionId}.");
|
||||
|
||||
SpriteRenderer renderer = prefab.GetComponent<SpriteRenderer>();
|
||||
Assert.That(renderer, Is.Not.Null, $"{entry.EnemyDefinitionId} prefab has no root SpriteRenderer.");
|
||||
Assert.That(renderer.sprite, Is.Not.Null, $"{entry.EnemyDefinitionId} prefab has no Idle sprite.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user