Files

199 lines
7.5 KiB
C#
Raw Permalink Normal View History

2022-01-21 00:09:39 +01:00
using System.Linq;
using NUnit.Framework;
2021-09-02 21:48:20 +02:00
using QuestPDF.Drawing;
2021-01-16 01:31:39 +01:00
using QuestPDF.Elements;
2021-10-01 02:32:35 +02:00
using QuestPDF.Fluent;
2021-01-16 01:31:39 +01:00
using QuestPDF.Infrastructure;
using QuestPDF.UnitTests.TestEngine;
2021-01-16 01:31:39 +01:00
namespace QuestPDF.UnitTests
{
[TestFixture]
2022-01-21 00:09:39 +01:00
public class ColumnTests
2021-01-16 01:31:39 +01:00
{
2022-01-21 00:09:39 +01:00
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;
}
2022-01-23 21:41:45 +01:00
#region Measure
2021-04-09 16:32:32 +02:00
[Test]
public void Measure_ReturnsWrap_WhenFirstChildWraps()
2021-01-16 01:31:39 +01:00
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.MeasureElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
.CheckMeasureResult(SpacePlan.Wrap());
2021-01-16 01:31:39 +01:00
}
2021-04-09 19:10:55 +02:00
2021-01-16 01:31:39 +01:00
[Test]
public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender()
2021-01-16 01:31:39 +01:00
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.MeasureElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(300, 200))
.CheckMeasureResult(SpacePlan.PartialRender(300, 200));
2021-01-16 01:31:39 +01:00
}
2021-01-16 01:31:39 +01:00
[Test]
public void Measure_ReturnsPartialRender_WhenSecondChildWraps()
2021-01-16 01:31:39 +01:00
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.MeasureElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
.ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
.CheckMeasureResult(SpacePlan.PartialRender(200, 100));
}
[Test]
public void Measure_ReturnsPartialRender_WhenSecondChildReturnsPartialRender()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.MeasureElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
.ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(300, 150))
.CheckMeasureResult(SpacePlan.PartialRender(300, 250));
}
[Test]
public void Measure_ReturnsFullRender_WhenSecondChildReturnsFullRender()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.MeasureElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.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));
}
2022-01-21 00:09:39 +01:00
#endregion
#region Draw
[Test]
public void Draw_WhenFirstChildWraps()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
2021-01-16 01:31:39 +01:00
.CheckDrawResult();
2021-04-09 16:32:32 +02:00
}
2021-04-09 19:10:55 +02:00
[Test]
public void Draw_WhenFirstChildPartiallyRenders()
2021-04-09 19:10:55 +02:00
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(200, 100))
2022-01-21 00:09:39 +01:00
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("first", new Size(400, 100))
2022-01-21 00:09:39 +01:00
.ExpectCanvasTranslate(0, 0)
.CheckDrawResult();
2021-04-09 19:10:55 +02:00
}
[Test]
public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
2021-04-09 19:10:55 +02:00
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
.ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
2022-01-21 00:09:39 +01:00
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("first", new Size(400, 100))
.ExpectCanvasTranslate(0, 0)
.CheckDrawResult();
}
[Test]
public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
.ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(250, 150))
2022-01-21 00:09:39 +01:00
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("first", new Size(400, 100))
.ExpectCanvasTranslate(0, 0)
.ExpectCanvasTranslate(0, 100)
.ExpectChildDraw("second", new Size(400, 150))
.ExpectCanvasTranslate(0, -100)
.CheckDrawResult();
}
[Test]
public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItems)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
.ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(250, 150))
2022-01-21 00:09:39 +01:00
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("first", new Size(400, 100))
.ExpectCanvasTranslate(0, 0)
.ExpectCanvasTranslate(0, 100)
.ExpectChildDraw("second", new Size(400, 150))
.ExpectCanvasTranslate(0, -100)
.CheckDrawResult();
}
[Test]
public void Draw_UsesEmpty_WhenFirstChildIsRendered()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("second", new Size(400, 300), SpacePlan.PartialRender(200, 300))
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("second", new Size(400, 300))
.ExpectCanvasTranslate(0, 0)
2022-01-21 00:09:39 +01:00
.CheckState<Column>(x => x.Items.First().IsRendered)
.CheckDrawResult();
}
[Test]
public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders()
{
TestPlan
2022-01-21 00:09:39 +01:00
.For(CreateColumnWithTwoItemsWhereFirstIsFullyRendered)
.DrawElement(new Size(400, 300))
2021-09-02 21:48:20 +02:00
.ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300))
.ExpectCanvasTranslate(0, 0)
.ExpectChildDraw("second", new Size(400, 300))
.ExpectCanvasTranslate(0, 0)
.CheckDrawResult()
2022-01-21 00:09:39 +01:00
.CheckState<Column>(x => !x.Items.First().IsRendered);
2021-09-18 23:40:21 +02:00
}
#endregion
2021-01-16 01:31:39 +01:00
}
}