Browse Source

Extend the layout testing engine to check if the canvas matrix has been correctly restored after drawing the tested element

Marcin Ziąbek 3 months ago
parent
commit
9ce8f7f6c6
1 changed files with 5 additions and 0 deletions
  1. 5 0
      Source/QuestPDF.LayoutTests/TestEngine/ElementObserver.cs

+ 5 - 0
Source/QuestPDF.LayoutTests/TestEngine/ElementObserver.cs

@@ -26,6 +26,11 @@ internal class ElementObserver : ContainerElement
             Size = ObserverId == "$document" ? Child.Measure(availableSpace) : availableSpace
             Size = ObserverId == "$document" ? Child.Measure(availableSpace) : availableSpace
         });
         });
         
         
+        var matrixBeforeDraw = Canvas.GetCurrentMatrix().ToMatrix4x4();
         base.Draw(availableSpace);
         base.Draw(availableSpace);
+        var matrixAfterDraw = Canvas.GetCurrentMatrix().ToMatrix4x4();
+        
+        if (matrixAfterDraw != matrixBeforeDraw)
+            throw new InvalidOperationException("Canvas state was not restored after drawing operation.");
     }
     }
 }
 }