Browse Source

Add tests for the Translate element

Marcin Ziąbek 3 months ago
parent
commit
4c356a23ce

+ 74 - 0
Source/QuestPDF.LayoutTests/TranslateTests.cs

@@ -0,0 +1,74 @@
+namespace QuestPDF.LayoutTests;
+
+public class TranslateTests
+{
+    [Test]
+    public void HorizontalTranslation()
+    {
+        LayoutTest
+            .HavingSpaceOfSize(100, 120)
+            .ForContent(content =>
+            {
+                content.Shrink().TranslateX(15).Mock("a").SolidBlock(40, 50);
+            })
+            .ExpectDrawResult(document =>
+            {
+                document
+                    .Page()
+                    .RequiredAreaSize(40, 50)
+                    .Content(page =>
+                    {
+                        page.Mock("a").Position(15, 0).Size(40, 50);
+                    });
+            });
+    }
+    
+    [Test]
+    public void VerticalTranslation()
+    {
+        LayoutTest
+            .HavingSpaceOfSize(100, 120)
+            .ForContent(content =>
+            {
+                content.Shrink().TranslateY(25).Mock("a").SolidBlock(30, 40);
+            })
+            .ExpectDrawResult(document =>
+            {
+                document
+                    .Page()
+                    .RequiredAreaSize(30, 40)
+                    .Content(page =>
+                    {
+                        page.Mock("a").Position(0, 25).Size(30, 40);
+                    });
+            });
+    }
+    
+    [Test]
+    public void MultipleItemsWithTranslation()
+    {
+        LayoutTest
+            .HavingSpaceOfSize(100, 120)
+            .ForContent(content =>
+            {
+                content.Shrink().Column(column =>
+                {
+                    column.Item().TranslateX(5).TranslateY(10).Mock("a").SolidBlock(40, 20);
+                    column.Item().TranslateX(-10).TranslateY(20).Mock("b").SolidBlock(30, 25);
+                    column.Item().TranslateX(30).TranslateY(-15).Mock("c").SolidBlock(50, 15);
+                });
+            })
+            .ExpectDrawResult(document =>
+            {
+                document
+                    .Page()
+                    .RequiredAreaSize(50, 60)
+                    .Content(page =>
+                    {
+                        page.Mock("a").Position(5, 10).Size(50, 20);
+                        page.Mock("b").Position(-10, 40).Size(50, 25);
+                        page.Mock("c").Position(30, 30).Size(50, 15);
+                    });
+            });
+    }
+}

+ 59 - 16
Source/QuestPDF.UnitTests/TranslateTests.cs

@@ -1,31 +1,74 @@
-using NUnit.Framework;
+using System;
+using NUnit.Framework;
 using QuestPDF.Elements;
+using QuestPDF.Fluent;
 using QuestPDF.Infrastructure;
-using QuestPDF.UnitTests.TestEngine;
 
 namespace QuestPDF.UnitTests
 {
     [TestFixture]
     public class TranslateTests
     {
+        [TestCase(0, 0, "")]
+        [TestCase(5, 0, "X=5")]
+        [TestCase(-10, 0, "X=-10")]
+        [TestCase(0, 15, "Y=15")]
+        [TestCase(0, -20, "Y=-20")]
+        [TestCase(30, -40, "X=30   Y=-40")]
+        public void CompanionHint(float x, float y, string expected)
+        {
+            var container = EmptyContainer.Create();
+            
+            container.TranslateX(x).TranslateY(y);
+            
+            var translationElement = container.Child as Translate;
+            var companionHint = translationElement?.GetCompanionHint();
+            
+            Assert.That(companionHint, Is.EqualTo(expected));
+        }
+        
         [Test]
-        public void Measure() => SimpleContainerTests.Measure<Translate>();
+        public void HorizontalTranslationIsCumulative()
+        {
+            var container = EmptyContainer.Create();
+        
+            container.TranslateX(-5).TranslateX(10).TranslateX(20);
+        
+            var rowContainer = container.Child as Translate;
+            Assert.That(rowContainer?.TranslateX, Is.EqualTo(25));
+        }
         
         [Test]
-        public void Draw()
+        public void VerticalTranslationIsCumulative()
         {
-            TestPlan
-                .For(x => new Translate
-                {
-                    Child = x.CreateChild(),
-                    TranslateX = 50,
-                    TranslateY = 75
-                })
-                .DrawElement(new Size(400, 300))
-                .ExpectCanvasTranslate(50, 75)
-                .ExpectChildDraw(new Size(400, 300))
-                .ExpectCanvasTranslate(-50, -75)
-                .CheckDrawResult();
+            var container = EmptyContainer.Create();
+        
+            container.TranslateY(5).TranslateY(-10).TranslateY(20);
+        
+            var rowContainer = container.Child as Translate;
+            Assert.That(rowContainer?.TranslateY, Is.EqualTo(15));
+        }
+        
+        [Test]
+        public void HorizontalTranslationSupportsUnitConversion()
+        {
+            var container = EmptyContainer.Create();
+        
+            container.TranslateX(2, Unit.Inch);
+        
+            var rowContainer = container.Child as Translate;
+            Assert.That(rowContainer?.TranslateX, Is.EqualTo(144));
+        }
+        
+        [Test]
+        public void VerticalTranslationSupportsUnitConversion()
+        {
+            var container = EmptyContainer.Create();
+        
+            container.TranslateY(3, Unit.Inch);
+        
+            var rowContainer = container.Child as Translate;
+            Assert.That(rowContainer?.TranslateY, Is.EqualTo(216));
         }
     }
 }