| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- 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 StackTests
- {
- #region Measure
- [Test]
- public void Measure_ReturnsWrap_WhenFirstChildWraps()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .MeasureElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
- .CheckMeasureResult(SpacePlan.Wrap());
- }
-
- [Test]
- public void Measure_ReturnsPartialRender_WhenFirstChildReturnsPartialRender()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .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(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .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(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .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(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .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));
- }
-
- [Test]
- public void Measure_UsesEmpty_WhenFirstChildIsRendered()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second"),
-
- IsFirstRendered = true
- })
- .MeasureElement(new Size(400, 300))
- .ExpectChildMeasure("second", new Size(400, 300), SpacePlan.FullRender(200, 300))
- .CheckMeasureResult(SpacePlan.FullRender(200, 300));
- }
-
- #endregion
-
- #region Draw
-
- [Test]
- public void Draw_WhenFirstChildWraps()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildPartiallyRenders()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.PartialRender(200, 100))
- .ExpectChildDraw("first", new Size(400, 100))
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
- .ExpectChildDraw("first", new Size(400, 100))
- .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildPartiallyRenders()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
- .ExpectChildDraw("first", new Size(400, 100))
- .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.PartialRender(250, 150))
- .ExpectCanvasTranslate(0, 100)
- .ExpectChildDraw("second", new Size(400, 150))
- .ExpectCanvasTranslate(0, -100)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_WhenFirstChildFullyRenders_AndSecondChildFullyRenders()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second")
- })
- .DrawElement(new Size(400, 300))
- .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
- .ExpectChildDraw("first", new Size(400, 100))
- .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.FullRender(250, 150))
- .ExpectCanvasTranslate(0, 100)
- .ExpectChildDraw("second", new Size(400, 150))
- .ExpectCanvasTranslate(0, -100)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_UsesEmpty_WhenFirstChildIsRendered()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second"),
-
- IsFirstRendered = true
- })
- .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<BinaryStack>(x => x.IsFirstRendered)
- .CheckDrawResult();
- }
-
- [Test]
- public void Draw_TogglesFirstRenderedFlag_WhenSecondFullyRenders()
- {
- TestPlan
- .For(x => new BinaryStack
- {
- First = x.CreateChild("first"),
- Second = x.CreateChild("second"),
-
- IsFirstRendered = true
- })
- .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<BinaryStack>(x => !x.IsFirstRendered);
- }
-
- #endregion
-
- #region Structure
-
- [Test]
- public void Structure_Simple()
- {
- // arrange
- var childA = TestPlan.CreateUniqueElement();
- var childB = TestPlan.CreateUniqueElement();
- var childC = TestPlan.CreateUniqueElement();
- var childD = TestPlan.CreateUniqueElement();
- var childE = TestPlan.CreateUniqueElement();
- const int spacing = 20;
-
- // act
- var structure = new Container();
-
- structure.Stack(stack =>
- {
- stack.Spacing(spacing);
-
- stack.Item().Element(childA);
- stack.Item().Element(childB);
- stack.Item().Element(childC);
- stack.Item().Element(childD);
- stack.Item().Element(childE);
- });
-
- // assert
- var expected = new Padding
- {
- Bottom = -spacing,
- Child = new BinaryStack
- {
- First = new BinaryStack
- {
- First = new Padding
- {
- Bottom = spacing,
- Child = childA
- },
- Second = new Padding
- {
- Bottom = spacing,
- Child = childB
- }
- },
- Second = new BinaryStack
- {
- First = new Padding
- {
- Bottom = spacing,
- Child = childC
- },
- Second = new BinaryStack
- {
- First = new Padding
- {
- Bottom = spacing,
- Child = childD
- },
- Second = new Padding
- {
- Bottom = spacing,
- Child = childE
- }
- }
- }
- }
- };
- TestPlan.CompareOperations(structure, expected);
- }
-
- #endregion
- }
- }
|