Files
2023-01-06 00:45:12 +01:00

251 lines
7.6 KiB
C#

using FluentAssertions;
using NUnit.Framework;
using QuestPDF.Elements;
using QuestPDF.Fluent;
using QuestPDF.UnitTests.TestEngine;
namespace QuestPDF.UnitTests
{
[TestFixture]
public class GridTests
{
#region Alignment
[Test]
public void AlignLeft()
{
// arrange
var structure = new Container();
var childA = TestPlan.CreateUniqueElement();
var childB = TestPlan.CreateUniqueElement();
var childC = TestPlan.CreateUniqueElement();
var childD = TestPlan.CreateUniqueElement();
var childE = TestPlan.CreateUniqueElement();
// act
structure
.Grid(grid =>
{
grid.AlignLeft();
grid.Item(6).Element(childA);
grid.Item(4).Element(childB);
grid.Item(4).Element(childC);
grid.Item(2).Element(childD);
grid.Item(8).Element(childE);
});
// assert
var expected = new Container();
expected.Column(column =>
{
column.Item().Row(row =>
{
row.RelativeItem(6).Element(childA);
row.RelativeItem(4).Element(childB);
row.RelativeItem(2);
});
column.Item().Row(row =>
{
row.RelativeItem(4).Element(childC);
row.RelativeItem(2).Element(childD);
row.RelativeItem(6);
});
column.Item().Row(row =>
{
row.RelativeItem(8).Element(childE);
row.RelativeItem(4);
});
});
TestPlan.CompareOperations(structure, expected);
}
[Test]
public void AlignCenter()
{
// arrange
var structure = new Container();
var childA = TestPlan.CreateUniqueElement();
var childB = TestPlan.CreateUniqueElement();
var childC = TestPlan.CreateUniqueElement();
var childD = TestPlan.CreateUniqueElement();
var childE = TestPlan.CreateUniqueElement();
// act
structure
.Grid(grid =>
{
grid.AlignCenter();
grid.Item(6).Element(childA);
grid.Item(4).Element(childB);
grid.Item(4).Element(childC);
grid.Item(2).Element(childD);
grid.Item(8).Element(childE);
});
// assert
var expected = new Container();
expected.Column(column =>
{
column.Item().Row(row =>
{
row.RelativeItem(1);
row.RelativeItem(6).Element(childA);
row.RelativeItem(4).Element(childB);
row.RelativeItem(1);
});
column.Item().Row(row =>
{
row.RelativeItem(3);
row.RelativeItem(4).Element(childC);
row.RelativeItem(2).Element(childD);
row.RelativeItem(3);
});
column.Item().Row(row =>
{
row.RelativeItem(2);
row.RelativeItem(8).Element(childE);
row.RelativeItem(2);
});
});
TestPlan.CompareOperations(structure, expected);
}
[Test]
public void AlignRight()
{
// arrange
var structure = new Container();
var childA = TestPlan.CreateUniqueElement();
var childB = TestPlan.CreateUniqueElement();
var childC = TestPlan.CreateUniqueElement();
var childD = TestPlan.CreateUniqueElement();
var childE = TestPlan.CreateUniqueElement();
// act
structure
.Grid(grid =>
{
grid.AlignRight();
grid.Item(6).Element(childA);
grid.Item(4).Element(childB);
grid.Item(4).Element(childC);
grid.Item(2).Element(childD);
grid.Item(8).Element(childE);
});
// assert
var expected = new Container();
expected.Column(column =>
{
column.Item().Row(row =>
{
row.RelativeItem(2);
row.RelativeItem(6).Element(childA);
row.RelativeItem(4).Element(childB);
});
column.Item().Row(row =>
{
row.RelativeItem(6);
row.RelativeItem(4).Element(childC);
row.RelativeItem(2).Element(childD);
});
column.Item().Row(row =>
{
row.RelativeItem(4);
row.RelativeItem(8).Element(childE);
});
});
TestPlan.CompareOperations(structure, expected);
}
#endregion
#region Spacing
[Test]
public void Spacing()
{
// arrange
var structure = new Container();
var childA = TestPlan.CreateUniqueElement();
var childB = TestPlan.CreateUniqueElement();
var childC = TestPlan.CreateUniqueElement();
var childD = TestPlan.CreateUniqueElement();
// act
structure
.Grid(grid =>
{
grid.Columns(16);
grid.AlignCenter();
grid.VerticalSpacing(20);
grid.HorizontalSpacing(30);
grid.Item(5).Element(childA);
grid.Item(5).Element(childB);
grid.Item(10).Element(childC);
grid.Item(12).Element(childD);
});
// assert
var expected = new Container();
expected.Column(column =>
{
column.Spacing(20);
column.Item().Row(row =>
{
row.Spacing(30);
row.RelativeItem(3);
row.RelativeItem(5).Element(childA);
row.RelativeItem(5).Element(childB);
row.RelativeItem(3);
});
column.Item().Row(row =>
{
row.Spacing(30);
row.RelativeItem(3);
row.RelativeItem(10).Element(childC);
row.RelativeItem(3);
});
column.Item().Row(row =>
{
row.Spacing(30);
row.RelativeItem(2);
row.RelativeItem(12).Element(childD);
row.RelativeItem(2);
});
});
TestPlan.CompareOperations(structure, expected);
}
#endregion
}
}