DotTiled/DotTiled.Tests/Serialization/Tmj/TmjMapReaderTests.cs

39 lines
1.4 KiB
C#
Raw Normal View History

2024-08-06 22:39:50 +02:00
namespace DotTiled.Tests;
public partial class TmjMapReaderTests
{
public static IEnumerable<object[]> Maps => TestData.MapTests;
2024-08-09 23:12:45 +02:00
[Theory]
[MemberData(nameof(Maps))]
public void TmxMapReaderReadMap_ValidTmjExternalTilesetsAndTemplates_ReturnsMapThatEqualsExpected(
string testDataFile,
Func<string, Map> expectedMap,
IReadOnlyCollection<CustomTypeDefinition> customTypeDefinitions)
2024-08-06 22:39:50 +02:00
{
// Arrange
testDataFile += ".tmj";
var fileDir = Path.GetDirectoryName(testDataFile);
2024-08-09 23:12:45 +02:00
var json = TestData.GetRawStringFor(testDataFile);
2024-08-10 19:18:33 +02:00
Template ResolveTemplate(string source)
2024-08-09 23:12:45 +02:00
{
var templateJson = TestData.GetRawStringFor($"{fileDir}/{source}");
2024-08-10 19:18:33 +02:00
using var templateReader = new TjTemplateReader(templateJson, ResolveTileset, ResolveTemplate, customTypeDefinitions);
return templateReader.ReadTemplate();
2024-08-09 23:12:45 +02:00
}
2024-08-10 19:18:33 +02:00
Tileset ResolveTileset(string source)
2024-08-06 22:39:50 +02:00
{
var tilesetJson = TestData.GetRawStringFor($"{fileDir}/{source}");
2024-08-10 19:18:33 +02:00
using var tilesetReader = new TsjTilesetReader(tilesetJson, ResolveTemplate, customTypeDefinitions);
return tilesetReader.ReadTileset();
2024-08-06 22:39:50 +02:00
}
2024-08-10 19:18:33 +02:00
using var mapReader = new TmjMapReader(json, ResolveTileset, ResolveTemplate, customTypeDefinitions);
2024-08-06 22:39:50 +02:00
// Act
2024-08-09 23:12:45 +02:00
var map = mapReader.ReadMap();
2024-08-06 22:39:50 +02:00
// Assert
2024-08-09 23:12:45 +02:00
Assert.NotNull(map);
DotTiledAssert.AssertMap(expectedMap("tmj"), map);
2024-08-06 22:39:50 +02:00
}
}