using NUnit.Framework; using QuestPDF.Drawing; using QuestPDF.Elements; using QuestPDF.Infrastructure; using QuestPDF.UnitTests.TestEngine; namespace QuestPDF.UnitTests { [TestFixture] public class AlignmentTests { [Test] public void Measure() => SimpleContainerTests.Measure(); [Test] public void Draw_HorizontalCenter_VerticalCenter() { TestPlan .For(x => new Alignment { Horizontal = HorizontalAlignment.Center, Vertical = VerticalAlignment.Middle, Child = x.CreateChild() }) .DrawElement(new Size(1000, 500)) .ExpectChildMeasure(expectedInput: new Size(1000, 500), returns: SpacePlan.PartialRender(new Size(400, 200))) .ExpectCanvasTranslate(new Position(300, 150)) .ExpectChildDraw(new Size(400, 200)) .ExpectCanvasTranslate(new Position(-300, -150)) .CheckDrawResult(); } [Test] public void Draw_HorizontalLeft_VerticalCenter() { TestPlan .For(x => new Alignment { Horizontal = HorizontalAlignment.Left, Vertical = VerticalAlignment.Middle, Child = x.CreateChild() }) .DrawElement(new Size(400, 300)) .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.FullRender(new Size(100, 50))) .ExpectCanvasTranslate(new Position(0, 125)) .ExpectChildDraw(new Size(100, 50)) .ExpectCanvasTranslate(new Position(0, -125)) .CheckDrawResult(); } [Test] public void Draw_HorizontalCenter_VerticalBottom() { TestPlan .For(x => new Alignment { Horizontal = HorizontalAlignment.Center, Vertical = VerticalAlignment.Bottom, Child = x.CreateChild() }) .DrawElement(new Size(400, 300)) .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.FullRender(new Size(100, 50))) .ExpectCanvasTranslate(new Position(150, 250)) .ExpectChildDraw(new Size(100, 50)) .ExpectCanvasTranslate(new Position(-150, -250)) .CheckDrawResult(); } [Test] public void Draw_HorizontalRight_VerticalTop() { TestPlan .For(x => new Alignment { Horizontal = HorizontalAlignment.Right, Vertical = VerticalAlignment.Top, Child = x.CreateChild() }) .DrawElement(new Size(400, 300)) .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.FullRender(new Size(100, 50))) .ExpectCanvasTranslate(new Position(300, 0)) .ExpectChildDraw(new Size(100, 50)) .ExpectCanvasTranslate(new Position(-300, 0)) .CheckDrawResult(); } [Test] public void Draw_HorizontalCenter_VerticalNone() { TestPlan .For(x => new Alignment { Horizontal = HorizontalAlignment.Center, Vertical = null, Child = x.CreateChild() }) .DrawElement(new Size(400, 300)) .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.FullRender(new Size(100, 50))) .ExpectCanvasTranslate(new Position(150, 0)) .ExpectChildDraw(new Size(100, 300)) .ExpectCanvasTranslate(new Position(-150, 0)) .CheckDrawResult(); } [Test] public void Draw_HorizontalNone_VerticalMiddle() { TestPlan .For(x => new Alignment { Horizontal = null, Vertical = VerticalAlignment.Middle, Child = x.CreateChild() }) .DrawElement(new Size(400, 300)) .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.FullRender(new Size(100, 50))) .ExpectCanvasTranslate(new Position(0, 125)) .ExpectChildDraw(new Size(400, 50)) .ExpectCanvasTranslate(new Position(0, -125)) .CheckDrawResult(); } } }