/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2004-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.referencing.factory.epsg; import java.util.Collection; import org.opengis.referencing.FactoryException; import org.opengis.referencing.ReferenceIdentifier; import org.opengis.referencing.crs.ProjectedCRS; import org.opengis.referencing.crs.GeographicCRS; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.opengis.referencing.crs.CRSAuthorityFactory; import org.geotools.referencing.CRS; import org.geotools.referencing.NamedIdentifier; import org.geotools.metadata.iso.citation.Citations; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Tests {@link FactoryUsingWKT} as a fallback after {@link DefaultFactory}. * This method performs the tests through the {@link CRS#decode} method. * * * @source $URL$ * @version $Id$ * @author Jody Garnett * @author Martin Desruisseaux */ public class EpsgFallbackTest extends TestCase { /** * Returns the test suite. */ public static Test suite() { return new TestSuite(EpsgFallbackTest.class); } /** * Run the test from the command line. * Options: {@code -verbose}. * * @param args the command line arguments. */ public static void main(final String[] args) { junit.textui.TestRunner.run(suite()); } /** * Creates a test case with the specified name. */ public EpsgFallbackTest(final String name) { super(name); } /** * A random CRS for fun. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test26910() throws FactoryException { final String code = "EPSG:26910"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof ProjectedCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * UDIG requires this to work. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test4326() throws FactoryException { final String code = "EPSG:4326"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof GeographicCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * UDIG requires this to work. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test4269() throws FactoryException { final String code = "EPSG:4269"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof GeographicCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * UDIG requires this to work. * This CRS is defined in {@code unnamed.properties}. */ public void test42102() throws FactoryException { final String code = "EPSG:42102"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof ProjectedCRS); assertSame(crs, CRS.decode(code, true)); // Checks identifier final Collection<ReferenceIdentifier> identifiers = crs.getIdentifiers(); assertNotNull(identifiers); assertFalse(identifiers.isEmpty()); NamedIdentifier expected = new NamedIdentifier(Citations.EPSG, "42102"); assertTrue(identifiers.contains(expected)); } /** * A random CRS for fun. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test26910Lower() throws FactoryException { final String code = "epsg:26910"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof ProjectedCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * A random CRS for fun. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test26986Lower() throws FactoryException { final String code = "epsg:26986"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof ProjectedCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * WFS requires this to work. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test4326Lower() throws FactoryException { final String code = "epsg:4326"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof GeographicCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * WFS requires this to work. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test26742Lower() throws FactoryException { final String code = "epsg:26742"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof ProjectedCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * WFS requires this to work. * This CRS is defined in the {@linkplain DefaultFactory default EPSG authority factory}. */ public void test4269Lower() throws FactoryException { final String code = "epsg:4269"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertTrue(crs instanceof GeographicCRS); assertFalse(CRS.equalsIgnoreMetadata(crs, CRS.decode(code, true))); } /** * WFS requires this to work. * This CRS is defined in {@code unnamed.properties}. */ public void test42304Lower() throws FactoryException { final String code = "epsg:42304"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertSame(crs, CRS.decode(code, true)); } /** * WFS requires this to work. * This CRS is defined in {@code unnamed.properties}. */ public void test42102Lower() throws FactoryException { final String code = "epsg:42102"; final CoordinateReferenceSystem crs = CRS.decode(code); assertNotNull(crs); assertSame(crs, CRS.decode(code, true)); // Checks identifier final Collection<ReferenceIdentifier> identifiers = crs.getIdentifiers(); assertNotNull(identifiers); assertFalse(identifiers.isEmpty()); NamedIdentifier expected = new NamedIdentifier(Citations.EPSG, "42102"); assertTrue(identifiers.contains(expected)); } /** * This CRS is defined in {@code esri.properties}. */ public void test54004() throws FactoryException { final CRSAuthorityFactory factory = CRS.getAuthorityFactory(false); final String code = "EPSG:54004"; final CoordinateReferenceSystem crs = factory.createCoordinateReferenceSystem(code); assertNotNull(crs); assertSame(crs, CRS.decode(code, true)); assertEquals("World_Mercator", String.valueOf(factory.getDescriptionText(code))); // Equivalent standard ESPG final CoordinateReferenceSystem standard = factory.createCoordinateReferenceSystem("EPSG:3395"); assertEquals("WGS 84 / World Mercator", String.valueOf(factory.getDescriptionText("EPSG:3395"))); // TODO: enable if we implement more intelligent 'equalsIgnoreMetadata' //assertTrue(CRS.equalsIgnoreMetadata(crs, standard)); } /** * Tests the obtention of various codes. */ public void testCodes() throws FactoryException { final CRSAuthorityFactory factory = CRS.getAuthorityFactory(false); final Collection codes = factory.getAuthorityCodes(ProjectedCRS.class); assertTrue (codes.contains("EPSG:3395")); // Defined in EPSG database assertTrue (codes.contains("EPSG:54004")); // Defined in ESRI database assertFalse(codes.contains("ESRI:54004")); assertTrue (codes.contains("EPSG:42304")); // Defined in unnamed database assertTrue (codes.contains("EPSG:26742")); // Defined in EPSG database assertTrue (codes.contains("EPSG:42102")); // Defined in unnamed database assertFalse(codes.contains("EPSG:4326")); // This is a GeographicCRS, not a ProjectedCRS assertTrue (codes.contains("EPSG:100002")); // Defined in unnamed database assertFalse(codes.contains("EPSG:100001")); // This is a GeographicCRS, not a ProjectedCRS } }