@@ -835,6 +835,109 @@ private static Iterable<Arguments> areaProvider() {
835835 }
836836 // endregion
837837
838+ // region A square "donut" with a defective bump-out at the top-right corner.
839+ {
840+ final var path = new Path2D .Double ();
841+ path .moveTo (1800.0000000000000000 , 2000.0000000000000000 );
842+ path .lineTo (1800.0000000000000000 , 2100.0000000000000000 );
843+ path .lineTo (1700.0000000000000000 , 2100.0000000000000000 );
844+ path .lineTo (1700.0000000000000000 , 2000.0000000000000000 );
845+ path .closePath ();
846+
847+ path .moveTo (1900.0000000000000000 , 1900.0000000000000000 );
848+ path .lineTo (1600.0000000000000000 , 1900.0000000000000000 );
849+ path .lineTo (1600.0000000000000000 , 2200.0000000000000000 );
850+ path .lineTo (1900.0000000000000000 , 2200.0000000000000000 );
851+ path .lineTo (1900.0000000000000000 , 2000.0000000000000000 );
852+ path .lineTo (1991.8686523437500000 , 2000.0000000000000000 );
853+ path .lineTo (1991.9971923828125000 , 1998.3947753906250000 );
854+ path .lineTo (1991.2067871093750000 , 1991.4079589843750000 );
855+ path .lineTo (1990.7553710937500000 , 1984.2075195312500000 );
856+ path .lineTo (1990.1141357421875000 , 1981.7492675781250000 );
857+ path .lineTo (1989.8403320312500000 , 1979.3294677734375000 );
858+ path .lineTo (1987.7099609375000000 , 1972.5334472656250000 );
859+ path .lineTo (1985.9122314453125000 , 1965.6418457031250000 );
860+ path .lineTo (1984.8612060546875000 , 1963.4451904296875000 );
861+ path .lineTo (1984.1013183593750000 , 1961.0209960937500000 );
862+ path .lineTo (1980.6657714843750000 , 1954.6768798828125000 );
863+ path .lineTo (1977.6309814453125000 , 1948.3341064453125000 );
864+ path .lineTo (1976.1545410156250000 , 1946.3464355468750000 );
865+ path .lineTo (1974.8978271484375000 , 1944.0256347656250000 );
866+ path .lineTo (1970.4443359375000000 , 1938.6584472656250000 );
867+ path .lineTo (1966.1066894531250000 , 1932.8183593750000000 );
868+ path .lineTo (1964.0657958984375000 , 1930.9709472656250000 );
869+ path .lineTo (1962.3472900390625000 , 1928.8999023437500000 );
870+ path .lineTo (1957.2095947265625000 , 1924.7651367187500000 );
871+ path .lineTo (1951.5350341796875000 , 1919.6286621093750000 );
872+ path .lineTo (1948.8482666015625000 , 1918.0358886718750000 );
873+ path .lineTo (1948.2611083984375000 , 1917.5633544921875000 );
874+ path .lineTo (1948.2611055629925000 , 1917.5633569530470000 );
875+ path .lineTo (1948.2611055629923000 , 1917.5633569530470000 );
876+ path .lineTo (1946.5672607421875000 , 1916.2001953125000000 );
877+ path .lineTo (1945.5327255706209000 , 1915.6659069632760000 );
878+ path .lineTo (1945.5327231053059000 , 1915.6659038816322000 );
879+ path .lineTo (1945.5327231053063000 , 1915.6659038816322000 );
880+ path .lineTo (1940.7324218750000000 , 1913.1867675781250000 );
881+ path .lineTo (1940.7324147182750000 , 1913.1867740816188000 );
882+ path .lineTo (1940.7324147182755000 , 1913.1867740816188000 );
883+ path .lineTo (1940.2384033203125000 , 1912.9316406250000000 );
884+ path .lineTo (1934.1110839843750000 , 1909.2990722656250000 );
885+ path .lineTo (1914.0823129507212000 , 1900.0000000000000000 );
886+ path .closePath ();
887+
888+ final var area = new Area (path );
889+
890+ final var polygon =
891+ createPrecisePolygon (
892+ new Coordinate [] {
893+ new Coordinate (1900 , 2200 ),
894+ new Coordinate (1900 , 2000 ),
895+ new Coordinate (1991.86865 , 2000 ),
896+ new Coordinate (1991.99719 , 1998.39478 ),
897+ new Coordinate (1991.20679 , 1991.40796 ),
898+ new Coordinate (1990.75537 , 1984.20752 ),
899+ new Coordinate (1990.11414 , 1981.74927 ),
900+ new Coordinate (1989.84033 , 1979.32947 ),
901+ new Coordinate (1987.70996 , 1972.53345 ),
902+ new Coordinate (1985.91223 , 1965.64185 ),
903+ new Coordinate (1984.86121 , 1963.44519 ),
904+ new Coordinate (1984.10132 , 1961.021 ),
905+ new Coordinate (1980.66577 , 1954.67688 ),
906+ new Coordinate (1977.63098 , 1948.33411 ),
907+ new Coordinate (1976.15454 , 1946.34644 ),
908+ new Coordinate (1974.89783 , 1944.02563 ),
909+ new Coordinate (1970.44434 , 1938.65845 ),
910+ new Coordinate (1966.10669 , 1932.81836 ),
911+ new Coordinate (1964.0658 , 1930.97095 ),
912+ new Coordinate (1962.34729 , 1928.8999 ),
913+ new Coordinate (1957.20959 , 1924.76514 ),
914+ new Coordinate (1951.53503 , 1919.62866 ),
915+ new Coordinate (1948.84827 , 1918.03589 ),
916+ new Coordinate (1948.26111 , 1917.56336 ),
917+ new Coordinate (1946.56726 , 1916.2002 ),
918+ new Coordinate (1945.53273 , 1915.66591 ),
919+ new Coordinate (1945.53272 , 1915.6659 ),
920+ new Coordinate (1940.73242 , 1913.18677 ),
921+ new Coordinate (1940.73241 , 1913.18677 ),
922+ new Coordinate (1940.2384 , 1912.93164 ),
923+ new Coordinate (1934.11108 , 1909.29907 ),
924+ new Coordinate (1914.08231 , 1900 ),
925+ new Coordinate (1600 , 1900 ),
926+ new Coordinate (1600 , 2200 ),
927+ new Coordinate (1900 , 2200 ),
928+ },
929+ new Coordinate [] {
930+ new Coordinate (1700 , 2100 ),
931+ new Coordinate (1700 , 2000 ),
932+ new Coordinate (1800 , 2000 ),
933+ new Coordinate (1800 , 2100 ),
934+ new Coordinate (1700 , 2100 ),
935+ });
936+
937+ argumentsList .add (argumentSet ("Point-like reduced geometry" , area , List .of (polygon )));
938+ }
939+ // endregion
940+
838941 return argumentsList ;
839942 }
840943
0 commit comments