| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- using System;
- using System.Linq;
- using Microsoft.Xna.Framework.Graphics;
- using MonoGame.Extended.Tilemaps;
- namespace MonoGame.Extended.Tests;
- public sealed class TilemapTilesetCollectionTests
- {
- private Texture2D CreateDummyTexture()
- {
- // TODO: setup with xvfb later
- return null;
- }
- [Fact]
- public void Count_InitiallyZero()
- {
- var collection = new TilemapTilesetCollection();
- Assert.Empty(collection);
- }
- [Fact]
- public void Indexer_ReturnsCorrectTileset()
- {
- var collection = new TilemapTilesetCollection();
- var tileset1 = new TilemapTileset("Tileset1", CreateDummyTexture(), 32, 32, 100, 10);
- var tileset2 = new TilemapTileset("Tileset2", CreateDummyTexture(), 32, 32, 50, 5);
- collection.Add(tileset1);
- collection.Add(tileset2);
- Assert.Equal(tileset1, collection[0]);
- Assert.Equal(tileset2, collection[1]);
- }
- [Fact]
- public void GetTilesetForGid_WithSingleTileset_ReturnsCorrectTileset()
- {
- var collection = new TilemapTilesetCollection();
- var tileset = new TilemapTileset("Tileset", CreateDummyTexture(), 32, 32, 100, 10);
- tileset.FirstGlobalId = 1;
- collection.Add(tileset);
- var result = collection.GetTilesetForGid(50);
- Assert.Equal(tileset, result);
- }
- [Fact]
- public void GetTilesetForGid_WithMultipleTilesets_ReturnsCorrectTileset()
- {
- var collection = new TilemapTilesetCollection();
- var tileset1 = new TilemapTileset("Tileset1", CreateDummyTexture(), 32, 32, 100, 10);
- tileset1.FirstGlobalId = 1;
- var tileset2 = new TilemapTileset("Tileset2", CreateDummyTexture(), 32, 32, 50, 5);
- // After tileset1
- tileset2.FirstGlobalId = 101;
- var tileset3 = new TilemapTileset("Tileset3", CreateDummyTexture(), 32, 32, 25, 5);
- // After tileset2
- tileset3.FirstGlobalId = 151;
- collection.Add(tileset1);
- collection.Add(tileset2);
- collection.Add(tileset3);
- Assert.Equal(tileset1, collection.GetTilesetForGid(1)); // Fist tile of tileset1
- Assert.Equal(tileset1, collection.GetTilesetForGid(50)); // Mid tileset 1
- Assert.Equal(tileset1, collection.GetTilesetForGid(100)); // Last tile of tileset1
- Assert.Equal(tileset2, collection.GetTilesetForGid(101)); // First tile of tileset2
- Assert.Equal(tileset2, collection.GetTilesetForGid(125)); // Mid of tileset2
- Assert.Equal(tileset2, collection.GetTilesetForGid(150)); // Last tile of tileset2
- Assert.Equal(tileset3, collection.GetTilesetForGid(151)); // First tile of tileset3
- Assert.Equal(tileset3, collection.GetTilesetForGid(175)); // Last tile of tileset3
- }
- [Fact]
- public void GetTilesetForGid_WithGidBeforeFirstTileset_ReturnsNull()
- {
- var collection = new TilemapTilesetCollection();
- var tileset = new TilemapTileset("Tileset", CreateDummyTexture(), 32, 32, 100, 10);
- tileset.FirstGlobalId = 10;
- collection.Add(tileset);
- var result = collection.GetTilesetForGid(5);
- Assert.Null(result);
- }
- [Fact]
- public void GetTilesetForGid_WithEmptyCollection_ReturnsNull()
- {
- var collection = new TilemapTilesetCollection();
- var result = collection.GetTilesetForGid(1);
- Assert.Null(result);
- }
- [Fact]
- public void GetLocalId_WithValidGid_ReturnsCorrectLocalId()
- {
- var collection = new TilemapTilesetCollection();
- var tileset = new TilemapTileset("Tileset", CreateDummyTexture(), 32, 32, 100, 10);
- tileset.FirstGlobalId = 1;
- collection.Add(tileset);
- var localId = collection.GetLocalId(50, out var outTileset);
- // 50 - 1 = 49
- Assert.Equal(49, localId);
- Assert.Equal(tileset, outTileset);
- }
- [Fact]
- public void GetLocalId_WithFirstGid_ReturnsZero()
- {
- var collection = new TilemapTilesetCollection();
- var tileset = new TilemapTileset("Tileset", CreateDummyTexture(), 32, 32, 100, 10);
- tileset.FirstGlobalId = 100;
- collection.Add(tileset);
- var localId = collection.GetLocalId(100, out var outTileset);
- // 100 - 100 = 0
- Assert.Equal(0, localId);
- Assert.Equal(tileset, outTileset);
- }
- [Fact]
- public void GetLocalId_WithMultipleTilesets_ReturnsCorrectLocalId()
- {
- var collection = new TilemapTilesetCollection();
- var tileset1 = new TilemapTileset("Tileset1", CreateDummyTexture(), 32, 32, 100, 10);
- tileset1.FirstGlobalId = 1;
- var tileset2 = new TilemapTileset("Tileset2", CreateDummyTexture(), 32, 32, 50, 5);
- tileset2.FirstGlobalId = 101;
- collection.Add(tileset1);
- collection.Add(tileset2);
- var localId1 = collection.GetLocalId(50, out var outTileset1);
- var localId2 = collection.GetLocalId(125, out var outTileset2);
- // Assert
- Assert.Equal(49, localId1);
- Assert.Equal(tileset1, outTileset1);
- Assert.Equal(24, localId2);
- Assert.Equal(tileset2, outTileset2);
- }
- [Fact]
- public void GetLocalId_WithInvalidGid_ThrowsInvalidOperationException()
- {
- var collection = new TilemapTilesetCollection();
- var tileset = new TilemapTileset("Tileset", CreateDummyTexture(), 32, 32, 100, 10);
- tileset.FirstGlobalId = 10;
- collection.Add(tileset);
- Assert.Throws<InvalidOperationException>(() => collection.GetLocalId(5, out _));
- }
- [Fact]
- public void Enumeration_ReturnsAllTilesets()
- {
- var collection = new TilemapTilesetCollection();
- var tileset1 = new TilemapTileset("Tileset1", CreateDummyTexture(), 32, 32, 100, 10);
- var tileset2 = new TilemapTileset("Tileset2", CreateDummyTexture(), 32, 32, 50, 5);
- collection.Add(tileset1);
- collection.Add(tileset2);
- var list = collection.ToList();
- Assert.Equal(2, list.Count);
- Assert.Contains(tileset1, list);
- Assert.Contains(tileset2, list);
- }
- }
|