This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit f51c5514629837509983e71111d98a12e276b28c Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Wed Dec 7 14:05:10 2022 +0100 Fix test failure when running tests on PostgreSQL without EPSG dataset. --- .../report/CoordinateOperationMethods.java | 4 ++-- .../internal/sql/feature/GeometryGetterTest.java | 19 ++++++++++++++----- .../sis/internal/sql/postgis/PostgresTest.java | 21 ++++++++++++++++----- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java index ac5e31516f..22313e785d 100644 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java @@ -68,7 +68,7 @@ import org.opengis.metadata.Identifier; * first, no HTML characters to escape in non-EPSG identifiers, etc.).</p> * * @author Martin Desruisseaux (Geomatys) - * @version 1.1 + * @version 1.3 * @since 0.6 * @module */ @@ -556,7 +556,7 @@ public strictfp class CoordinateOperationMethods extends HTMLGenerator { if (id == null) { id = method.getName().getCode(); } - return id.replace(" ", "_"); + return id.replace(" ", "_").replace("(", "").replace(")", ""); } /** diff --git a/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/feature/GeometryGetterTest.java b/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/feature/GeometryGetterTest.java index 95ccb22d9b..3657071482 100644 --- a/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/feature/GeometryGetterTest.java +++ b/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/feature/GeometryGetterTest.java @@ -22,6 +22,7 @@ import java.sql.Statement; import java.sql.ResultSet; import org.opengis.util.FactoryException; import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.NoSuchAuthorityCodeException; import org.apache.sis.internal.feature.Geometries; import org.apache.sis.internal.feature.GeometryWrapper; import org.apache.sis.internal.feature.GeometryWithCRS; @@ -43,7 +44,7 @@ import static org.junit.Assert.*; * * @author Alexis Manin (Geomatys) * @author Martin Desruisseaux (Geomatys) - * @version 1.2 + * @version 1.3 * @since 1.1 * @module */ @@ -144,8 +145,10 @@ public strictfp final class GeometryGetterTest extends TestCase { final Geometry geometry = (Geometry) reader.getValue(fromSridToCRS, results, 2); final GeometryWrapper<?> expected = GF.parseWKT(wkt); assertEquals("WKT and WKB parsings gave different results.", expected.implementation(), geometry); - assertSame("SRID", getExpectedCRS(results.getInt(3)), - GF.castOrWrap(geometry).getCoordinateReferenceSystem()); + final CoordinateReferenceSystem expectedCRS = getExpectedCRS(results.getInt(3)); + if (expectedCRS != null) { + assertSame("SRID", expectedCRS, GF.castOrWrap(geometry).getCoordinateReferenceSystem()); + } } } } @@ -157,14 +160,20 @@ public strictfp final class GeometryGetterTest extends TestCase { * used for the test. Other databases may have different mapping. * * @param srid the SRID for which to get the CRS. - * @return the CRS for the given SRID. + * @return the CRS for the given SRID, or {@code null} if not available. * @throws FactoryException if an error occurred while fetching the CRS. */ public static CoordinateReferenceSystem getExpectedCRS(final int srid) throws FactoryException { + final String code; switch (srid) { - case 3395: return CRS.forCode("EPSG:3395"); + case 3395: code = "EPSG:3395"; break; case 4326: return CommonCRS.WGS84.normalizedGeographic(); default: throw new AssertionError(srid); } + try { + return CRS.forCode(code); + } catch (NoSuchAuthorityCodeException ignore) { + return null; // No EPSG database available. + } } } diff --git a/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/postgis/PostgresTest.java b/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/postgis/PostgresTest.java index abcf98d4f1..0c86f82300 100644 --- a/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/postgis/PostgresTest.java +++ b/storage/sis-sqlstore/src/test/java/org/apache/sis/internal/sql/postgis/PostgresTest.java @@ -26,6 +26,8 @@ import java.lang.reflect.Method; import java.util.stream.Stream; import org.opengis.geometry.Envelope; import org.opengis.util.FactoryException; +import org.opengis.referencing.crs.ProjectedCRS; +import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.apache.sis.setup.OptionKey; import org.apache.sis.setup.GeometryLibrary; import org.apache.sis.storage.FeatureSet; @@ -39,7 +41,6 @@ import org.apache.sis.internal.storage.io.ChannelDataInput; import org.apache.sis.internal.sql.feature.BinaryEncoding; import org.apache.sis.internal.sql.feature.GeometryGetterTest; import org.apache.sis.internal.feature.jts.JTS; -import org.apache.sis.referencing.CRS; import org.apache.sis.referencing.CommonCRS; import org.apache.sis.referencing.crs.HardCodedCRS; import org.apache.sis.test.sql.TestDatabase; @@ -55,7 +56,7 @@ import org.opengis.feature.Feature; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Geometry; -import static org.junit.Assert.*; +import static org.opengis.test.Assert.*; /** @@ -63,7 +64,7 @@ import static org.junit.Assert.*; * * @author Alexis Manin (Geomatys) * @author Martin Desruisseaux (Geomatys) - * @version 1.2 + * @version 1.3 * @since 1.1 * @module */ @@ -128,7 +129,12 @@ public final strictfp class PostgresTest extends TestCase { */ private static void testInfoStatements(final ExtendedInfo info) throws Exception { assertEquals("findSRID", 4326, info.findSRID(HardCodedCRS.WGS84)); - assertSame("fetchCRS", CRS.forCode("EPSG:3395"), info.fetchCRS(3395)); + final CoordinateReferenceSystem expected = GeometryGetterTest.getExpectedCRS(3395); + final CoordinateReferenceSystem actual = info.fetchCRS(3395); + assertInstanceOf("findSRID", ProjectedCRS.class, actual); + if (expected != null) { + assertSame("fetchCRS", expected, actual); + } } /** @@ -192,7 +198,12 @@ public final strictfp class PostgresTest extends TestCase { default: throw new AssertionError(filename); } try { - assertEquals(GeometryGetterTest.getExpectedCRS(geomSRID), JTS.getCoordinateReferenceSystem(geometry)); + final CoordinateReferenceSystem expected = GeometryGetterTest.getExpectedCRS(geomSRID); + final CoordinateReferenceSystem actual = JTS.getCoordinateReferenceSystem(geometry); + assertNotNull(actual); + if (expected != null) { + assertEquals(expected, actual); + } } catch (FactoryException e) { throw new AssertionError(e); }