DocumentTests.cs 5.6 KB

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