ImageTests.cs 1.9 KB

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