ColumnTests.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. namespace QuestPDF.LayoutTests;
  2. public class ColumnTests
  3. {
  4. [Test]
  5. public void Typical()
  6. {
  7. LayoutTest
  8. .HavingSpaceOfSize(100, 140)
  9. .WithContent(content =>
  10. {
  11. content.Shrink().Column(column =>
  12. {
  13. column.Spacing(10);
  14. column.Item().Mock("a").Size(50, 30);
  15. column.Item().Mock("b").Size(40, 20);
  16. column.Item().Mock("c").Size(70, 40);
  17. column.Item().Mock("d").Size(60, 60);
  18. });
  19. })
  20. .ExpectedDrawResult(document =>
  21. {
  22. document
  23. .Page()
  24. .RequiredAreaSize(70, 140)
  25. .Content(page =>
  26. {
  27. page.Mock("a").Position(0, 0).Size(70, 30);
  28. page.Mock("b").Position(0, 40).Size(70, 20);
  29. page.Mock("c").Position(0, 70).Size(70, 40);
  30. page.Mock("d").Position(0, 120).Size(70, 20);
  31. });
  32. document
  33. .Page()
  34. .RequiredAreaSize(60, 40)
  35. .Content(page =>
  36. {
  37. page.Mock("d").Position(0, 0).Size(60, 40);
  38. });
  39. });
  40. }
  41. [Test]
  42. public void SingleItem()
  43. {
  44. LayoutTest
  45. .HavingSpaceOfSize(100, 100)
  46. .WithContent(content =>
  47. {
  48. content.Shrink().Column(column =>
  49. {
  50. column.Spacing(10);
  51. column.Item().Mock("a").Size(50, 30);
  52. });
  53. })
  54. .ExpectedDrawResult(document =>
  55. {
  56. document
  57. .Page()
  58. .RequiredAreaSize(50, 30)
  59. .Content(page =>
  60. {
  61. page.Mock("a").Position(0, 0).Size(50, 30);
  62. });
  63. });
  64. }
  65. [Test]
  66. public void ZeroHeightItemDoesNotConsumeSpacing()
  67. {
  68. LayoutTest
  69. .HavingSpaceOfSize(100, 100)
  70. .WithContent(content =>
  71. {
  72. content.Shrink().Column(column =>
  73. {
  74. column.Spacing(10);
  75. column.Item().Mock("a").Size(50, 30);
  76. column.Item().Mock("b").Size(50, 0);
  77. column.Item().Mock("c").Size(70, 20);
  78. });
  79. })
  80. .ExpectedDrawResult(document =>
  81. {
  82. document
  83. .Page()
  84. .RequiredAreaSize(70, 60)
  85. .Content(page =>
  86. {
  87. page.Mock("a").Position(0, 0).Size(70, 30);
  88. page.Mock("b").Position(0, 30).Size(70, 0);
  89. page.Mock("c").Position(0, 40).Size(70, 20);
  90. });
  91. });
  92. }
  93. [Test]
  94. public void NoSpacing()
  95. {
  96. LayoutTest
  97. .HavingSpaceOfSize(100, 100)
  98. .WithContent(content =>
  99. {
  100. content.Shrink().Column(column =>
  101. {
  102. column.Spacing(0);
  103. column.Item().Mock("a").Size(50, 30);
  104. column.Item().Mock("b").Size(40, 20);
  105. });
  106. })
  107. .ExpectedDrawResult(document =>
  108. {
  109. document
  110. .Page()
  111. .RequiredAreaSize(50, 50)
  112. .Content(page =>
  113. {
  114. page.Mock("a").Position(0, 0).Size(50, 30);
  115. page.Mock("b").Position(0, 30).Size(50, 20);
  116. });
  117. });
  118. }
  119. [Test]
  120. public void PartialRenderItem()
  121. {
  122. LayoutTest
  123. .HavingSpaceOfSize(100, 80)
  124. .WithContent(content =>
  125. {
  126. content.Shrink().Column(column =>
  127. {
  128. column.Spacing(5);
  129. column.Item().Mock("a").Size(50, 40);
  130. column.Item().Mock("b").Size(60, 50);
  131. });
  132. })
  133. .ExpectedDrawResult(document =>
  134. {
  135. document
  136. .Page()
  137. .RequiredAreaSize(60, 80)
  138. .Content(page =>
  139. {
  140. page.Mock("a").Position(0, 0).Size(60, 40);
  141. page.Mock("b").Position(0, 45).Size(60, 35);
  142. });
  143. document
  144. .Page()
  145. .RequiredAreaSize(60, 15)
  146. .Content(page =>
  147. {
  148. page.Mock("b").Position(0, 0).Size(60, 15);
  149. });
  150. });
  151. }
  152. }