DocumentTests.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System;
  2. using System.Windows.Media;
  3. using PixiEditor.Models.Controllers;
  4. using PixiEditor.Models.DataHolders;
  5. using PixiEditor.Models.Enums;
  6. using PixiEditor.Models.Position;
  7. using Xunit;
  8. namespace PixiEditorTests.ModelsTests.DataHoldersTests
  9. {
  10. public class DocumentTests
  11. {
  12. [Theory]
  13. [InlineData(10, 10, 20, 20)]
  14. [InlineData(1, 2, 5, 8)]
  15. [InlineData(20, 20, 10, 10)] // TODO Anchor
  16. public void TestResizeCanvasResizesProperly(int oldWidth, int oldHeight, int newWidth, int newHeight)
  17. {
  18. Document document = new Document(oldWidth, oldHeight);
  19. document.ResizeCanvas(newWidth, newHeight, AnchorPoint.Top | AnchorPoint.Left);
  20. Assert.Equal(newHeight, document.Height);
  21. Assert.Equal(newWidth, document.Width);
  22. }
  23. [Theory]
  24. [InlineData(10, 10, 20, 20)]
  25. [InlineData(5, 8, 10, 16)]
  26. public void TestResizeWorks(int oldWidth, int oldHeight, int newWidth, int newHeight)
  27. {
  28. Document document = new Document(oldWidth, oldHeight);
  29. document.Resize(newWidth, newHeight);
  30. Assert.Equal(newHeight, document.Height);
  31. Assert.Equal(newWidth, document.Width);
  32. }
  33. [Theory]
  34. [InlineData(10, 10, 0, 0)]
  35. [InlineData(50, 50, 10, 49)]
  36. public void TestThatClipCanvasWorksForSingleLayer(int initialWidth, int initialHeight, int additionalPixelX, int additionalPixelY)
  37. {
  38. Document document = new Document(initialWidth, initialHeight);
  39. BitmapManager manager = new BitmapManager
  40. {
  41. ActiveDocument = document
  42. };
  43. manager.ActiveDocument.AddNewLayer("test");
  44. manager.ActiveLayer.SetPixel(
  45. new Coordinates(
  46. (int)Math.Ceiling(initialWidth / 2f),
  47. (int)Math.Ceiling(initialHeight / 2f)), Colors.Black);
  48. manager.ActiveLayer.SetPixel(new Coordinates(additionalPixelX, additionalPixelY), Colors.Black);
  49. document.ClipCanvas();
  50. Assert.Equal(manager.ActiveLayer.Width, document.Width);
  51. Assert.Equal(manager.ActiveLayer.Height, document.Height);
  52. }
  53. [Theory]
  54. [InlineData(10, 10, 0, 0)]
  55. [InlineData(50, 50, 15, 23)]
  56. [InlineData(3, 3, 1, 1)]
  57. [InlineData(1, 1, 0, 0)]
  58. public void TestThatClipCanvasWorksForMultipleLayers(int initialWidth, int initialHeight, int secondLayerPixelX, int secondLayerPixelY)
  59. {
  60. Document document = new Document(initialWidth, initialHeight);
  61. BitmapManager manager = new BitmapManager
  62. {
  63. ActiveDocument = document
  64. };
  65. manager.ActiveDocument.AddNewLayer("test");
  66. manager.ActiveLayer.SetPixel(
  67. new Coordinates(
  68. (int)Math.Ceiling(initialWidth / 2f),
  69. (int)Math.Ceiling(initialHeight / 2f)), Colors.Black); // Set pixel in center
  70. manager.ActiveDocument.AddNewLayer("test2");
  71. manager.ActiveLayer.SetPixel(new Coordinates(secondLayerPixelX, secondLayerPixelY), Colors.Black);
  72. document.ClipCanvas();
  73. int totalWidth = Math.Abs(manager.ActiveDocument.Layers[1].OffsetX +
  74. manager.ActiveDocument.Layers[1].Width - (manager.ActiveDocument.Layers[0].OffsetX +
  75. manager.ActiveDocument.Layers[0].Width)) + 1;
  76. int totalHeight = Math.Abs(manager.ActiveDocument.Layers[1].OffsetY +
  77. manager.ActiveDocument.Layers[1].Height - (manager.ActiveDocument.Layers[0].OffsetY +
  78. manager.ActiveDocument.Layers[0].Height)) + 1;
  79. Assert.Equal(totalWidth, document.Width);
  80. Assert.Equal(totalHeight, document.Height);
  81. }
  82. [Theory]
  83. [InlineData(10, 10)]
  84. [InlineData(11, 11)]
  85. [InlineData(25, 17)]
  86. public void TestThatCenterContentCentersContentForSingleLayer(int docWidth, int docHeight)
  87. {
  88. Document doc = new Document(docWidth, docHeight);
  89. BitmapManager manager = new BitmapManager
  90. {
  91. ActiveDocument = doc
  92. };
  93. manager.ActiveDocument.AddNewLayer("test");
  94. manager.ActiveLayer.SetPixel(new Coordinates(0, 0), Colors.Green);
  95. doc.CenterContent();
  96. Assert.Equal(Math.Floor(docWidth / 2f), manager.ActiveLayer.OffsetX);
  97. Assert.Equal(Math.Floor(docHeight / 2f), manager.ActiveLayer.OffsetY);
  98. }
  99. [Theory]
  100. [InlineData(10, 10)]
  101. [InlineData(11, 11)]
  102. [InlineData(25, 17)]
  103. public void TestThatCenterContentCentersContentForMultipleLayers(int docWidth, int docHeight)
  104. {
  105. Document doc = new Document(docWidth, docHeight);
  106. BitmapManager manager = new BitmapManager
  107. {
  108. ActiveDocument = doc
  109. };
  110. manager.ActiveDocument.AddNewLayer("test");
  111. manager.ActiveLayer.SetPixel(new Coordinates(0, 0), Colors.Green);
  112. manager.ActiveDocument.AddNewLayer("test2");
  113. manager.ActiveLayer.SetPixel(new Coordinates(1, 1), Colors.Green);
  114. doc.CenterContent();
  115. int midWidth = (int)Math.Floor(docWidth / 2f);
  116. int midHeight = (int)Math.Floor(docHeight / 2f);
  117. Assert.Equal(midWidth - 1, manager.ActiveDocument.Layers[0].OffsetX);
  118. Assert.Equal(midHeight - 1, manager.ActiveDocument.Layers[0].OffsetY);
  119. Assert.Equal(midWidth, manager.ActiveDocument.Layers[1].OffsetX);
  120. Assert.Equal(midHeight, manager.ActiveDocument.Layers[1].OffsetY);
  121. }
  122. }
  123. }