Skip to content

Commit 84f7e2d

Browse files
committed
Add failing test cases for empty geo
This adds failing test cases for parsing, storing and creating new geometric figures.
1 parent 72dcd48 commit 84f7e2d

File tree

2 files changed

+179
-4
lines changed

2 files changed

+179
-4
lines changed

postgis-jdbc-geometry/src/test/java/net/postgis/jdbc/geometry/DatatypesTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
package net.postgis.jdbc.geometry;
2929

3030

31+
import static org.junit.Assert.assertNotNull;
32+
3133
import org.slf4j.Logger;
3234
import org.slf4j.LoggerFactory;
3335
import org.testng.annotations.Test;
@@ -106,4 +108,24 @@ public void testMultiLineString() throws SQLException {
106108
}
107109

108110

109-
}
111+
@Test
112+
public void testCreateAndGetPoints() {
113+
assertNotNull(new LineString().getPoints());
114+
assertNotNull(new MultiLineString().getLines());
115+
assertNotNull(new LinearRing(new Point[0]).getPoints());
116+
assertNotNull(new MultiPoint().getPoints());
117+
assertNotNull(new MultiPolygon().getPolygons());
118+
}
119+
120+
121+
@Test
122+
public void testCreateAndGetPointsEmpty() throws SQLException {
123+
new Point("POINT EMPTY");
124+
new Polygon("POLYGON EMPTY");
125+
new LineString("LINESTRING EMPTY");
126+
new MultiLineString("MULTILINESTRING EMPTY");
127+
new MultiPoint("MULTIPOINT EMPTY");
128+
new MultiPolygon("MULTIPOLYGON EMPTY");
129+
}
130+
131+
}

postgis-jdbc/src/test/java/net/postgis/jdbc/ServerTest.java

Lines changed: 156 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,15 @@
2828
package net.postgis.jdbc;
2929

3030

31-
import net.postgis.tools.testutils.TestContainerController;
31+
import java.sql.Connection;
32+
import java.sql.DatabaseMetaData;
33+
import java.sql.DriverManager;
34+
import java.sql.PreparedStatement;
35+
import java.sql.ResultSet;
36+
import java.sql.SQLException;
37+
import java.sql.Statement;
38+
import java.util.UUID;
39+
3240
import org.slf4j.Logger;
3341
import org.slf4j.LoggerFactory;
3442
import org.testng.Assert;
@@ -37,8 +45,15 @@
3745
import org.testng.annotations.BeforeClass;
3846
import org.testng.annotations.Test;
3947

40-
import java.sql.*;
41-
import java.util.UUID;
48+
import net.postgis.jdbc.geometry.GeometryBuilder;
49+
import net.postgis.jdbc.geometry.LineString;
50+
import net.postgis.jdbc.geometry.LinearRing;
51+
import net.postgis.jdbc.geometry.MultiLineString;
52+
import net.postgis.jdbc.geometry.MultiPoint;
53+
import net.postgis.jdbc.geometry.MultiPolygon;
54+
import net.postgis.jdbc.geometry.Point;
55+
import net.postgis.jdbc.geometry.Polygon;
56+
import net.postgis.tools.testutils.TestContainerController;
4257

4358

4459
public class ServerTest {
@@ -96,6 +111,144 @@ public void testServer() throws Exception {
96111

97112
}
98113

114+
@Test
115+
public void testColumnTypeSafetyNonEmpty1() throws SQLException {
116+
String tableName = "polygraph_" + UUID.randomUUID().toString().replace('-', '_');
117+
118+
String createSQL = "create table " + tableName + " (point geometry(point,4326), polygon geometry(polygon,4326), line_string geometry(linestring,4326), multi_line_string geometry(multilinestring,4326), multi_point geometry(multipoint,4326), multi_polygon geometry(multipolygon,4326));";
119+
String dropSQL = "drop table " + tableName;
120+
121+
statement.execute(createSQL);
122+
123+
final PreparedStatement prep = connection
124+
.prepareStatement("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?, ?, ?)");
125+
prep.setObject(1, new PGgeometryLW(new Point("SRID=4326;POINT(2.8 1.7)")));
126+
prep.setObject(2, new PGgeometryLW(new Polygon("SRID=4326;POLYGON((2 2, 2 -2, -2 -2, -2 2, 2 2))")));
127+
prep.setObject(3, new PGgeometryLW(new LineString("SRID=4326;LINESTRING(0 0, 1 2)")));
128+
prep.setObject(4, new PGgeometryLW(new MultiLineString("SRID=4326;MULTILINESTRING((0 0, 1 2), (1 2, 3 -1))")));
129+
prep.setObject(5, new PGgeometryLW(new MultiPoint("SRID=4326;MULTIPOINT((2 3), (7 8))")));
130+
prep.setObject(6, new PGgeometryLW(new MultiPolygon("SRID=4326;MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))")));
131+
132+
prep.execute();
133+
statement.execute(dropSQL);
134+
}
135+
136+
@Test
137+
public void testColumnTypeSafetyNonEmpty2() throws SQLException {
138+
139+
String tableName = "polygraph_" + UUID.randomUUID().toString().replace('-', '_');
140+
141+
String createSQL = "create table " + tableName + " (point geometry(point,4326), polygon geometry(polygon,4326), line_string geometry(linestring,4326), multi_line_string geometry(multilinestring,4326), multi_point geometry(multipoint,4326), multi_polygon geometry(multipolygon,4326));";
142+
String dropSQL = "drop table " + tableName;
143+
144+
statement.execute(createSQL);
145+
146+
final PreparedStatement prep = connection
147+
.prepareStatement("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?, ?, ?)");
148+
149+
prep.setObject(1, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;POINT(2.8 1.7)")));
150+
prep.setObject(2, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;POLYGON((2 2, 2 -2, -2 -2, -2 2, 2 2))")));
151+
prep.setObject(3, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;LINESTRING(0 0, 1 2)")));
152+
prep.setObject(4, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;MULTILINESTRING((0 0, 1 2), (1 2, 3 -1))")));
153+
prep.setObject(5, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;MULTIPOINT((2 3), (7 8))")));
154+
prep.setObject(6, new PGgeometryLW(
155+
GeometryBuilder.geomFromString("SRID=4326;MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))")
156+
));
157+
158+
prep.execute();
159+
statement.execute(dropSQL);
160+
}
161+
162+
163+
@Test
164+
public void testColumnTypeSafetyEmpty1() throws SQLException {
165+
String tableName = "polygraph_" + UUID.randomUUID().toString().replace('-', '_');
166+
167+
String createSQL = "create table " + tableName + " (point geometry(point,4326), polygon geometry(polygon,4326), line_string geometry(linestring,4326), multi_line_string geometry(multilinestring,4326), multi_point geometry(multipoint,4326), multi_polygon geometry(multipolygon,4326));";
168+
String dropSQL = "drop table " + tableName;
169+
170+
statement.execute(createSQL);
171+
172+
final PreparedStatement prep = connection
173+
.prepareStatement("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?, ?, ?)");
174+
175+
prep.setObject(1, new PGgeometryLW(new Point()));
176+
prep.setObject(2, new PGgeometryLW(new Polygon()));
177+
prep.setObject(3, new PGgeometryLW(new LineString()));
178+
prep.setObject(4, new PGgeometryLW(new MultiLineString()));
179+
prep.setObject(5, new PGgeometryLW(new MultiPoint()));
180+
prep.setObject(6, new PGgeometryLW(new MultiPolygon()));
181+
182+
prep.execute();
183+
statement.execute(dropSQL);
184+
}
185+
186+
187+
@Test
188+
public void testColumnTypeSafetyEmpty2() throws SQLException {
189+
190+
String tableName = "polygraph_" + UUID.randomUUID().toString().replace('-', '_');
191+
192+
String createSQL = "create table " + tableName + " (point geometry(point,4326), polygon geometry(polygon,4326), line_string geometry(linestring,4326), multi_line_string geometry(multilinestring,4326), multi_point geometry(multipoint,4326), multi_polygon geometry(multipolygon,4326));";
193+
String dropSQL = "drop table " + tableName;
194+
195+
statement.execute(createSQL);
196+
197+
final PreparedStatement prep = connection
198+
.prepareStatement("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?, ?, ?)");
199+
200+
prep.setObject(1, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;POINT EMPTY")));
201+
prep.setObject(2, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;POLYGON EMPTY")));
202+
prep.setObject(3, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;LINESTRING EMPTY")));
203+
prep.setObject(4, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;MULTILINESTRING EMPTY")));
204+
prep.setObject(5, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;MULTIPOINT EMPTY")));
205+
prep.setObject(6, new PGgeometryLW(GeometryBuilder.geomFromString("SRID=4326;MULTIPOLYGON EMPTY")));
206+
207+
prep.execute();
208+
statement.execute(dropSQL);
209+
}
210+
211+
212+
@Test
213+
public void testColumnTypeSafetyEmpty3() throws SQLException {
214+
String tableName = "polygraph_" + UUID.randomUUID().toString().replace('-', '_');
215+
216+
String createSQL = "create table " + tableName + " (point geometry(point,4326), polygon geometry(polygon,4326), line_string geometry(linestring,4326), multi_line_string geometry(multilinestring,4326), multi_point geometry(multipoint,4326), multi_polygon geometry(multipolygon,4326));";
217+
String dropSQL = "drop table " + tableName;
218+
219+
statement.execute(createSQL);
220+
221+
final PreparedStatement prep = connection
222+
.prepareStatement("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?, ?, ?)");
223+
224+
final Point point = new Point();
225+
point.setSrid(4326);
226+
prep.setObject(1, new PGgeometryLW(point));
227+
228+
final Polygon polygon = new Polygon(new LinearRing[0]);
229+
polygon.setSrid(4326);
230+
prep.setObject(2, new PGgeometryLW(polygon));
231+
232+
final LineString lineString = new LineString(new Point[0]);
233+
lineString.setSrid(4326);
234+
prep.setObject(3, new PGgeometryLW(lineString));
235+
236+
final MultiLineString multiLineString = new MultiLineString(new LineString[0]);
237+
multiLineString.setSrid(4326);
238+
prep.setObject(4, new PGgeometryLW(multiLineString));
239+
240+
final MultiPoint multiPoint = new MultiPoint(new Point[0]);
241+
multiPoint.setSrid(4326);
242+
prep.setObject(5, new PGgeometryLW(multiPoint));
243+
244+
final MultiPolygon multiPolygon = new MultiPolygon(new Polygon[0]);
245+
multiPolygon.setSrid(4326);
246+
prep.setObject(6, new PGgeometryLW(multiPolygon));
247+
248+
prep.execute();
249+
statement.execute(dropSQL);
250+
}
251+
99252

100253
@BeforeClass
101254
public void initJdbcConnection(ITestContext ctx) throws Exception {

0 commit comments

Comments
 (0)