From f751ff1af35c87291a0309cd4e4120cebe13f29d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 17 Feb 2014 00:07:40 +0200 Subject: [PATCH] Add tests #631 --- .../java/com/mysema/query/Connections.java | 17 ++---- .../com/mysema/query/ConnectionsTest.java | 17 ++++++ .../java/com/mysema/query/SpatialBase.java | 53 ++++++++++++++++--- 3 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 querydsl-sql/src/test/java/com/mysema/query/ConnectionsTest.java diff --git a/querydsl-sql/src/test/java/com/mysema/query/Connections.java b/querydsl-sql/src/test/java/com/mysema/query/Connections.java index 27a29beed..5e2a99e36 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/Connections.java +++ b/querydsl-sql/src/test/java/com/mysema/query/Connections.java @@ -200,7 +200,7 @@ public final class Connections { .execute(); } - private static Map getSpatialData() { + public static Map getSpatialData() { Map m = Maps.newHashMap(); // point m.put(1, "POINT (2 2)"); @@ -226,25 +226,16 @@ public final class Connections { "((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), " + "(30 20, 20 15, 20 25, 30 20)))"); + // XXX POLYHEDRALSURFACE not supported + /* GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) - POINT ZM (1 1 5 60) - POINT M (1 1 80) - POINT EMPTY - MULTIPOLYGON EMPTY CIRCULARSTRING(1 5, 6 2, 7 3) COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1)) CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0)) MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2)) TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0)) TIN (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0))) - POLYHEDRALSURFACE Z ( - ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), - ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)), - ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), - ((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)), - ((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)), - ((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1)) - )*/ + */ return m; } diff --git a/querydsl-sql/src/test/java/com/mysema/query/ConnectionsTest.java b/querydsl-sql/src/test/java/com/mysema/query/ConnectionsTest.java new file mode 100644 index 000000000..78a8cfa6e --- /dev/null +++ b/querydsl-sql/src/test/java/com/mysema/query/ConnectionsTest.java @@ -0,0 +1,17 @@ +package com.mysema.query; + +import static org.junit.Assert.assertNotNull; + +import org.geolatte.geom.codec.Wkt; +import org.junit.Test; + +public class ConnectionsTest { + + @Test + public void Valid_Wkt() { + for (String wkt : Connections.getSpatialData().values()) { + assertNotNull(Wkt.newWktDecoder(Wkt.Dialect.POSTGIS_EWKT_1).decode(wkt)); + } + } + +} diff --git a/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java b/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java index 3ee68ad74..016997351 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java +++ b/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java @@ -32,6 +32,7 @@ import com.mysema.query.sql.spatial.QShapes; import com.mysema.query.sql.spatial.Shapes; import com.mysema.query.types.ConstantImpl; import com.mysema.query.types.Expression; +import com.mysema.testutil.ExcludeIn; public class SpatialBase extends AbstractBaseTest { @@ -68,6 +69,43 @@ public class SpatialBase extends AbstractBaseTest { return query().from(shapes).where(shapes.id.between(14, 15)); } + @Test // FIXME, maybe use enum as the type ?!? + @ExcludeIn(H2) + public void GeometryType() { + List results = query().from(shapes).list(shapes.geometry, shapes.geometry.geometryType()); + assertFalse(results.isEmpty()); + for (Tuple row : results) { + assertEquals( + row.get(shapes.geometry).getGeometryType().name(), + row.get(shapes.geometry.geometryType())); + } + } + + @Test + public void AsText() { + List results = query().from(shapes).list(shapes.geometry, shapes.geometry.asText()); + assertFalse(results.isEmpty()); + for (Tuple row : results) { + if (!(row.get(shapes.geometry) instanceof MultiPoint)) { + assertEquals( + row.get(shapes.geometry).asText().replace(" ", ""), + row.get(shapes.geometry.asText()).replace(" ", "")); + } + } + } + + @Test + @ExcludeIn(H2) + public void Point_X_Y() { + PointPath point = new PointPath(Point.class, shapes, "geometry"); + List results = withPoints().list(point, point.x(), point.y()); + assertFalse(results.isEmpty()); + for (Tuple row : results) { + assertEquals(Double.valueOf(row.get(point).getX()), row.get(point.x())); + assertEquals(Double.valueOf(row.get(point).getY()), row.get(point.y())); + } + } + @Test public void Point_Instances() { List results = withPoints().list(shapes); @@ -260,7 +298,7 @@ public class SpatialBase extends AbstractBaseTest { // polygon specific add(expressions, polygon.exterorRing(), H2); add(expressions, polygon.numInteriorRing(), H2); - add(expressions, polygon.interiorRingN(0), H2); + add(expressions, polygon.interiorRingN(1), H2); for (Expression expr : expressions) { boolean logged = false; @@ -289,7 +327,7 @@ public class SpatialBase extends AbstractBaseTest { add(expressions, multipoint.isSimple()); // multipoint specific add(expressions, multipoint.numGeometries(), H2); - add(expressions, multipoint.geometryN(0), H2); + add(expressions, multipoint.geometryN(1), H2); for (Expression expr : expressions) { boolean logged = false; @@ -316,9 +354,12 @@ public class SpatialBase extends AbstractBaseTest { add(expressions, multilinestring.geometryType(), H2); add(expressions, multilinestring.isEmpty()); add(expressions, multilinestring.isSimple()); - // multipoint specific + // multicurve specific + add(expressions, multilinestring.isClosed(), H2); + add(expressions, multilinestring.length(), H2); + // multilinestring specific add(expressions, multilinestring.numGeometries(), H2); - add(expressions, multilinestring.geometryN(0), H2); + add(expressions, multilinestring.geometryN(1), H2); for (Expression expr : expressions) { boolean logged = false; @@ -345,9 +386,9 @@ public class SpatialBase extends AbstractBaseTest { add(expressions, multipolygon.geometryType(), H2); add(expressions, multipolygon.isEmpty()); add(expressions, multipolygon.isSimple()); - // multipoint specific + // multipolygon specific add(expressions, multipolygon.numGeometries(), H2); - add(expressions, multipolygon.geometryN(0), H2); + add(expressions, multipolygon.geometryN(1), H2); for (Expression expr : expressions) { boolean logged = false;