From b96c67a8afe525273fd6545356ff3c5d5a3bbbed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zi=C4=85bek?= Date: Fri, 21 Jan 2022 00:09:39 +0100 Subject: [PATCH] Fixed Column tests --- .../{StackTests.cs => ColumnTests.cs} | 219 +++++------------- QuestPDF/Elements/Column.cs | 4 +- 2 files changed, 57 insertions(+), 166 deletions(-) rename QuestPDF.UnitTests/{StackTests.cs => ColumnTests.cs} (52%) diff --git a/QuestPDF.UnitTests/StackTests.cs b/QuestPDF.UnitTests/ColumnTests.cs similarity index 52% rename from QuestPDF.UnitTests/StackTests.cs rename to QuestPDF.UnitTests/ColumnTests.cs index bbc1058..694b908 100644 --- a/QuestPDF.UnitTests/StackTests.cs +++ b/QuestPDF.UnitTests/ColumnTests.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using System.Linq; +using NUnit.Framework; using QuestPDF.Drawing; using QuestPDF.Elements; using QuestPDF.Fluent; @@ -8,19 +9,40 @@ using QuestPDF.UnitTests.TestEngine; namespace QuestPDF.UnitTests { [TestFixture] - public class columnTests + public class ColumnTests { #region Measure + private Column CreateColumnWithTwoItems(TestPlan testPlan) + { + return new Column + { + Items = + { + new ColumnItem + { + Child = testPlan.CreateChild("first") + }, + new ColumnItem + { + Child = testPlan.CreateChild("second") + } + } + }; + } + + private Column CreateColumnWithTwoItemsWhereFirstIsFullyRendered(TestPlan testPlan) + { + var column = CreateColumnWithTwoItems(testPlan); + column.Items.First().IsRendered = true; + return column; + } + [Test] public void Measure_ReturnsWrap_WhenFirstChildWraps() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .MeasureElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap()) .CheckMeasureResult(SpacePlan.Wrap()); @@ -30,11 +52,7 @@ namespace QuestPDF.UnitTests public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .MeasureElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(300, 200)) .CheckMeasureResult(SpacePlan.PartialRender(300, 200)); @@ -44,11 +62,7 @@ namespace QuestPDF.UnitTests public void Measure_ReturnsPartialRender_WhenSecondChildWraps() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .MeasureElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap()) @@ -59,11 +73,7 @@ namespace QuestPDF.UnitTests public void Measure_ReturnsPartialRender_WhenSecondChildReturnsPartialRender() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .MeasureElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(300, 150)) @@ -74,33 +84,13 @@ namespace QuestPDF.UnitTests public void Measure_ReturnsFullRender_WhenSecondChildReturnsFullRender() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .MeasureElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(100, 50)) .CheckMeasureResult(SpacePlan.FullRender(200, 150)); } - - [Test] - public void Measure_UsesEmpty_WhenFirstChildIsRendered() - { - TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second"), - - IsFirstRendered = true - }) - .MeasureElement(new Size(400, 300)) - .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300)) - .CheckMeasureResult(SpacePlan.FullRender(200, 300)); - } - + #endregion #region Draw @@ -109,11 +99,7 @@ namespace QuestPDF.UnitTests public void Draw_WhenFirstChildWraps() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap()) .CheckDrawResult(); @@ -123,14 +109,12 @@ namespace QuestPDF.UnitTests public void Draw_WhenFirstChildPartiallyRenders() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(200, 100)) + .ExpectCanvasTranslate(0, 0) .ExpectChildDraw("first", new Size(400, 100)) + .ExpectCanvasTranslate(0, 0) .CheckDrawResult(); } @@ -138,15 +122,13 @@ namespace QuestPDF.UnitTests public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) - .ExpectChildDraw("first", new Size(400, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap()) + .ExpectCanvasTranslate(0, 0) + .ExpectChildDraw("first", new Size(400, 100)) + .ExpectCanvasTranslate(0, 0) .CheckDrawResult(); } @@ -154,15 +136,13 @@ namespace QuestPDF.UnitTests public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) - .ExpectChildDraw("first", new Size(400, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(250, 150)) + .ExpectCanvasTranslate(0, 0) + .ExpectChildDraw("first", new Size(400, 100)) + .ExpectCanvasTranslate(0, 0) .ExpectCanvasTranslate(0, 100) .ExpectChildDraw("second", new Size(400, 150)) .ExpectCanvasTranslate(0, -100) @@ -173,15 +153,13 @@ namespace QuestPDF.UnitTests public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second") - }) + .For(CreateColumnWithTwoItems) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100)) - .ExpectChildDraw("first", new Size(400, 100)) .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(250, 150)) + .ExpectCanvasTranslate(0, 0) + .ExpectChildDraw("first", new Size(400, 100)) + .ExpectCanvasTranslate(0, 0) .ExpectCanvasTranslate(0, 100) .ExpectChildDraw("second", new Size(400, 150)) .ExpectCanvasTranslate(0, -100) @@ -192,19 +170,13 @@ namespace QuestPDF.UnitTests public void Draw_UsesEmpty_WhenFirstChildIsRendered() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second"), - - IsFirstRendered = true - }) + .For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.PartialRender(200, 300)) .ExpectCanvasTranslate(0, 0) .ExpectChildDraw("second", new Size(400, 300)) .ExpectCanvasTranslate(0, 0) - .CheckState(x => x.IsFirstRendered) + .CheckState(x => x.Items.First().IsRendered) .CheckDrawResult(); } @@ -212,97 +184,14 @@ namespace QuestPDF.UnitTests public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders() { TestPlan - .For(x => new Binarycolumn - { - First = x.CreateChild("first"), - Second = x.CreateChild("second"), - - IsFirstRendered = true - }) + .For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered) .DrawElement(new Size(400, 300)) .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300)) .ExpectCanvasTranslate(0, 0) .ExpectChildDraw("second", new Size(400, 300)) .ExpectCanvasTranslate(0, 0) .CheckDrawResult() - .CheckState(x => !x.IsFirstRendered); - } - - #endregion - - #region Structure - - [Test] - public void Structure_Simple() - { - // arrange - var childA = TestPlan.CreateUniqueElement(); - var childB = TestPlan.CreateUniqueElement(); - var childC = TestPlan.CreateUniqueElement(); - var childD = TestPlan.CreateUniqueElement(); - var childE = TestPlan.CreateUniqueElement(); - - const int spacing = 20; - - // act - var structure = new Container(); - - structure.Column(column => - { - column.Spacing(spacing); - - column.Item().Element(childA); - column.Item().Element(childB); - column.Item().Element(childC); - column.Item().Element(childD); - column.Item().Element(childE); - }); - - // assert - var expected = new Padding - { - Bottom = -spacing, - - Child = new Binarycolumn - { - First = new Binarycolumn - { - First = new Padding - { - Bottom = spacing, - Child = childA - }, - Second = new Padding - { - Bottom = spacing, - Child = childB - } - }, - Second = new Binarycolumn - { - First = new Padding - { - Bottom = spacing, - Child = childC - }, - Second = new Binarycolumn - { - First = new Padding - { - Bottom = spacing, - Child = childD - }, - Second = new Padding - { - Bottom = spacing, - Child = childE - } - } - } - } - }; - - TestPlan.CompareOperations(structure, expected); + .CheckState(x => !x.Items.First().IsRendered); } #endregion diff --git a/QuestPDF/Elements/Column.cs b/QuestPDF/Elements/Column.cs index 8fad0f1..da42e96 100644 --- a/QuestPDF/Elements/Column.cs +++ b/QuestPDF/Elements/Column.cs @@ -70,8 +70,10 @@ namespace QuestPDF.Elements if (command.Measurement.Type == SpacePlanType.FullRender) command.ColumnItem.IsRendered = true; + var targetSize = new Size(availableSpace.Width, command.Size.Height); + Canvas.Translate(command.Offset); - command.ColumnItem.Draw(command.Size); + command.ColumnItem.Draw(targetSize); Canvas.Translate(command.Offset.Reverse()); }