ImageTests.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using NUnit.Framework;
  2. using QuestPDF.Drawing;
  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_TakesAvailableSpaceRegardlessOfSize()
  15. {
  16. TestPlan
  17. .For(x => new Image
  18. {
  19. InternalImage = GenerateImage(400, 300)
  20. })
  21. .MeasureElement(new Size(300, 200))
  22. .CheckMeasureResult(SpacePlan.FullRender(300, 200));
  23. }
  24. [Test]
  25. public void Draw_TakesAvailableSpaceRegardlessOfSize()
  26. {
  27. TestPlan
  28. .For(x => new Image
  29. {
  30. InternalImage = GenerateImage(400, 300)
  31. })
  32. .DrawElement(new Size(300, 200))
  33. .ExpectCanvasDrawImage(new Position(0, 0), new Size(300, 200))
  34. .CheckDrawResult();
  35. }
  36. [Test]
  37. public void Fluent_RecognizesImageProportions()
  38. {
  39. var image = GenerateImage(600, 200).Encode(SKEncodedImageFormat.Png, 100).ToArray();
  40. TestPlan
  41. .For(x =>
  42. {
  43. var container = new Container();
  44. container.Image(image);
  45. return container;
  46. })
  47. .MeasureElement(new Size(300, 200))
  48. .CheckMeasureResult(SpacePlan.FullRender(300, 100));;
  49. }
  50. SKImage GenerateImage(int width, int height)
  51. {
  52. var imageInfo = new SKImageInfo(width, height);
  53. using var surface = SKSurface.Create(imageInfo);
  54. return surface.Snapshot();
  55. }
  56. }
  57. }