| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- using System.Linq;
- using NUnit.Framework;
- using QuestPDF.Drawing;
- using QuestPDF.Elements;
- using QuestPDF.Fluent;
- using QuestPDF.Infrastructure;
- using QuestPDF.UnitTests.TestEngine;
- namespace QuestPDF.UnitTests
- {
- [TestFixture]
- public class ColumnTests
- {
- 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;
- }
-
- #region Measure
- [Test]
- public void Measure_ReturnsWrap_WhenFirstChildWraps()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .MeasureElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
- .CheckMeasureResult(SpacePlan.Wrap());
- }
-
- [Test]
- public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .MeasureElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(300, 200))
- .CheckMeasureResult(SpacePlan.PartialRender(300, 200));
- }
-
- [Test]
- public void Measure_ReturnsPartialRender_WhenSecondChildWraps()
- {
- TestPlan
- .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())
- .CheckMeasureResult(SpacePlan.PartialRender(200, 100));
- }
-
- [Test]
- public void Measure_ReturnsPartialRender_WhenSecondChildReturnsPartialRender()
- {
- TestPlan
- .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))
- .CheckMeasureResult(SpacePlan.PartialRender(300, 250));
- }
-
- [Test]
- public void Measure_ReturnsFullRender_WhenSecondChildReturnsFullRender()
- {
- TestPlan
- .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));
- }
- #endregion
-
- #region Draw
-
- [Test]
- public void Draw_WhenFirstChildWraps()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildPartiallyRenders()
- {
- TestPlan
- .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();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
- .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
- .ExpectCanvasTranslate(0, 0)
- .ExpectChildDraw("first", new Size(400, 100))
- .ExpectCanvasTranslate(0, 0)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 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)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders()
- {
- TestPlan
- .For(CreateColumnWithTwoItems)
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 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)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_UsesEmpty_WhenFirstChildIsRendered()
- {
- TestPlan
- .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<Column>(x => x.Items.First().IsRendered)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders()
- {
- TestPlan
- .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<Column>(x => !x.Items.First().IsRendered);
- }
-
- #endregion
- }
- }
|