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.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<Binarycolumn>(x => x.IsFirstRendered)
+                .CheckState<Column>(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<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

+ 3 - 1
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());
             }