70 lines
2.3 KiB
C#
70 lines
2.3 KiB
C#
using NUnit.Framework;
|
|
using Core.Domain;
|
|
using Infrastructure.Unity;
|
|
|
|
namespace DecayGrid.Tests
|
|
{
|
|
public class TileRegistryTests
|
|
{
|
|
private TileRegistry _registry;
|
|
|
|
[SetUp]
|
|
public void SetUp() => _registry = new TileRegistry();
|
|
|
|
[Test]
|
|
public void Register_AddsToAllTiles()
|
|
{
|
|
var tile = new Tile("0_0_0", 0, 0.5f, 2f);
|
|
_registry.Register(tile);
|
|
Assert.AreEqual(1, _registry.AllTiles.Count);
|
|
}
|
|
|
|
[Test]
|
|
public void FindTiles_ReturnsMatchingTiles()
|
|
{
|
|
var tile = new Tile("0_0_0", 0, 0.5f, 2f);
|
|
_registry.Register(tile);
|
|
var result = _registry.FindTiles(t => t.CurrentState == TileState.Stable);
|
|
Assert.AreEqual(1, result.Count);
|
|
}
|
|
|
|
[Test]
|
|
public void FindTiles_ExcludesNonMatchingTiles()
|
|
{
|
|
var tile = new Tile("0_0_0", 0, 0.5f, 2f);
|
|
tile.StepOn(); // Now Warning
|
|
_registry.Register(tile);
|
|
var result = _registry.FindTiles(t => t.CurrentState == TileState.Stable);
|
|
Assert.AreEqual(0, result.Count);
|
|
}
|
|
|
|
[Test]
|
|
public void TryGetView_ReturnsFalse_WhenTileHasNoView()
|
|
{
|
|
var tile = new Tile("0_0_0", 0, 0.5f, 2f);
|
|
_registry.Register(tile); // no view
|
|
Assert.IsFalse(_registry.TryGetView("0_0_0", out _));
|
|
}
|
|
|
|
[Test]
|
|
public void GroupViewsByFloor_PlacesTileOnCorrectFloor()
|
|
{
|
|
// Can't create TileViewAdapter in EditMode (MonoBehaviour), so just verify tile with no view doesn't crash
|
|
var tile = new Tile("1_5_5", 1, 0.5f, 2f);
|
|
_registry.Register(tile); // no view
|
|
var floors = _registry.GroupViewsByFloor(3);
|
|
Assert.AreEqual(3, floors.Count);
|
|
// Tile has no view registered, so no view should appear in any floor
|
|
Assert.AreEqual(0, floors[1].Count);
|
|
}
|
|
|
|
[Test]
|
|
public void GroupViewsByFloor_OutOfRangeTile_DoesNotThrow()
|
|
{
|
|
var tile = new Tile("5_0_0", 5, 0.5f, 2f); // floor 5, but only 3 floors
|
|
_registry.Register(tile);
|
|
Assert.DoesNotThrow(() => _registry.GroupViewsByFloor(3));
|
|
}
|
|
}
|
|
}
|