ImageTests.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using NUnit.Framework;
  2. using QuestPDF.Drawing.SpacePlan;
  3. using QuestPDF.Elements;
  4. using QuestPDF.Fluent;
  5. using QuestPDF.Infrastructure;
  6. using QuestPDF.UnitTests.TestEngine;
  7. using SkiaSharp;
  8. namespace QuestPDF.UnitTests
  9. {
  10. [TestFixture]
  11. public class ImageTests
  12. {
  13. [Test]
  14. public void Measure_ShouldHandleNullChild() => new AspectRatio().MeasureWithoutChild();
  15. [Test]
  16. public void Draw_ShouldHandleNullChild() => new AspectRatio().DrawWithoutChild();
  17. [Test]
  18. public void Measure_TakesAvailableSpaceRegardlessOfSize()
  19. {
  20. TestPlan
  21. .For(x => new Image
  22. {
  23. InternalImage = GenerateImage(400, 300)
  24. })
  25. .MeasureElement(new Size(300, 200))
  26. .CheckMeasureResult(new FullRender(300, 200));
  27. }
  28. [Test]
  29. public void Draw_TakesAvailableSpaceRegardlessOfSize()
  30. {
  31. TestPlan
  32. .For(x => new Image
  33. {
  34. InternalImage = GenerateImage(400, 300)
  35. })
  36. .DrawElement(new Size(300, 200))
  37. .ExpectCanvasDrawImage(new Position(0, 0), new Size(300, 200))
  38. .CheckDrawResult();
  39. }
  40. [Test]
  41. public void Fluent_RecognizesImageProportions()
  42. {
  43. var image = GenerateImage(600, 200).Encode(SKEncodedImageFormat.Png, 100).ToArray();
  44. TestPlan
  45. .For(x =>
  46. {
  47. var container = new Container();
  48. container.Image(image);
  49. return container;
  50. })
  51. .MeasureElement(new Size(300, 200))
  52. .CheckMeasureResult(new FullRender(300, 100));;
  53. }
  54. SKImage GenerateImage(int width, int height)
  55. {
  56. var imageInfo = new SKImageInfo(width, height);
  57. using var surface = SKSurface.Create(imageInfo);
  58. return surface.Snapshot();
  59. }
  60. }
  61. }