ShowOnceTest.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using NUnit.Framework;
  2. using QuestPDF.Drawing.SpacePlan;
  3. using QuestPDF.Elements;
  4. using QuestPDF.Infrastructure;
  5. using QuestPDF.UnitTests.TestEngine;
  6. namespace QuestPDF.UnitTests
  7. {
  8. [TestFixture]
  9. public class ShowOnceTest
  10. {
  11. [Test]
  12. public void Draw()
  13. {
  14. TestPlan
  15. .For(x => new ShowOnce()
  16. {
  17. Child = x.CreateChild()
  18. })
  19. // Measure the element and return result
  20. .MeasureElement(new Size(300, 200))
  21. .ExpectChildMeasure("child", new Size(300, 200), new PartialRender(new Size(200, 200)))
  22. .CheckMeasureResult(new PartialRender(new Size(200, 200)))
  23. // Draw element partially
  24. .DrawElement(new Size(200, 200))
  25. .ExpectChildMeasure(new Size(200, 200), new PartialRender(new Size(200, 200)))
  26. .ExpectChildDraw(new Size(200, 200))
  27. .CheckDrawResult()
  28. // Element was not fully drawn
  29. // It should be measured again for rendering on next page
  30. .MeasureElement(new Size(800, 200))
  31. .ExpectChildMeasure(new Size(800, 200), new FullRender(new Size(400, 200)))
  32. .CheckMeasureResult(new FullRender(new Size(400, 200)))
  33. // Draw element on next page
  34. // Element was fully drawn at this point
  35. .DrawElement(new Size(400, 200))
  36. .ExpectChildMeasure(new Size(400, 200), new FullRender(new Size(400, 200)))
  37. .ExpectChildDraw(new Size(400, 200))
  38. .CheckDrawResult()
  39. // In the next attempt of measuring element, it should behave like empty parent.
  40. .MeasureElement(new Size(600, 200))
  41. .CheckMeasureResult(new FullRender(Size.Zero))
  42. // In the next attempt of measuring element, it should not draw its child
  43. .DrawElement(new Size(600, 200))
  44. .CheckDrawResult();
  45. }
  46. }
  47. }