From 49fb6dadb3981ecb327b6e47bec903b2b8383dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zi=C4=85bek?= Date: Mon, 26 Jul 2021 12:26:31 +0200 Subject: [PATCH] Improved null safety. Fixed tests --- QuestPDF.UnitTests/PageBreakTests.cs | 2 +- QuestPDF.UnitTests/TestEngine/TestPlan.cs | 3 +++ QuestPDF/Drawing/DocumentGenerator.cs | 2 +- QuestPDF/Elements/Decoration.cs | 4 ++-- QuestPDF/Elements/PageNumber.cs | 2 +- QuestPDF/Elements/Stack.cs | 4 ++-- QuestPDF/Infrastructure/ContainerElement.cs | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/QuestPDF.UnitTests/PageBreakTests.cs b/QuestPDF.UnitTests/PageBreakTests.cs index a0aec42..80e123c 100644 --- a/QuestPDF.UnitTests/PageBreakTests.cs +++ b/QuestPDF.UnitTests/PageBreakTests.cs @@ -16,7 +16,7 @@ namespace QuestPDF.UnitTests .For(x => new PageBreak()) .MeasureElement(new Size(400, 300)) - .CheckMeasureResult(new PartialRender(400, 300)) + .CheckMeasureResult(new PartialRender(Size.Zero)) .DrawElement(new Size(400, 300)) .CheckDrawResult() diff --git a/QuestPDF.UnitTests/TestEngine/TestPlan.cs b/QuestPDF.UnitTests/TestEngine/TestPlan.cs index 713f066..6c3ffff 100644 --- a/QuestPDF.UnitTests/TestEngine/TestPlan.cs +++ b/QuestPDF.UnitTests/TestEngine/TestPlan.cs @@ -205,6 +205,8 @@ namespace QuestPDF.UnitTests.TestEngine public TestPlan CheckMeasureResult(ISpacePlan expected) { + Element.HandleVisitor(x => x?.Initialize(null, Canvas)); + var actual = Element.Measure(OperationInput); Assert.AreEqual(expected.GetType(), actual.GetType()); @@ -223,6 +225,7 @@ namespace QuestPDF.UnitTests.TestEngine public TestPlan CheckDrawResult() { + Element.HandleVisitor(x => x?.Initialize(null, Canvas)); Element.Draw(OperationInput); return this; } diff --git a/QuestPDF/Drawing/DocumentGenerator.cs b/QuestPDF/Drawing/DocumentGenerator.cs index 577c9e1..aa81d4f 100644 --- a/QuestPDF/Drawing/DocumentGenerator.cs +++ b/QuestPDF/Drawing/DocumentGenerator.cs @@ -47,7 +47,7 @@ namespace QuestPDF.Drawing private static void RenderPass(PageContext pageContext, TCanvas canvas, Container content, DocumentMetadata documentMetadata) where TCanvas : ICanvas, IRenderingCanvas { - content.HandleVisitor(x => x.Initialize(pageContext, canvas)); + content.HandleVisitor(x => x?.Initialize(pageContext, canvas)); content.HandleVisitor(x => (x as IStateResettable)?.ResetState()); canvas.BeginDocument(); diff --git a/QuestPDF/Elements/Decoration.cs b/QuestPDF/Elements/Decoration.cs index 5926253..d5774d9 100644 --- a/QuestPDF/Elements/Decoration.cs +++ b/QuestPDF/Elements/Decoration.cs @@ -19,8 +19,8 @@ namespace QuestPDF.Elements internal override void HandleVisitor(Action visit) { - DecorationElement.HandleVisitor(visit); - ContentElement.HandleVisitor(visit); + DecorationElement?.HandleVisitor(visit); + ContentElement?.HandleVisitor(visit); base.HandleVisitor(visit); } diff --git a/QuestPDF/Elements/PageNumber.cs b/QuestPDF/Elements/PageNumber.cs index 008604c..cc1084f 100644 --- a/QuestPDF/Elements/PageNumber.cs +++ b/QuestPDF/Elements/PageNumber.cs @@ -19,7 +19,7 @@ namespace QuestPDF.Elements internal override void HandleVisitor(Action visit) { - TextElement.HandleVisitor(visit); + TextElement?.HandleVisitor(visit); base.HandleVisitor(visit); } diff --git a/QuestPDF/Elements/Stack.cs b/QuestPDF/Elements/Stack.cs index 34c20d2..43227b0 100644 --- a/QuestPDF/Elements/Stack.cs +++ b/QuestPDF/Elements/Stack.cs @@ -19,8 +19,8 @@ namespace QuestPDF.Elements internal override void HandleVisitor(Action visit) { - First.HandleVisitor(visit); - Second.HandleVisitor(visit); + First?.HandleVisitor(visit); + Second?.HandleVisitor(visit); base.HandleVisitor(visit); } diff --git a/QuestPDF/Infrastructure/ContainerElement.cs b/QuestPDF/Infrastructure/ContainerElement.cs index 27b1a2e..e62fc99 100644 --- a/QuestPDF/Infrastructure/ContainerElement.cs +++ b/QuestPDF/Infrastructure/ContainerElement.cs @@ -17,7 +17,7 @@ namespace QuestPDF.Infrastructure internal override void HandleVisitor(Action visit) { base.HandleVisitor(visit); - Child.HandleVisitor(visit); + Child?.HandleVisitor(visit); } internal override ISpacePlan Measure(Size availableSpace)