Files
mod_rpg/tests/RpgGroupFragmentsTests.cs

25 lines
1.4 KiB
C#

namespace Cthangover.Mods.Rpg.Tests
{
using Cthangover.Core.Mods.Testing;
using Godot;
/// <summary>A cell of a broken object knows its place inside that object.</summary>
public class RpgGroupFragmentsTests
{
[ModTest("group_fragments/place_in_object")]
static void PlaceInObject(ModTestContext ctx)
{
var tileset = new RpgTileset { ID = "fragments" };
tileset.VisualGroups.Add(new RpgVisualGroup { Id = "house", Width = 3, Height = 2, Pattern = new[] { 1, 2, 3, 4, 5, 6 }, AnchorX = 1.5f, AnchorY = 2 });
tileset.VisualGroups.Add(new RpgVisualGroup { Id = "shed", Width = 1, Height = 2, Pattern = new[] { 6, 7 }, AnchorX = 0.5f, AnchorY = 2 });
tileset.VisualGroups.Add(new RpgVisualGroup { Id = "bad", Width = 2, Height = 1, Pattern = new[] { 8 } });
var fragments = RpgGroupFragments.Of(tileset);
ModAssert.Equal("house", fragments[5].Group.Id, "owner of a cell");
ModAssert.True(fragments[5].Cell == new Vector2I(1, 1), "column and row inside the object");
ModAssert.Equal("house", fragments[6].Group.Id, "a shared tile keeps its first object");
ModAssert.True(fragments[7].Cell == new Vector2I(0, 1), "second object's cells");
ModAssert.False(fragments.ContainsKey(8), "invalid groups are ignored");
}
}
}