| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.sis.referencing.factory; |
| |
| import org.opengis.util.FactoryException; |
| import org.opengis.referencing.IdentifiedObject; |
| import org.apache.sis.internal.system.Loggers; |
| import org.apache.sis.util.CharSequences; |
| |
| // Test imports |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.After; |
| import org.junit.AfterClass; |
| import org.junit.BeforeClass; |
| import org.junit.FixMethodOrder; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.JUnit4; |
| import org.junit.runners.MethodSorters; |
| import org.apache.sis.test.DependsOn; |
| import org.apache.sis.test.LoggingWatcher; |
| |
| |
| /** |
| * Tests {@link org.apache.sis.referencing.factory.sql.EPSGDataAccess#createCoordinateReferenceSystem(String)} |
| * for geodetic (geographic or geocentric) CRS. |
| * This is part of <cite>Geospatial Integrity of Geoscience Software</cite> (GIGS) tests implemented in GeoAPI. |
| * |
| * <div class="note"><b>Note:</b> |
| * this test is defined in this package instead than in the {@code sql} sub-package because of the need to access |
| * package-private methods in {@link ConcurrentAuthorityFactory}, and for keeping all GIGS tests together.</div> |
| * |
| * @author Martin Desruisseaux (Geomatys) |
| * @version 0.7 |
| * @since 0.7 |
| * @module |
| */ |
| @DependsOn({ |
| GIGS2002.class, // Ellipsoids created from EPSG codes |
| GIGS2003.class, // Prime meridians created from EPSG codes |
| GIGS3004.class // Geodetic datums created from properties |
| }) |
| @RunWith(JUnit4.class) |
| @FixMethodOrder(MethodSorters.JVM) // Intentionally want some randomness |
| public final strictfp class GIGS2004 extends org.opengis.test.referencing.gigs.GIGS2004 { |
| /** |
| * A JUnit {@link Rule} for listening to log events. This field is public because JUnit requires us to |
| * do so, but should be considered as an implementation details (it should have been a private field). |
| */ |
| @Rule |
| public final LoggingWatcher loggings = new LoggingWatcher(Loggers.CRS_FACTORY); |
| |
| /** |
| * Creates a new test using the default authority factory. |
| */ |
| public GIGS2004() { |
| super(TestFactorySource.factory, TestFactorySource.factory); |
| } |
| |
| /** |
| * Creates the factory to use for all tests in this class. |
| * |
| * @throws FactoryException if an error occurred while creating the factory. |
| */ |
| @BeforeClass |
| public static void createFactory() throws FactoryException { |
| TestFactorySource.createFactory(); |
| } |
| |
| /** |
| * Forces release of JDBC connections after the tests in this class. |
| * |
| * @throws FactoryException if an error occurred while closing the connections. |
| */ |
| @AfterClass |
| public static void close() throws FactoryException { |
| TestFactorySource.close(); |
| } |
| |
| /** |
| * Removes the accented characters from the object name, so it can be compared against the expected name. |
| * |
| * @param object the object from which to get a name than can be verified against the expected name. |
| * @return the name of the given object, eventually modified in order to match the expected name. |
| */ |
| @Override |
| protected String getVerifiableName(final IdentifiedObject object) { |
| return CharSequences.toASCII(super.getVerifiableName(object)).toString(); |
| } |
| |
| /** |
| * Overrides the GeoAPI test for verifying the log messages emitted during the construction of deprecated objects. |
| * |
| * @throws FactoryException if an error occurred while creating the object. |
| */ |
| @Test |
| @Override |
| public void testNAD27_Michigan() throws FactoryException { |
| super.testNAD27_Michigan(); |
| loggings.assertNextLogContains("EPSG:6268"); // Datum replaced by 6267 |
| loggings.skipNextLogIfContains("EPSG:7009"); // Ellipsoid replaced by 7008 (may have been created by GIGS2002) |
| loggings.assertNextLogContains("EPSG:4268"); // CRS replaced by 4267 |
| } |
| |
| /** |
| * Overrides the GeoAPI test for verifying the log messages emitted during the construction of deprecated objects. |
| * |
| * @throws FactoryException if an error occurred while creating the object. |
| */ |
| @Test |
| @Override |
| public void testPopularVisualisation() throws FactoryException { |
| super.testPopularVisualisation(); |
| loggings.assertNextLogContains("EPSG:6055"); |
| loggings.skipNextLogIfContains("EPSG:7059"); // Ellipsoid may have been created by GIGS2002. |
| loggings.assertNextLogContains("EPSG:4055"); |
| } |
| |
| /** |
| * Verifies that no unexpected warning has been emitted in this test. |
| */ |
| @After |
| public void assertNoUnexpectedLog() { |
| loggings.assertNoUnexpectedLog(); |
| } |
| } |