294 lines
12 KiB
C#
294 lines
12 KiB
C#
using NUnit.Framework;
|
|
using QuestPDF.Drawing.SpacePlan;
|
|
using QuestPDF.Elements;
|
|
using QuestPDF.Infrastructure;
|
|
using QuestPDF.UnitTests.TestEngine;
|
|
|
|
namespace QuestPDF.UnitTests
|
|
{
|
|
[TestFixture]
|
|
public class StackTests
|
|
{
|
|
[Test]
|
|
public void Measure_NoChildren_Empty()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 100
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.CheckMeasureResult(new FullRender(Size.Zero));
|
|
}
|
|
|
|
[Test]
|
|
public void Measure_ReturnsWrap_WhenPageable_AndAnyChildReturnsWrap()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 100,
|
|
Pageable = true,
|
|
Children = new []
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c"),
|
|
x.CreateChild("d")
|
|
}
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(500, 200))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 700), returns: new FullRender(500, 300))
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 300), returns: new Wrap())
|
|
.CheckMeasureResult(new PartialRender(500, 600));
|
|
}
|
|
|
|
[Test]
|
|
public void Measure_ReturnsWrap_WhenPageable_AndFirstChildReturnsWrap()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 100,
|
|
Pageable = true,
|
|
Children = new []
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c")
|
|
}
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new Wrap())
|
|
.CheckMeasureResult(new Wrap());
|
|
}
|
|
|
|
[Test]
|
|
public void Measure_ReturnsWrap_WhenNotPageable_AndAnyChildReturnsPartialRender()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = false,
|
|
Children = new []
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("d"),
|
|
x.CreateChild("e")
|
|
}
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new PartialRender(300, 500))
|
|
.CheckMeasureResult(new Wrap());
|
|
}
|
|
|
|
[Test]
|
|
public void Measure_DoNotApplySpacing_WhenNotPageable_AndChildReturnsNoContent()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = false,
|
|
Children = new []
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c"),
|
|
x.CreateChild("d"),
|
|
x.CreateChild("e")
|
|
}
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new FullRender(Size.Zero))
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 750), returns: new FullRender(Size.Zero))
|
|
.ExpectChildMeasure("d", expectedInput: new Size(500, 750), returns: new FullRender(300, 300))
|
|
.ExpectChildMeasure("e", expectedInput: new Size(500, 400), returns: new FullRender(300, 100))
|
|
.CheckMeasureResult(new FullRender(500, 700));
|
|
}
|
|
|
|
[Test]
|
|
public void MultipleDraw_WhenNotPageable()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = false,
|
|
Children = new []
|
|
{
|
|
x.CreateChild("a")
|
|
}
|
|
})
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.CheckMeasureResult(new FullRender(500, 200))
|
|
|
|
// second measure resets element state
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.CheckMeasureResult(new FullRender(500, 200));
|
|
}
|
|
|
|
[Test]
|
|
public void WhenPageable_AndChildReturnsWrap()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = true,
|
|
Children = new[]
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c")
|
|
}
|
|
})
|
|
|
|
// page 1: measure
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new Wrap())
|
|
.CheckMeasureResult(new PartialRender(500, 200))
|
|
|
|
// page 1: draw
|
|
.DrawElement(new Size(500, 1000))
|
|
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
.ExpectChildDraw("a", new Size(500, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new Wrap())
|
|
|
|
.CheckDrawResult()
|
|
|
|
// // page 2: measure
|
|
.MeasureElement(new Size(500, 900))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 900), returns: new FullRender(300, 100))
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 750), returns: new FullRender(300, 250))
|
|
.CheckMeasureResult(new FullRender(500, 400))
|
|
|
|
// page 2: draw
|
|
.DrawElement(new Size(500, 900))
|
|
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 900), returns: new FullRender(300, 100))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
.ExpectChildDraw("b", new Size(500, 100))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 750), returns: new FullRender(300, 250))
|
|
.ExpectCanvasTranslate(0, 150)
|
|
.ExpectChildDraw("c", new Size(500, 250))
|
|
.ExpectCanvasTranslate(0, -150)
|
|
|
|
.CheckDrawResult();
|
|
}
|
|
|
|
[Test]
|
|
public void Draw_ChildrenArePlacedCorrectly_WhenNotPageable()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = false,
|
|
Children = new[]
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c"),
|
|
x.CreateChild("d")
|
|
}
|
|
})
|
|
.DrawElement(new Size(500, 1000))
|
|
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
.ExpectChildDraw("a", new Size(500, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new FullRender(300, 300))
|
|
.ExpectCanvasTranslate(0, 250)
|
|
.ExpectChildDraw("b", new Size(500, 300))
|
|
.ExpectCanvasTranslate(0, -250)
|
|
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 400), returns: new FullRender(Size.Zero))
|
|
.ExpectCanvasTranslate(0, 600)
|
|
.ExpectChildDraw("c", new Size(500, 0))
|
|
.ExpectCanvasTranslate(0, -600)
|
|
|
|
.ExpectChildMeasure("d", expectedInput: new Size(500, 400), returns: new FullRender(200, 400))
|
|
.ExpectCanvasTranslate(0, 600)
|
|
.ExpectChildDraw("d", new Size(500, 400))
|
|
.ExpectCanvasTranslate(0, -600)
|
|
|
|
.CheckDrawResult();
|
|
}
|
|
|
|
[Test]
|
|
public void WhenPageable_AndChildReturnsPartialRender()
|
|
{
|
|
TestPlan
|
|
.For(x => new Stack
|
|
{
|
|
Spacing = 50,
|
|
Pageable = true,
|
|
Children = new[]
|
|
{
|
|
x.CreateChild("a"),
|
|
x.CreateChild("b"),
|
|
x.CreateChild("c")
|
|
}
|
|
})
|
|
|
|
// page 1: measure
|
|
.MeasureElement(new Size(500, 1000))
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new PartialRender(300, 300))
|
|
.CheckMeasureResult(new PartialRender(500, 550))
|
|
|
|
// page 1: draw
|
|
.DrawElement(new Size(500, 1000))
|
|
|
|
.ExpectChildMeasure("a", expectedInput: new Size(500, 1000), returns: new FullRender(400, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
.ExpectChildDraw("a", new Size(500, 200))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 750), returns: new PartialRender(300, 300))
|
|
.ExpectCanvasTranslate(0, 250)
|
|
.ExpectChildDraw("b", new Size(500, 300))
|
|
.ExpectCanvasTranslate(0, -250)
|
|
|
|
.CheckDrawResult()
|
|
|
|
// // page 2: measure
|
|
.MeasureElement(new Size(500, 900))
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 900), returns: new FullRender(300, 100))
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 750), returns: new FullRender(300, 250))
|
|
.CheckMeasureResult(new FullRender(500, 400))
|
|
|
|
// page 2: draw
|
|
.DrawElement(new Size(500, 900))
|
|
|
|
.ExpectChildMeasure("b", expectedInput: new Size(500, 900), returns: new FullRender(300, 100))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
.ExpectChildDraw("b", new Size(500, 100))
|
|
.ExpectCanvasTranslate(0, 0)
|
|
|
|
.ExpectChildMeasure("c", expectedInput: new Size(500, 750), returns: new FullRender(300, 250))
|
|
.ExpectCanvasTranslate(0, 150)
|
|
.ExpectChildDraw("c", new Size(500, 250))
|
|
.ExpectCanvasTranslate(0, -150)
|
|
|
|
.CheckDrawResult();
|
|
}
|
|
}
|
|
} |