Browse Source

Fixed Column tests

Marcin Ziąbek 3 years ago
parent
commit
b96c67a8af
2 changed files with 57 additions and 166 deletions
  1. 54 165
      QuestPDF.UnitTests/ColumnTests.cs
  2. 3 1
      QuestPDF/Elements/Column.cs

+ 54 - 165
QuestPDF.UnitTests/StackTests.cs → QuestPDF.UnitTests/ColumnTests.cs

@@ -1,4 +1,5 @@
-using NUnit.Framework;
+using System.Linq;
+using NUnit.Framework;
 using QuestPDF.Drawing;
 using QuestPDF.Drawing;
 using QuestPDF.Elements;
 using QuestPDF.Elements;
 using QuestPDF.Fluent;
 using QuestPDF.Fluent;
@@ -8,19 +9,40 @@ using QuestPDF.UnitTests.TestEngine;
 namespace QuestPDF.UnitTests
 namespace QuestPDF.UnitTests
 {
 {
     [TestFixture]
     [TestFixture]
-    public class columnTests
+    public class ColumnTests
     {
     {
         #region Measure
         #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]
         [Test]
         public void Measure_ReturnsWrap_WhenFirstChildWraps()
         public void Measure_ReturnsWrap_WhenFirstChildWraps()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .MeasureElement(new Size(400, 300))
                 .MeasureElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
                 .CheckMeasureResult(SpacePlan.Wrap());
                 .CheckMeasureResult(SpacePlan.Wrap());
@@ -30,11 +52,7 @@ namespace QuestPDF.UnitTests
         public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender()
         public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .MeasureElement(new Size(400, 300))
                 .MeasureElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(300, 200))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(300, 200))
                 .CheckMeasureResult(SpacePlan.PartialRender(300, 200));
                 .CheckMeasureResult(SpacePlan.PartialRender(300, 200));
@@ -44,11 +62,7 @@ namespace QuestPDF.UnitTests
         public void Measure_ReturnsPartialRender_WhenSecondChildWraps()
         public void Measure_ReturnsPartialRender_WhenSecondChildWraps()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .MeasureElement(new Size(400, 300))
                 .MeasureElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
@@ -59,11 +73,7 @@ namespace QuestPDF.UnitTests
         public void Measure_ReturnsPartialRender_WhenSecondChildReturnsPartialRender()
         public void Measure_ReturnsPartialRender_WhenSecondChildReturnsPartialRender()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .MeasureElement(new Size(400, 300))
                 .MeasureElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(300, 150))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(300, 150))
@@ -74,33 +84,13 @@ namespace QuestPDF.UnitTests
         public void Measure_ReturnsFullRender_WhenSecondChildReturnsFullRender()
         public void Measure_ReturnsFullRender_WhenSecondChildReturnsFullRender()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .MeasureElement(new Size(400, 300))
                 .MeasureElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(100, 50))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(100, 50))
                 .CheckMeasureResult(SpacePlan.FullRender(200, 150));
                 .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
         #endregion
         
         
         #region Draw
         #region Draw
@@ -109,11 +99,7 @@ namespace QuestPDF.UnitTests
         public void Draw_WhenFirstChildWraps()
         public void Draw_WhenFirstChildWraps()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
                 .CheckDrawResult();
                 .CheckDrawResult();
@@ -123,14 +109,12 @@ namespace QuestPDF.UnitTests
         public void Draw_WhenFirstChildPartiallyRenders()
         public void Draw_WhenFirstChildPartiallyRenders()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(200, 100))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(200, 100))
+                .ExpectCanvasTranslate(0, 0)
                 .ExpectChildDraw("first", new Size(400, 100))
                 .ExpectChildDraw("first", new Size(400, 100))
+                .ExpectCanvasTranslate(0, 0)
                 .CheckDrawResult();
                 .CheckDrawResult();
         }
         }
         
         
@@ -138,15 +122,13 @@ namespace QuestPDF.UnitTests
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
-                .ExpectChildDraw("first", new Size(400, 100))
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
                 .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
+                .ExpectCanvasTranslate(0, 0)
+                .ExpectChildDraw("first", new Size(400, 100))
+                .ExpectCanvasTranslate(0, 0)
                 .CheckDrawResult();
                 .CheckDrawResult();
         }
         }
         
         
@@ -154,15 +136,13 @@ namespace QuestPDF.UnitTests
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders()
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .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))
                 .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)
                 .ExpectCanvasTranslate(0, 100)
                 .ExpectChildDraw("second", new Size(400, 150))
                 .ExpectChildDraw("second", new Size(400, 150))
                 .ExpectCanvasTranslate(0, -100)
                 .ExpectCanvasTranslate(0, -100)
@@ -173,15 +153,13 @@ namespace QuestPDF.UnitTests
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders()
         public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second")
-                })
+                .For(CreateColumnWithTwoItems)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
                 .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))
                 .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)
                 .ExpectCanvasTranslate(0, 100)
                 .ExpectChildDraw("second", new Size(400, 150))
                 .ExpectChildDraw("second", new Size(400, 150))
                 .ExpectCanvasTranslate(0, -100)
                 .ExpectCanvasTranslate(0, -100)
@@ -192,19 +170,13 @@ namespace QuestPDF.UnitTests
         public void Draw_UsesEmpty_WhenFirstChildIsRendered()
         public void Draw_UsesEmpty_WhenFirstChildIsRendered()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second"),
-                    
-                    IsFirstRendered = true
-                })
+                .For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.PartialRender(200, 300))
                 .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.PartialRender(200, 300))
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectChildDraw("second", new Size(400, 300))
                 .ExpectChildDraw("second", new Size(400, 300))
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectCanvasTranslate(0, 0)
-                .CheckState<Binarycolumn>(x => x.IsFirstRendered)
+                .CheckState<Column>(x => x.Items.First().IsRendered)
                 .CheckDrawResult();
                 .CheckDrawResult();
         }
         }
         
         
@@ -212,97 +184,14 @@ namespace QuestPDF.UnitTests
         public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders()
         public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders()
         {
         {
             TestPlan
             TestPlan
-                .For(x => new Binarycolumn
-                {
-                    First = x.CreateChild("first"),
-                    Second = x.CreateChild("second"),
-                    
-                    IsFirstRendered = true
-                })
+                .For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered)
                 .DrawElement(new Size(400, 300))
                 .DrawElement(new Size(400, 300))
                 .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300))
                 .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300))
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectChildDraw("second", new Size(400, 300))
                 .ExpectChildDraw("second", new Size(400, 300))
                 .ExpectCanvasTranslate(0, 0)
                 .ExpectCanvasTranslate(0, 0)
                 .CheckDrawResult()
                 .CheckDrawResult()
-                .CheckState<Binarycolumn>(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<Column>(x => !x.Items.First().IsRendered);
         }
         }
         
         
         #endregion
         #endregion

+ 3 - 1
QuestPDF/Elements/Column.cs

@@ -70,8 +70,10 @@ namespace QuestPDF.Elements
                 if (command.Measurement.Type == SpacePlanType.FullRender)
                 if (command.Measurement.Type == SpacePlanType.FullRender)
                     command.ColumnItem.IsRendered = true;
                     command.ColumnItem.IsRendered = true;
 
 
+                var targetSize = new Size(availableSpace.Width, command.Size.Height);
+                
                 Canvas.Translate(command.Offset);
                 Canvas.Translate(command.Offset);
-                command.ColumnItem.Draw(command.Size);
+                command.ColumnItem.Draw(targetSize);
                 Canvas.Translate(command.Offset.Reverse());
                 Canvas.Translate(command.Offset.Reverse());
             }
             }