2024-08-06 22:39:50 +02:00
|
|
|
namespace DotTiled.Tests;
|
|
|
|
|
|
|
|
public partial class TmjMapReaderTests
|
|
|
|
{
|
2024-08-09 23:12:45 +02:00
|
|
|
public static IEnumerable<object[]> DeserializeMap_ValidTmjExternalTilesetsAndTemplates_ReturnsMapThatEqualsExpected_Data =>
|
|
|
|
[
|
2024-08-12 21:24:09 +02:00
|
|
|
["Serialization.TestData.Map.default_map.default-map.tmj", TestData.DefaultMap()]
|
2024-08-09 23:12:45 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
[MemberData(nameof(DeserializeMap_ValidTmjExternalTilesetsAndTemplates_ReturnsMapThatEqualsExpected_Data))]
|
|
|
|
public void TmxMapReaderReadMap_ValidTmjExternalTilesetsAndTemplates_ReturnsMapThatEqualsExpected(string testDataFile, Map expectedMap)
|
2024-08-06 22:39:50 +02:00
|
|
|
{
|
|
|
|
// Arrange
|
2024-08-10 19:18:33 +02:00
|
|
|
CustomTypeDefinition[] customTypeDefinitions = [
|
|
|
|
new CustomClassDefinition
|
|
|
|
{
|
|
|
|
Name = "TestClass",
|
|
|
|
ID = 1,
|
|
|
|
UseAs = CustomClassUseAs.Property,
|
|
|
|
Members = [
|
|
|
|
new StringProperty
|
|
|
|
{
|
|
|
|
Name = "Name",
|
|
|
|
Value = ""
|
|
|
|
},
|
|
|
|
new FloatProperty
|
|
|
|
{
|
|
|
|
Name = "Amount",
|
|
|
|
Value = 0f
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
new CustomClassDefinition
|
|
|
|
{
|
|
|
|
Name = "Test",
|
|
|
|
ID = 2,
|
|
|
|
UseAs = CustomClassUseAs.All,
|
|
|
|
Members = [
|
|
|
|
new ClassProperty
|
|
|
|
{
|
|
|
|
Name = "Yep",
|
|
|
|
PropertyType = "TestClass",
|
|
|
|
Properties = []
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
];
|
|
|
|
|
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($"Serialization.TestData.Template.{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
|
|
|
{
|
2024-08-10 19:18:33 +02:00
|
|
|
var tilesetJson = TestData.GetRawStringFor($"Serialization.TestData.Tileset.{source}");
|
|
|
|
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, map);
|
2024-08-06 22:39:50 +02:00
|
|
|
}
|
|
|
|
}
|