Skip to content

Commit 731b74b

Browse files
committed
Add test case for the bad geometry
1 parent 0bc5b27 commit 731b74b

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

common/src/test/java/net/rptools/lib/GeometryUtilTest.java

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)