using System.Numerics; using System.Runtime.CompilerServices; using DotTiled.Serialization; using NSubstitute; namespace DotTiled.Tests; public class LoaderTests { [Fact] public void LoadMap_Always_ReadsFromResourceReader() { // Arrange var resourceReader = Substitute.For(); resourceReader.Read("map.tmx").Returns( """ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 """); var resourceCache = Substitute.For(); var customTypeDefinitions = Enumerable.Empty(); var loader = new Loader(resourceReader, resourceCache, customTypeDefinitions); // Act loader.LoadMap("map.tmx"); // Assert resourceReader.Received(1).Read("map.tmx"); } [Fact] public void LoadMap_MapReferencesExternalTileset_ReadsTilesetFromResourceReaderAndAttemptsToRetrieveFromCache() { // Arrange var resourceReader = Substitute.For(); resourceReader.Read("map.tmx").Returns( """ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 """); resourceReader.Read("tileset.tsx").Returns( """ """); var resourceCache = Substitute.For(); resourceCache.GetTileset(Arg.Any()).Returns(Optional.Empty); resourceCache.GetTemplate(Arg.Any()).Returns(Optional