| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using NUnit.Framework;
- using QuestPDF.Drawing;
- using QuestPDF.Elements;
- using QuestPDF.Infrastructure;
- using QuestPDF.UnitTests.TestEngine;
- using SkiaSharp;
- namespace QuestPDF.UnitTests
- {
- [TestFixture]
- public class DynamicImageTests
- {
- [Test]
- public void Measure_TakesAvailableSpaceRegardlessOfSize()
- {
- TestPlan
- .For(x => new DynamicImage
- {
- TargetDpi = DocumentSettings.DefaultRasterDpi,
- CompressionQuality = ImageCompressionQuality.High,
- Source = payload => GenerateImage(payload.ImageSize)
- })
- .MeasureElement(new Size(300, 200))
- .CheckMeasureResult(SpacePlan.FullRender(300, 200));
- }
-
- [Test]
- public void Draw_HandlesNull()
- {
- TestPlan
- .For(x => new DynamicImage
- {
- TargetDpi = DocumentSettings.DefaultRasterDpi,
- CompressionQuality = ImageCompressionQuality.High,
- Source = size => null
- })
- .DrawElement(new Size(300, 200))
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_PreservesSize()
- {
- TestPlan
- .For(x => new DynamicImage
- {
- TargetDpi = DocumentSettings.DefaultRasterDpi,
- CompressionQuality = ImageCompressionQuality.High,
- Source = payload => GenerateImage(payload.ImageSize)
- })
- .DrawElement(new Size(300, 200))
- .ExpectCanvasDrawImage(Position.Zero, new Size(300, 200))
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_PassesCorrectSizeToSource()
- {
- ImageSize passedSize = default;
- TestPlan
- .For(x => new DynamicImage
- {
- TargetDpi = DocumentSettings.DefaultRasterDpi * 3,
- CompressionQuality = ImageCompressionQuality.High,
- Source = payload =>
- {
- passedSize = payload.ImageSize;
- return GenerateImage(payload.ImageSize);
- }
- })
- .DrawElement(new Size(400, 300))
- .ExpectCanvasDrawImage(Position.Zero, new Size(400, 300))
- .CheckDrawResult();
-
- Assert.That(passedSize.Width, Is.EqualTo(1200));
- Assert.That(passedSize.Height, Is.EqualTo(900));
- }
-
- byte[] GenerateImage(ImageSize size)
- {
- var image = GenerateImage(size.Width, size.Height);
- return image.Encode(SKEncodedImageFormat.Png, 100).ToArray();
- }
- static SKImage GenerateImage(int width, int height)
- {
- var imageInfo = new SKImageInfo(width, height);
- using var surface = SKSurface.Create(imageInfo);
- return surface.Snapshot();
- }
- }
- }
|