| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using QuestPDF.Elements;
- using QuestPDF.Helpers;
- namespace QuestPDF.LayoutTests;
- public class MultiColumnTests
- {
- [Test]
- public void DynamicComponent()
- {
- LayoutTest
- .HavingSpaceOfSize(400, 200)
- .ForContent(content =>
- {
- content
- .Shrink()
- .MultiColumn(column =>
- {
- column.Content()
- .Mock("dynamic")
- .Dynamic(new CounterComponent());
- });
- })
- .ExpectDrawResult(document =>
- {
- document
- .Page()
- .RequiredAreaSize(400, 50)
- .Content(page =>
- {
- page.Mock("dynamic")
- .Position(0, 0)
- .Size(200, 50)
- .State(new DynamicHost.DynamicState()
- {
- IsRendered = false,
- ChildState = 2
- });
-
- page.Mock("dynamic")
- .Position(200, 0)
- .Size(200, 50)
- .State(new DynamicHost.DynamicState()
- {
- IsRendered = false,
- ChildState = 3
- });
- });
-
- document
- .Page()
- .RequiredAreaSize(400, 50)
- .Content(page =>
- {
- page.Mock("dynamic")
- .Position(0, 0)
- .Size(200, 50)
- .State(new DynamicHost.DynamicState()
- {
- IsRendered = false,
- ChildState = 4
- });
-
- page.Mock("dynamic")
- .Position(200, 0)
- .Size(200, 50)
- .State(new DynamicHost.DynamicState()
- {
- IsRendered = false,
- ChildState = 5
- });
- });
-
- document
- .Page()
- .RequiredAreaSize(400, 50)
- .Content(page =>
- {
- page.Mock("dynamic")
- .Position(0, 0)
- .Size(200, 50)
- .State(new DynamicHost.DynamicState()
- {
- IsRendered = true,
- ChildState = 6
- });
- });
- });
- }
-
- public class CounterComponent : IDynamicComponent<int>
- {
- public int State { get; set; } = 1;
-
- public DynamicComponentComposeResult Compose(DynamicContext context)
- {
- var content = context.CreateElement(element =>
- {
- element
- .Width(100)
- .Height(50)
- .Background(Colors.Grey.Lighten2)
- .AlignCenter()
- .AlignMiddle()
- .Text($"Item {State}")
- .SemiBold();
- });
- State++;
- return new DynamicComponentComposeResult
- {
- Content = content,
- HasMoreContent = State <= 5
- };
- }
- }
- }
|