DecorationTests.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using NUnit.Framework;
  2. using QuestPDF.Drawing;
  3. using QuestPDF.Elements;
  4. using QuestPDF.Infrastructure;
  5. using QuestPDF.UnitTests.TestEngine;
  6. namespace QuestPDF.UnitTests
  7. {
  8. [TestFixture]
  9. public class DecorationTests
  10. {
  11. private Decoration CreateDecoration(TestPlan testPlan)
  12. {
  13. return new Decoration
  14. {
  15. Before = testPlan.CreateChild("before"),
  16. Content = testPlan.CreateChild("content"),
  17. After = testPlan.CreateChild("after"),
  18. };
  19. }
  20. #region Measure
  21. [Test]
  22. public void Measure_ReturnsWrap_WhenBeforeReturnsWrap()
  23. {
  24. TestPlan
  25. .For(CreateDecoration)
  26. .MeasureElement(new Size(400, 300))
  27. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.Wrap("Mock"))
  28. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(100, 50))
  29. .ExpectChildMeasure("content", new Size(400, 250), SpacePlan.FullRender(100, 100))
  30. .CheckMeasureResult(SpacePlan.Wrap("Decoration slot (before or after) does not fit fully on the page."));
  31. }
  32. [Test]
  33. public void Measure_ReturnsWrap_WhenContentReturnsWrap()
  34. {
  35. TestPlan
  36. .For(CreateDecoration)
  37. .MeasureElement(new Size(400, 300))
  38. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
  39. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(100, 50))
  40. .ExpectChildMeasure("content", new Size(400, 200), SpacePlan.Wrap("Mock"))
  41. .CheckMeasureResult(SpacePlan.Wrap("The primary content does not fit on the page."));
  42. }
  43. [Test]
  44. public void Measure_ReturnsWrap_WhenAfterReturnsWrap()
  45. {
  46. TestPlan
  47. .For(CreateDecoration)
  48. .MeasureElement(new Size(400, 300))
  49. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
  50. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.Wrap("Mock"))
  51. .ExpectChildMeasure("content", new Size(400, 250), SpacePlan.FullRender(100, 100))
  52. .CheckMeasureResult(SpacePlan.Wrap("Decoration slot (before or after) does not fit fully on the page."));
  53. }
  54. [Test]
  55. public void Measure_ReturnsWrap_WhenBeforeReturnsPartialRender()
  56. {
  57. TestPlan
  58. .For(CreateDecoration)
  59. .MeasureElement(new Size(400, 300))
  60. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.PartialRender(100, 50))
  61. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(100, 50))
  62. .ExpectChildMeasure("content", new Size(400, 250), SpacePlan.FullRender(100, 100))
  63. .CheckMeasureResult(SpacePlan.Wrap("Decoration slot (before or after) does not fit fully on the page."));
  64. }
  65. [Test]
  66. public void Measure_ReturnsWrap_WhenAfterReturnsPartialRender()
  67. {
  68. TestPlan
  69. .For(CreateDecoration)
  70. .MeasureElement(new Size(400, 300))
  71. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
  72. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.PartialRender(100, 50))
  73. .ExpectChildMeasure("content", new Size(400, 250), SpacePlan.FullRender(100, 100))
  74. .CheckMeasureResult(SpacePlan.Wrap("Decoration slot (before or after) does not fit fully on the page."));
  75. }
  76. [Test]
  77. public void Measure_ReturnsWrap_WhenContentReturnsPartialRender()
  78. {
  79. TestPlan
  80. .For(CreateDecoration)
  81. .MeasureElement(new Size(400, 300))
  82. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
  83. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(100, 50))
  84. .ExpectChildMeasure("content", new Size(400, 200), SpacePlan.PartialRender(150, 100))
  85. .CheckMeasureResult(SpacePlan.PartialRender(150, 200));
  86. }
  87. [Test]
  88. public void Measure_ReturnsWrap_WhenContentReturnsFullRender()
  89. {
  90. TestPlan
  91. .For(CreateDecoration)
  92. .MeasureElement(new Size(400, 300))
  93. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
  94. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(100, 50))
  95. .ExpectChildMeasure("content", new Size(400, 200), SpacePlan.FullRender(150, 100))
  96. .CheckMeasureResult(SpacePlan.FullRender(150, 200));
  97. }
  98. #endregion
  99. #region Draw
  100. [Test]
  101. public void Draw_Append()
  102. {
  103. TestPlan
  104. .For(CreateDecoration)
  105. .DrawElement(new Size(400, 300))
  106. .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(200, 40))
  107. .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.FullRender(200, 60))
  108. .ExpectChildMeasure("content", new Size(400, 200), SpacePlan.FullRender(300, 100))
  109. .ExpectCanvasTranslate(0, 0)
  110. .ExpectChildDraw("before", new Size(300, 40))
  111. .ExpectCanvasTranslate(0, 0)
  112. .ExpectCanvasTranslate(0, 40)
  113. .ExpectChildDraw("content", new Size(300, 100))
  114. .ExpectCanvasTranslate(0, -40)
  115. .ExpectCanvasTranslate(0, 140)
  116. .ExpectChildDraw("after", new Size(300, 60))
  117. .ExpectCanvasTranslate(0, -140)
  118. .CheckDrawResult();
  119. }
  120. #endregion
  121. }
  122. }