/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2006-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; // JUnit dependencies import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; // OpenGIS dependencies import org.opengis.referencing.AuthorityFactory; import org.opengis.referencing.FactoryException; import org.opengis.referencing.crs.CoordinateReferenceSystem; // Geotools dependencies import org.geotools.util.Version; import org.geotools.referencing.CRS; /** * Tests the {@link org.geotools.referencing.factory.URN_AuthorityFactory} with EPSG codes. * * * * @source $URL$ * @version $Id$ * @author Justin Deoliveira * @author Martin Desruisseaux */ public class URN_EPSG_Test extends TestCase { /** * Run the suite from the command line. */ public static void main(final String[] args) { junit.textui.TestRunner.run(suite()); } /** * Returns the test suite. */ public static Test suite() { return new TestSuite(URN_EPSG_Test.class); } /** * Creates a suite of the given name. */ public URN_EPSG_Test(final String name) { super(name); } /** * Tests {@link AuthorityFactoryAdapter#isCodeMethodOverriden}. */ public void testMethodOverriden() { final Versioned test = new Versioned(); assertTrue(test.isCodeMethodOverriden()); } /** * Tests the 4326 code. */ public void test4326() throws FactoryException { CoordinateReferenceSystem expected = CRS.decode("EPSG:4326"); CoordinateReferenceSystem actual = CRS.decode("urn:ogc:def:crs:EPSG:6.8:4326"); assertSame(expected, actual); actual = CRS.decode("urn:x-ogc:def:crs:EPSG:6.8:4326"); assertSame(expected, actual); actual = CRS.decode("urn:ogc:def:crs:EPSG:6.11:4326"); assertSame(expected, actual); } /** * Tests versioning. */ public void testVersion() throws FactoryException { CRS.reset("all"); CoordinateReferenceSystem expected = CRS.decode("EPSG:4326"); final String version = String.valueOf(CRS.getVersion("EPSG")); final String urn = "urn:ogc:def:crs:EPSG:" + version + ":4326"; final Versioned test = new Versioned(); final int failureCount = FallbackAuthorityFactory.getFailureCount(); assertNull(test.lastVersion); assertSame(expected, test.createCoordinateReferenceSystem(urn)); assertEquals(version, test.lastVersion.toString()); assertEquals("Primary factory should not fail.", failureCount, FallbackAuthorityFactory.getFailureCount()); test.lastVersion = null; assertSame(expected, test.createCoordinateReferenceSystem(urn)); assertNull("Should not create a new factory.", test.lastVersion); assertEquals("Primary factory should not fail.", failureCount, FallbackAuthorityFactory.getFailureCount()); assertSame(expected, test.createCoordinateReferenceSystem("urn:ogc:def:crs:EPSG:6.11:4326")); assertEquals("6.11", test.lastVersion.toString()); assertEquals("Should use the fallback factory.", failureCount + 2, FallbackAuthorityFactory.getFailureCount()); } /** * A custom class for testing versioning. */ private static final class Versioned extends URN_AuthorityFactory { static Version lastVersion; protected AuthorityFactory createVersionedFactory(final Version version) throws FactoryException { lastVersion = version; return super.createVersionedFactory(version); } } }