AspectRatioTests.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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 AspectRatioTests
  10. {
  11. [Test]
  12. public void Measure_ShouldHandleNullChild() => new AspectRatio().MeasureWithoutChild();
  13. [Test]
  14. public void Draw_ShouldHandleNullChild() => new AspectRatio().DrawWithoutChild();
  15. [Test]
  16. public void Measure_FitWidth_EnoughSpace_FullRender()
  17. {
  18. TestPlan
  19. .For(x => new AspectRatio
  20. {
  21. Child = x.CreateChild(),
  22. Option = AspectRatioOption.FitArea,
  23. Ratio = 2f
  24. })
  25. .MeasureElement(new Size(400, 201))
  26. .ExpectChildMeasure(new Size(400, 200), new FullRender(100, 50))
  27. .CheckMeasureResult(new FullRender(400, 200));
  28. }
  29. [Test]
  30. public void Measure_FitWidth_EnoughSpace_PartialRender()
  31. {
  32. TestPlan
  33. .For(x => new AspectRatio
  34. {
  35. Child = x.CreateChild(),
  36. Option = AspectRatioOption.FitArea,
  37. Ratio = 2f
  38. })
  39. .MeasureElement(new Size(400, 201))
  40. .ExpectChildMeasure(new Size(400, 200), new PartialRender(100, 50))
  41. .CheckMeasureResult(new PartialRender(400, 200));
  42. }
  43. [Test]
  44. public void Measure_FitWidth_EnoughSpace_Wrap()
  45. {
  46. TestPlan
  47. .For(x => new AspectRatio
  48. {
  49. Child = x.CreateChild(),
  50. Option = AspectRatioOption.FitArea,
  51. Ratio = 2f
  52. })
  53. .MeasureElement(new Size(400, 201))
  54. .ExpectChildMeasure(new Size(400, 200), new Wrap())
  55. .CheckMeasureResult(new Wrap());
  56. }
  57. [Test]
  58. public void Measure_FitWidth_EnoughSpace()
  59. {
  60. TestPlan
  61. .For(x => new AspectRatio
  62. {
  63. Child = x.CreateChild(),
  64. Option = AspectRatioOption.FitWidth,
  65. Ratio = 2f
  66. })
  67. .MeasureElement(new Size(400, 201))
  68. .ExpectChildMeasure(new Size(400, 200), new FullRender(100, 50))
  69. .CheckMeasureResult(new FullRender(400, 200));
  70. }
  71. [Test]
  72. public void Measure_FitWidth_NotEnoughSpace()
  73. {
  74. TestPlan
  75. .For(x => new AspectRatio
  76. {
  77. Child = x.CreateChild(),
  78. Option = AspectRatioOption.FitWidth,
  79. Ratio = 2f
  80. })
  81. .MeasureElement(new Size(400, 199))
  82. .CheckMeasureResult(new Wrap());
  83. }
  84. [Test]
  85. public void Measure_FitHeight_EnoughSpace()
  86. {
  87. TestPlan
  88. .For(x => new AspectRatio
  89. {
  90. Child = x.CreateChild(),
  91. Option = AspectRatioOption.FitHeight,
  92. Ratio = 2f
  93. })
  94. .MeasureElement(new Size(401, 200))
  95. .ExpectChildMeasure(new Size(400, 200), new FullRender(100, 50))
  96. .CheckMeasureResult(new FullRender(400, 200));
  97. }
  98. [Test]
  99. public void Measure_FitHeight_NotEnoughSpace()
  100. {
  101. TestPlan
  102. .For(x => new AspectRatio
  103. {
  104. Child = x.CreateChild(),
  105. Option = AspectRatioOption.FitHeight,
  106. Ratio = 2f
  107. })
  108. .MeasureElement(new Size(399, 200))
  109. .CheckMeasureResult(new Wrap());
  110. }
  111. [Test]
  112. public void Measure_FitArea_ToWidth()
  113. {
  114. TestPlan
  115. .For(x => new AspectRatio
  116. {
  117. Child = x.CreateChild(),
  118. Option = AspectRatioOption.FitArea,
  119. Ratio = 2f
  120. })
  121. .MeasureElement(new Size(400, 300))
  122. .ExpectChildMeasure(new Size(400, 200), new FullRender(100, 50))
  123. .CheckMeasureResult(new FullRender(400, 200));
  124. }
  125. [Test]
  126. public void Measure_FitArea_ToHeight()
  127. {
  128. TestPlan
  129. .For(x => new AspectRatio
  130. {
  131. Child = x.CreateChild(),
  132. Option = AspectRatioOption.FitArea,
  133. Ratio = 2f
  134. })
  135. .MeasureElement(new Size(500, 200))
  136. .ExpectChildMeasure(new Size(400, 200), new FullRender(100, 50))
  137. .CheckMeasureResult(new FullRender(400, 200));
  138. }
  139. [Test]
  140. public void DrawChild_PerWidth()
  141. {
  142. TestPlan
  143. .For(x => new AspectRatio
  144. {
  145. Child = x.CreateChild(),
  146. Option = AspectRatioOption.FitArea,
  147. Ratio = 2f
  148. })
  149. .DrawElement(new Size(500, 200))
  150. .ExpectChildDraw(new Size(400, 200))
  151. .CheckDrawResult();
  152. }
  153. [Test]
  154. public void DrawChild_PerHeight()
  155. {
  156. TestPlan
  157. .For(x => new AspectRatio
  158. {
  159. Child = x.CreateChild(),
  160. Option = AspectRatioOption.FitArea,
  161. Ratio = 2f
  162. })
  163. .DrawElement(new Size(400, 300))
  164. .ExpectChildDraw(new Size(400, 200))
  165. .CheckDrawResult();
  166. }
  167. }
  168. }