MultiColumnTests.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using QuestPDF.Elements;
  2. using QuestPDF.Helpers;
  3. namespace QuestPDF.LayoutTests;
  4. public class MultiColumnTests
  5. {
  6. [Test]
  7. public void DynamicComponent()
  8. {
  9. LayoutTest
  10. .HavingSpaceOfSize(400, 200)
  11. .ForContent(content =>
  12. {
  13. content
  14. .Shrink()
  15. .MultiColumn(column =>
  16. {
  17. column.Content()
  18. .Mock("dynamic")
  19. .Dynamic(new CounterComponent());
  20. });
  21. })
  22. .ExpectDrawResult(document =>
  23. {
  24. document
  25. .Page()
  26. .RequiredAreaSize(400, 50)
  27. .Content(page =>
  28. {
  29. page.Mock("dynamic")
  30. .Position(0, 0)
  31. .Size(200, 50)
  32. .State(new DynamicHost.DynamicState()
  33. {
  34. IsRendered = false,
  35. ChildState = 2
  36. });
  37. page.Mock("dynamic")
  38. .Position(200, 0)
  39. .Size(200, 50)
  40. .State(new DynamicHost.DynamicState()
  41. {
  42. IsRendered = false,
  43. ChildState = 3
  44. });
  45. });
  46. document
  47. .Page()
  48. .RequiredAreaSize(400, 50)
  49. .Content(page =>
  50. {
  51. page.Mock("dynamic")
  52. .Position(0, 0)
  53. .Size(200, 50)
  54. .State(new DynamicHost.DynamicState()
  55. {
  56. IsRendered = false,
  57. ChildState = 4
  58. });
  59. page.Mock("dynamic")
  60. .Position(200, 0)
  61. .Size(200, 50)
  62. .State(new DynamicHost.DynamicState()
  63. {
  64. IsRendered = false,
  65. ChildState = 5
  66. });
  67. });
  68. document
  69. .Page()
  70. .RequiredAreaSize(400, 50)
  71. .Content(page =>
  72. {
  73. page.Mock("dynamic")
  74. .Position(0, 0)
  75. .Size(200, 50)
  76. .State(new DynamicHost.DynamicState()
  77. {
  78. IsRendered = true,
  79. ChildState = 6
  80. });
  81. });
  82. });
  83. }
  84. public class CounterComponent : IDynamicComponent<int>
  85. {
  86. public int State { get; set; } = 1;
  87. public DynamicComponentComposeResult Compose(DynamicContext context)
  88. {
  89. var content = context.CreateElement(element =>
  90. {
  91. element
  92. .Width(100)
  93. .Height(50)
  94. .Background(Colors.Grey.Lighten2)
  95. .AlignCenter()
  96. .AlignMiddle()
  97. .Text($"Item {State}")
  98. .SemiBold();
  99. });
  100. State++;
  101. return new DynamicComponentComposeResult
  102. {
  103. Content = content,
  104. HasMoreContent = State <= 5
  105. };
  106. }
  107. }
  108. }