ClipboardControllerTests.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Media;
  7. using System.Windows.Media.Imaging;
  8. using PixiEditor.Models.Controllers;
  9. using PixiEditor.Models.Layers;
  10. using PixiEditor.Models.Position;
  11. using Xunit;
  12. namespace PixiEditorTests.ModelsTests.ControllersTests
  13. {
  14. public class ClipboardControllerTests
  15. {
  16. private Color testColor = Colors.Coral;
  17. [StaFact]
  18. public void TestThatClipboardControllerIgnoresNonImageDataInClipboard()
  19. {
  20. Clipboard.Clear();
  21. Clipboard.SetText("Text data");
  22. var img = ClipboardController.GetImageFromClipboard();
  23. Assert.Null(img);
  24. }
  25. [StaFact]
  26. public void TestThatIsImageInClipboardWorksForDib()
  27. {
  28. Clipboard.Clear();
  29. Clipboard.SetImage(BitmapFactory.New(10, 10));
  30. Assert.True(ClipboardController.IsImageInClipboard());
  31. }
  32. [StaFact]
  33. public void TestThatClipboardControllerSavesImageToClipboard()
  34. {
  35. Layer testLayer = new Layer("test layer", 10, 10);
  36. ClipboardController.CopyToClipboard(new []{testLayer}, CoordinatesCalculator.RectangleToCoordinates(0,0, 9,9), 10, 10);
  37. Assert.True(ClipboardController.IsImageInClipboard());
  38. }
  39. [StaFact]
  40. public void TestThatCopyToClipboardWithSelectionSavesCorrectBitmap()
  41. {
  42. Clipboard.Clear();
  43. Layer testLayer = new Layer("test layer", 10, 10);
  44. Layer testLayer2 = new Layer("test layer", 10, 10);
  45. testLayer.SetPixel(new Coordinates(4,4), testColor);
  46. testLayer2.SetPixel(new Coordinates(5,5), testColor);
  47. ClipboardController.CopyToClipboard(new []{testLayer, testLayer2},
  48. new []{new Coordinates(4,4), new Coordinates(5,5)}, 10, 10);
  49. var img = Clipboard.GetImage(); // Using default Clipboard get image to avoid false positives from faulty ClipboardController GetImage
  50. Assert.True(ClipboardController.IsImageInClipboard());
  51. Assert.NotNull(img);
  52. Assert.Equal(2, img.PixelWidth);
  53. Assert.Equal(2, img.PixelHeight);
  54. var bmp = new WriteableBitmap(img);
  55. Assert.Equal(testColor, bmp.GetPixel(0, 0));
  56. Assert.Equal(testColor, bmp.GetPixel(1, 1));
  57. }
  58. [StaFact]
  59. public void TestThatClipboardControllerGetsCorrectImageInDibFormatFromClipboard()
  60. {
  61. Clipboard.Clear();
  62. var bmp = BitmapFactory.New(10, 10);
  63. bmp.SetPixel(4, 4, testColor);
  64. Clipboard.SetImage(bmp);
  65. var img = ClipboardController.GetImageFromClipboard();
  66. Assert.NotNull(img);
  67. Assert.Equal(10, img.PixelWidth);
  68. Assert.Equal(10, img.PixelHeight);
  69. Assert.Equal(testColor, bmp.GetPixel(4, 4));
  70. }
  71. [StaFact]
  72. public void TestThatClipboardControllerGetsCorrectImageInPngFormatFromClipboard()
  73. {
  74. Clipboard.Clear();
  75. var bmp = BitmapFactory.New(10, 10);
  76. bmp.SetPixel(4,4, testColor);
  77. using (var pngStream = new MemoryStream())
  78. {
  79. DataObject data = new DataObject();
  80. PngBitmapEncoder encoder = new PngBitmapEncoder();
  81. encoder.Frames.Add(BitmapFrame.Create(bmp));
  82. encoder.Save(pngStream);
  83. data.SetData("PNG", pngStream, false); //PNG, supports transparency
  84. Clipboard.SetDataObject(data, true);
  85. }
  86. var img = ClipboardController.GetImageFromClipboard();
  87. Assert.NotNull(img);
  88. Assert.Equal(10, img.PixelWidth);
  89. Assert.Equal(10, img.PixelHeight);
  90. Assert.Equal(testColor, bmp.GetPixel(4,4));
  91. }
  92. [StaFact]
  93. public void TestThatClipboardControllerGetsCorrectImageInBitmapFormatFromClipboard()
  94. {
  95. Clipboard.Clear();
  96. var bmp = BitmapFactory.New(10, 10);
  97. bmp.SetPixel(4, 4, testColor);
  98. DataObject data = new DataObject();
  99. data.SetData(DataFormats.Bitmap, bmp, false); //PNG, supports transparency
  100. Clipboard.SetDataObject(data, true);
  101. var img = ClipboardController.GetImageFromClipboard();
  102. Assert.NotNull(img);
  103. Assert.Equal(10, img.PixelWidth);
  104. Assert.Equal(10, img.PixelHeight);
  105. Assert.Equal(testColor, bmp.GetPixel(4, 4));
  106. }
  107. }
  108. }