TexturePackerJsonImporterProcessorTests.cs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Microsoft.Xna.Framework.Content.Pipeline;
  2. using MonoGame.Extended.Content.Pipeline.TextureAtlases;
  3. using NSubstitute;
  4. namespace MonoGame.Extended.Content.Pipeline.Tests
  5. {
  6. // TODO: Testing for ew content builder project type
  7. #if !MONOGAME_385_OR_NEWER
  8. public class TexturePackerJsonImporterProcessorTests
  9. {
  10. [Fact]
  11. public void TexturePackerJsonImporter_Import_Test()
  12. {
  13. var filePath = PathExtensions.GetApplicationFullPath(@"TestData/test-tileset.json");
  14. var importer = new TexturePackerJsonImporter();
  15. var importResult = importer.Import(filePath, Substitute.For<ContentImporterContext>());
  16. Assert.NotNull(importResult);
  17. // Check meta.image contains image name
  18. Assert.Equal("test-tileset.png", importResult.Data.Meta.Image);
  19. // Check regions count and textures
  20. Assert.Equal(9, importResult.Data.Regions.Count);
  21. Assert.Null(importResult.Data.Textures); // only used by new MonoGame.Extended JSON format
  22. // Check first region
  23. var firstRegion = importResult.Data.Regions[0];
  24. Assert.Equal("1.png", firstRegion.FileName);
  25. Assert.Equal(2, firstRegion.Frame.X);
  26. Assert.Equal(2, firstRegion.Frame.Y);
  27. Assert.Equal(32, firstRegion.Frame.Width);
  28. Assert.Equal(32, firstRegion.Frame.Height);
  29. Assert.Equal(0.5, firstRegion.PivotPoint.X);
  30. Assert.Equal(0.5, firstRegion.PivotPoint.Y);
  31. Assert.False(firstRegion.Rotated);
  32. Assert.Equal(32, firstRegion.SourceSize.Width);
  33. Assert.Equal(32, firstRegion.SourceSize.Height);
  34. }
  35. [Fact]
  36. public void TexturePackerJsonImporter_Processor_Test()
  37. {
  38. var filePath = PathExtensions.GetApplicationFullPath(@"TestData/test-tileset.json");
  39. var importer = new TexturePackerJsonImporter();
  40. var input = importer.Import(filePath, Substitute.For<ContentImporterContext>());
  41. var processor = new TexturePackerProcessor();
  42. var output = processor.Process(input, Substitute.For<ContentProcessorContext>());
  43. Assert.NotNull(output);
  44. }
  45. [Fact]
  46. public void TexturePackerJsonImporter_Import_NewFormat_Test()
  47. {
  48. var filePath = PathExtensions.GetApplicationFullPath(@"TestData/test-atlas.json");
  49. var importer = new TexturePackerJsonImporter();
  50. var importResult = importer.Import(filePath, Substitute.For<ContentImporterContext>());
  51. // Regions must be null (only used by old generic json format)
  52. Assert.Null(importResult.Data.Regions);
  53. // Textures contains 1 texture
  54. Assert.NotNull(importResult.Data.Textures);
  55. Assert.Single(importResult.Data.Textures);
  56. var texture = importResult.Data.Textures[0];
  57. Assert.Equal("test-atlas-texture.png", texture.FileName);
  58. // The first texture contains frames
  59. Assert.NotNull(texture.Frames);
  60. Assert.Contains("0001.png", texture.Frames.Keys);
  61. // Check properties of the first frame ("0001.png")
  62. var frame = texture.Frames["0001.png"];
  63. Assert.Equal(164, frame.Frame.X);
  64. Assert.Equal(1, frame.Frame.Y);
  65. Assert.Equal(158, frame.Frame.Width);
  66. Assert.Equal(316, frame.Frame.Height);
  67. Assert.NotNull(frame.Size);
  68. Assert.Equal(187, frame.Size.Width);
  69. Assert.Equal(324, frame.Size.Height);
  70. Assert.NotNull(frame.Offset);
  71. Assert.Equal(15, frame.Offset.X);
  72. Assert.Equal(3, frame.Offset.Y);
  73. Assert.Equal(0, frame.Rotated);
  74. Assert.NotNull(frame.Pivot);
  75. Assert.Equal(0.5, frame.Pivot.X);
  76. Assert.Equal(1.0, frame.Pivot.Y);
  77. }
  78. }
  79. #endif
  80. }