@@ -982,3 +982,58 @@ TEST (PathTests, AppendPathWithTransformComplex)
982982 EXPECT_FALSE (p1.getBounds ().isEmpty ());
983983 EXPECT_GT (p1.size (), 0 );
984984}
985+
986+ TEST (PathTests, FillRule_DefaultIsNonZeroWinding)
987+ {
988+ // Test that paths default to non-zero winding rule
989+ Path p;
990+ EXPECT_TRUE (p.isUsingNonZeroWinding ());
991+ }
992+
993+ TEST (PathTests, FillRule_SetToEvenOdd)
994+ {
995+ // Test setting to even-odd rule
996+ Path p;
997+ p.setUsingNonZeroWinding (false );
998+ EXPECT_FALSE (p.isUsingNonZeroWinding ());
999+ }
1000+
1001+ TEST (PathTests, FillRule_SetToNonZeroWinding)
1002+ {
1003+ // Test setting to non-zero winding rule
1004+ Path p;
1005+ p.setUsingNonZeroWinding (false );
1006+ p.setUsingNonZeroWinding (true );
1007+ EXPECT_TRUE (p.isUsingNonZeroWinding ());
1008+ }
1009+
1010+ TEST (PathTests, FillRule_PersistsAfterPathOperations)
1011+ {
1012+ // Test that fill rule persists after adding shapes
1013+ Path p;
1014+ p.setUsingNonZeroWinding (false );
1015+
1016+ p.addRectangle (0 , 0 , 10 , 10 );
1017+ EXPECT_FALSE (p.isUsingNonZeroWinding ());
1018+
1019+ p.addEllipse (5 , 5 , 8 , 8 );
1020+ EXPECT_FALSE (p.isUsingNonZeroWinding ());
1021+
1022+ p.lineTo (100 , 100 );
1023+ EXPECT_FALSE (p.isUsingNonZeroWinding ());
1024+ }
1025+
1026+ TEST (PathTests, FillRule_IndependentBetweenPaths)
1027+ {
1028+ // Test that each path maintains its own fill rule
1029+ Path p1;
1030+ Path p2;
1031+
1032+ p1.setUsingNonZeroWinding (false );
1033+ EXPECT_FALSE (p1.isUsingNonZeroWinding ());
1034+ EXPECT_TRUE (p2.isUsingNonZeroWinding ()); // p2 should still be default
1035+
1036+ p2.setUsingNonZeroWinding (true );
1037+ EXPECT_FALSE (p1.isUsingNonZeroWinding ()); // p1 should remain even-odd
1038+ EXPECT_TRUE (p2.isUsingNonZeroWinding ());
1039+ }
0 commit comments