sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1453538 - in /sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis: metadata/PropertyAccessorTest.java metadata/iso/ metadata/iso/citation/ metadata/iso/citation/HardCodedCitations.java test/suite/MetadataTestSuite.java
Date Wed, 06 Mar 2013 20:36:19 GMT
Author: desruisseaux
Date: Wed Mar  6 20:36:19 2013
New Revision: 1453538

URL: http://svn.apache.org/r1453538
Log:
PropertyAccessor tests. Some parts are disabled for now, pending completion of other parts.

Added:
    sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
  (with props)
    sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/
    sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/
    sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
  (with props)
Modified:
    sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java

Added: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java?rev=1453538&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
(added)
+++ sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
[UTF-8] Wed Mar  6 20:36:19 2013
@@ -0,0 +1,392 @@
+/*
+ * 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.metadata;
+
+import java.util.Set;
+import java.util.List;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Locale;
+import java.util.Date;
+
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.extent.Extent;
+import org.opengis.metadata.citation.Series;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.citation.CitationDate;
+import org.opengis.metadata.citation.PresentationForm;
+import org.opengis.metadata.citation.ResponsibleParty;
+import org.opengis.referencing.IdentifiedObject;
+import org.opengis.referencing.ReferenceSystem;
+import org.opengis.referencing.ReferenceIdentifier;
+import org.opengis.referencing.crs.GeodeticCRS;
+import org.opengis.referencing.crs.GeographicCRS;
+import org.opengis.referencing.datum.GeodeticDatum;
+import org.opengis.referencing.cs.EllipsoidalCS;
+import org.opengis.util.InternationalString;
+import org.opengis.util.GenericName;
+
+import org.apache.sis.util.ComparisonMode;
+import org.apache.sis.util.iso.SimpleInternationalString;
+import org.apache.sis.metadata.iso.citation.DefaultCitation;
+import org.apache.sis.metadata.iso.citation.HardCodedCitations;
+import org.apache.sis.test.DependsOnMethod;
+import org.apache.sis.test.TestCase;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static java.util.Collections.singleton;
+import static org.opengis.test.Assert.*;
+import static org.apache.sis.test.TestUtilities.getSingleton;
+
+
+/**
+ * Tests the {@link PropertyAccessor} class. Every tests in this class instantiates directly
a
+ * {@link PropertyAccessor} object by invoking the {@link #createPropertyAccessor(Citation)}
+ * method. This class shall not test accessors created indirectly (e.g. the accessors created
+ * by {@link MetadataStandard}).
+ *
+ * <p>This test case uses the {@link Citation} and {@link GeographicCRS} types. If
those types
+ * are modified in a future GeoAPI version, then some hard-coded values in this test may
need
+ * to be updated.</p>
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from Geotk-2.4)
+ * @version 0.3
+ * @module
+ */
+public final strictfp class PropertyAccessorTest extends TestCase {
+    /**
+     * Creates a new property accessor for the {@link DefaultCitation} class.
+     */
+    private static PropertyAccessor createPropertyAccessor() {
+        return new PropertyAccessor(HardCodedCitations.ISO, Citation.class, DefaultCitation.class);
+    }
+
+    /**
+     * Asserts that the properties found by the given {@code accessor} have the given names
and types.
+     * The {@code expected} array shall be a sequence of tuples having the following components:
+     *
+     * <ul>
+     *   <li>The interface that declare the method.</li>
+     *   <li>Name of the getter method as specified by {@link KeyNamePolicy#METHOD_NAME}.</li>
+     *   <li>Name of the JavaBeans property as specified by {@link KeyNamePolicy#JAVABEANS_PROPERTY}.</li>
+     *   <li>ISO 19115 UML identifier as specified by {@link KeyNamePolicy#UML_IDENTIFIER}.</li>
+     *   <li>A sentence as specified by {@link KeyNamePolicy#SENTENCE}.</li>
+     *   <li>The type of elements. By convention, an array type stands for {@link Collection}
+     *       (we have to do this replacement because of parameterized types erasure).</li>
+     * </ul>
+     *
+     * The tuples shall be ordered according the {@link PropertyComparator}.
+     *
+     * @param accessor The accessor to test.
+     * @param expected The expected names and types as described above.
+     *
+     * @see PropertyAccessor#mapping
+     */
+    private static void assertMappingEquals(final PropertyAccessor accessor, final Object...
expected) {
+        int i = 0;
+        while (i < expected.length) {
+            final int      index         = i / 6;
+            final Class<?> declaringType = (Class<?>) expected[i++];
+            final String   methodName    = (String)   expected[i++];
+            final String   propertyName  = (String)   expected[i++];
+            final String   umlIdentifier = (String)   expected[i++];
+            final String   sentence      = (String)   expected[i++];
+            assertEquals("declaringType", declaringType, accessor.type(index, TypeValuePolicy.DECLARING_INTERFACE));
+            assertEquals("methodName",    methodName,    accessor.name(index, KeyNamePolicy.METHOD_NAME));
+            assertEquals("propertyName",  propertyName,  accessor.name(index, KeyNamePolicy.JAVABEANS_PROPERTY));
+            assertEquals("umlIdentifier", umlIdentifier, accessor.name(index, KeyNamePolicy.UML_IDENTIFIER));
+            assertEquals("sentence",      sentence,      accessor.name(index, KeyNamePolicy.SENTENCE));
+            assertEquals(methodName,      index,         accessor.indexOf(methodName,   
false));
+            assertEquals(propertyName,    index,         accessor.indexOf(propertyName, 
false));
+            assertEquals(umlIdentifier,   index,         accessor.indexOf(umlIdentifier,
false));
+            assertEquals(propertyName,    index,         accessor.indexOf(propertyName .toLowerCase(Locale.ROOT),
false));
+            assertEquals(umlIdentifier,   index,         accessor.indexOf(umlIdentifier.toLowerCase(Locale.ROOT),
false));
+            /*
+             * Verifies the type of values. This need special handling for collections.
+             */
+            Class<?> propertyType = (Class<?>) expected[i++];
+            Class<?> elementType  = propertyType;
+            if (propertyType.isArray()) {
+                elementType  = propertyType.getComponentType();
+                propertyType = Collection.class;
+                if (IdentifiedObject.class.isAssignableFrom(accessor.type)) {
+                    // Special cases
+                    if (propertyName.equals("identifiers")) {
+                        propertyType = Set.class;
+                    }
+                }
+            }
+            assertEquals(propertyName,  propertyType, accessor.type(index, TypeValuePolicy.PROPERTY_TYPE));
+            assertEquals(umlIdentifier, elementType,  accessor.type(index, TypeValuePolicy.ELEMENT_TYPE));
+        }
+        assertEquals("Count of 'get' methods.", i/6, accessor.count());
+    }
+
+    /**
+     * Tests the constructor. This test may need to be updated if a future GeoAPI release
+     * modifies the {@link Citation} interface.
+     */
+    @Test
+    public void testConstructor() {
+        assertMappingEquals(createPropertyAccessor(),
+        //……Declaring type………Method………………………………………………………………JavaBeans………………………………………………UML
identifier……………………………Sentence………………………………………………………Type………………………………………………………………
+/*Required*/Citation.class, "getDates",                   "dates",                   "date",
                 "Dates",                      CitationDate[].class,
+            Citation.class, "getTitle",                   "title",                   "title",
                "Title",                      InternationalString.class,
+/*Optional*/Citation.class, "getAlternateTitles",         "alternateTitles",         "alternateTitle",
       "Alternate titles",           InternationalString[].class,
+            Citation.class, "getCitedResponsibleParties", "citedResponsibleParties", "citedResponsibleParty",
"Cited responsible parties",  ResponsibleParty[].class,
+            Citation.class, "getCollectiveTitle",         "collectiveTitle",         "collectiveTitle",
      "Collective title",           InternationalString.class,
+            Citation.class, "getEdition",                 "edition",                 "edition",
              "Edition",                    InternationalString.class,
+            Citation.class, "getEditionDate",             "editionDate",             "editionDate",
          "Edition date",               Date.class,
+            Citation.class, "getIdentifiers",             "identifiers",             "identifier",
           "Identifiers",                Identifier[].class,
+            Citation.class, "getISBN",                    "ISBN",                    "ISBN",
                 "ISBN",                       String.class,
+            Citation.class, "getISSN",                    "ISSN",                    "ISSN",
                 "ISSN",                       String.class,
+            Citation.class, "getOtherCitationDetails",    "otherCitationDetails",    "otherCitationDetails",
 "Other citation details",     InternationalString.class,
+            Citation.class, "getPresentationForms",       "presentationForms",       "presentationForm",
     "Presentation forms",         PresentationForm[].class,
+            Citation.class, "getSeries",                  "series",                  "series",
               "Series",                     Series.class);
+    }
+
+    /**
+     * Tests the constructor with a method which override an other method with covariant
+     * return type. This test may need to be updated if a future GeoAPI release modifies
+     * the {@link GeographicCRS} interface.
+     *
+     * @see <a href="http://jira.geotoolkit.org/browse/GEOTK-205">GEOTK-205</a>
+     */
+    @Test
+    @DependsOnMethod("testConstructor")
+    public void testConstructorWithCovariantReturnType() {
+        final Class<?> type = GeographicCRS.class;
+        assertMappingEquals(new PropertyAccessor(HardCodedCitations.ISO, type, type),
+        //……Declaring type……………………………Method……………………………………………JavaBeans……………………………UML
identifier………………Sentence…………………………………Type…………………………………………………………
+/*Required*/GeographicCRS.class,    "getCoordinateSystem", "coordinateSystem", "coordinateSystem",
"Coordinate system",  EllipsoidalCS.class,       // Covariant return type
+            GeodeticCRS.class,      "getDatum",            "datum",            "datum", 
          "Datum",              GeodeticDatum.class,       // Covariant return type
+            IdentifiedObject.class, "getName",             "name",             "name",  
          "Name",               ReferenceIdentifier.class,
+/*Optional*/IdentifiedObject.class, "getAlias",            "alias",            "alias", 
          "Alias",              GenericName[].class,
+            ReferenceSystem.class,  "getDomainOfValidity", "domainOfValidity", "domainOfValidity",
"Domain of validity", Extent.class,
+            IdentifiedObject.class, "getIdentifiers",      "identifiers",      "identifier",
      "Identifiers",        ReferenceIdentifier[].class,
+            IdentifiedObject.class, "getRemarks",          "remarks",          "remarks",
         "Remarks",            InternationalString.class,
+            ReferenceSystem.class,  "getScope",            "scope",            "SC_CRS.scope",
    "Scope",              InternationalString.class);
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#get(int, Object)} method.
+     */
+    @Test
+    @DependsOnMethod("testConstructor")
+    public void testGet() {
+        final Citation         citation = HardCodedCitations.ISO;
+        final PropertyAccessor accessor = createPropertyAccessor();
+
+        // Singleton value (not a collection)
+        final Object title = accessor.get(accessor.indexOf("title", true), citation);
+        assertInstanceOf("title", InternationalString.class, title);
+        assertEquals("International Organization for Standardization", title.toString());
+
+        // Collection of InternationalStrings
+        final Object alternateTitles = accessor.get(accessor.indexOf("alternateTitles", true),
citation);
+        assertInstanceOf("alternateTitles", Collection.class, alternateTitles);
+        assertEquals("ISO", getSingleton((Collection<?>) alternateTitles).toString());
+
+        // Collection of Identifiers
+        final Object identifiers = accessor.get(accessor.indexOf("identifiers", true), citation);
+        assertInstanceOf("identifiers", Collection.class, identifiers);
+        HardCodedCitations.assertIdentifiersForEPSG((Collection<?>) identifiers);
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#set(int, Object, Object, boolean)} method
+     * with a value to be stored <cite>as-is</cite>.
+     */
+    @Test
+    @DependsOnMethod("testGet")
+    public void testSet() {
+        final Citation         citation = new DefaultCitation();
+        final PropertyAccessor accessor = createPropertyAccessor();
+        {
+            final Object newValue = new SimpleInternationalString("Some title");
+            final int    index    = accessor.indexOf("title", true);
+            final Object oldValue = accessor.set(index, citation, newValue, true);
+            assertNull(oldValue);
+            assertSame(newValue, accessor.get(index, citation));
+            assertSame(newValue, citation.getTitle());
+        }
+        if (false) { // TODO
+            final Object newValue = "Some ISBN code";
+            final int    index    = accessor.indexOf("ISBN", true);
+            final Object oldValue = accessor.set(index, citation, newValue, true);
+            assertNull(oldValue);
+            assertSame(newValue, accessor.get(index, citation));
+            assertSame(newValue, citation.getISBN());
+        }
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#set(int, Object, Object, boolean)} method
+     * with a value that will need to be converted. The conversion will be from
+     * {@link String} to {@link InternationalString}.
+     */
+    @Test
+    @DependsOnMethod("testSet")
+    @Ignore("Needs ObjectConverters.find(…) implementation.")
+    public void testSetWithConversion() {
+        final String           expected = "Some title";
+        final Citation         citation = new DefaultCitation();
+        final PropertyAccessor accessor = createPropertyAccessor();
+        final int              index    = accessor.indexOf("title", true);
+        final Object           oldValue = accessor.set(index, citation, expected, true);
+        final Object           value    = accessor.get(index, citation);
+
+        assertNull(oldValue);
+        assertInstanceOf("title", InternationalString.class, value);
+        assertSame(expected, value.toString());
+        assertSame(value, citation.getTitle());
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#set(int, Object, Object, boolean)} method
+     * when adding elements in a collection, without conversion of type.
+     */
+    @Test
+    @DependsOnMethod("testSet")
+    public void testSetInCollection() {
+        testSetInCollection(false);
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#set(int, Object, Object, boolean)} method
+     * when adding elements in a collection, with conversion of type.
+     */
+    @Test
+    @DependsOnMethod("testSet")
+    @Ignore("Needs ObjectConverters.find(…) implementation.")
+    public void testSetInCollectionWithConversion() {
+        testSetInCollection(true);
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#set(int, Object, Object, boolean)} method
+     * when adding elements in a collection, with or without conversion of type.
+     */
+    private void testSetInCollection(final boolean conversion) {
+        final String              text1    = "An other title";
+        final String              text2    = "Yet an other title";
+        final InternationalString title1   = new SimpleInternationalString(text1);
+        final InternationalString title2   = new SimpleInternationalString(text2);
+        final Citation            citation = new DefaultCitation();
+        final PropertyAccessor    accessor = createPropertyAccessor();
+        final int                 index    = accessor.indexOf("alternateTitle", true);
+
+        // Insert the first value. Old collection shall be empty.
+        Object oldValue = accessor.set(index, citation, conversion ? text1 : title1, true);
+        assertInstanceOf("alternateTitle", Collection.class, oldValue);
+        assertTrue(((Collection<?>) oldValue).isEmpty());
+
+        // Insert the second value. Old collection shall contains the first value.
+        oldValue = accessor.set(index, citation, conversion ? text2 : title2, true);
+        assertInstanceOf("alternateTitle", Collection.class, oldValue);
+        oldValue = getSingleton((Collection<?>) oldValue);
+        assertSame(text1, oldValue.toString());
+        if (!conversion) {
+            assertSame("InternationalString should have been stored as-is.", title1, oldValue);
+        }
+
+        // Check final collection content.
+        final List<InternationalString> expected = Arrays.asList(title1, title2);
+        assertEquals(expected, accessor.get(index, citation));
+    }
+
+    /**
+     * Tests the {@link PropertyAccessor#shallowCopy(Object, Object)} method.
+     */
+    @Test
+    public void testShallowCopy() {
+        final Citation original = HardCodedCitations.ISO;
+        final Citation copy = new DefaultCitation();
+        final PropertyAccessor accessor = createPropertyAccessor();
+        assertTrue("The copy should have modified the destination.", accessor.shallowCopy(original,
copy));
+        assertEquals("International Organization for Standardization", copy.getTitle().toString());
+
+        Collection<?> values = copy.getAlternateTitles();
+        assertNotSame("Collections shall have been copied.", original.getAlternateTitles(),
values);
+        assertEquals("ISO", getSingleton(values).toString());
+
+        values = copy.getPresentationForms();
+        assertNotSame("Collections shall have been copied.", original.getPresentationForms(),
values);
+        assertEquals(PresentationForm.DOCUMENT_DIGITAL, getSingleton(values));
+    }
+
+    /**
+     * Tests the equals methods.
+     */
+    @Test
+    @DependsOnMethod("testShallowCopy")
+    public void testEquals() {
+        Citation citation = HardCodedCitations.EPSG;
+        final PropertyAccessor accessor = createPropertyAccessor();
+        assertFalse(accessor.equals(citation, HardCodedCitations.GEOTIFF, ComparisonMode.STRICT));
+        assertTrue (accessor.equals(citation, HardCodedCitations.EPSG,    ComparisonMode.STRICT));
+        /*
+         * Same test than above, but on a copy of the EPSG constant.
+         */
+        citation = new DefaultCitation();
+        assertTrue (accessor.shallowCopy(HardCodedCitations.EPSG, citation));
+        assertFalse(accessor.equals(citation, HardCodedCitations.GEOTIFF, ComparisonMode.STRICT));
+        assertTrue (accessor.equals(citation, HardCodedCitations.EPSG,    ComparisonMode.STRICT));
+        /*
+         * Identifiers shall be stored in different collection instances with equal content.
+         */
+        final int    index  = accessor.indexOf("identifiers", true);
+        final Object source = accessor.get(index, HardCodedCitations.EPSG);
+        final Object target = accessor.get(index, citation);
+        assertInstanceOf("identifiers", Collection.class, source);
+        assertInstanceOf("identifiers", Collection.class, target);
+//      assertNotSame(source, target);  // TODO: require non-empty collection.
+        assertEquals (source, target);
+        HardCodedCitations.assertIdentifiersForEPSG((Collection<?>) source);
+        HardCodedCitations.assertIdentifiersForEPSG((Collection<?>) target);
+        /*
+         * Set the identifiers to null, which should clear the collection.
+         */
+// TODO assertEquals("Expected the previous value.", source, accessor.set(index, citation,
null, true));
+        final Object value = accessor.get(index, citation);
+        assertNotNull("Should have replaced null by an empty collection.", value);
+        assertTrue("Should have replaced null by an empty collection.", ((Collection<?>)
value).isEmpty());
+    }
+
+    /**
+     * Tests {@link PropertyAccessor#hashCode(Object)}.
+     */
+    @Test
+    public void testHashCode() {
+        final DefaultCitation citation = new DefaultCitation();
+        final PropertyAccessor accessor = createPropertyAccessor();
+        int hashCode = accessor.hashCode(citation);
+        assertEquals("Empty metadata.", 0, hashCode);
+
+        final InternationalString title = new SimpleInternationalString("Some title");
+        citation.setTitle(title);
+        hashCode = accessor.hashCode(citation);
+        assertEquals("Metadata with a single value.", title.hashCode(), hashCode);
+
+        final InternationalString alternateTitle = new SimpleInternationalString("An other
title");
+        citation.setAlternateTitles(singleton(alternateTitle));
+        hashCode = accessor.hashCode(citation);
+        assertEquals("Metadata with two values.", title.hashCode() + Arrays.asList(alternateTitle).hashCode(),
hashCode);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java?rev=1453538&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
(added)
+++ sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
[UTF-8] Wed Mar  6 20:36:19 2013
@@ -0,0 +1,100 @@
+/*
+ * 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.metadata.iso.citation;
+
+import java.util.Collection;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.citation.PresentationForm;
+import org.apache.sis.util.iso.SimpleInternationalString;
+import org.apache.sis.util.Static;
+
+import static org.opengis.test.Assert.*;
+import static java.util.Collections.singleton;
+
+
+/**
+ * Hard-coded citation constants used for testing purpose only.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from Geotk-2.4)
+ * @version 0.3
+ * @module
+ */
+public final strictfp class HardCodedCitations extends Static {
+    /**
+     * The <a href="http://www.iso.org/">International Organization for Standardization</a>
+     * organization. An {@linkplain Citation#getAlternateTitles alternate title} for this
+     * citation is "ISO" (according ISO 19115, alternate titles often contain abbreviations).
+     */
+    public static final Citation ISO;
+    static {
+        final DefaultCitation c = new DefaultCitation();
+        c.setTitle(new SimpleInternationalString("International Organization for Standardization"));
+        c.setAlternateTitles(singleton(new SimpleInternationalString("ISO")));
+        c.setPresentationForms(singleton(PresentationForm.DOCUMENT_DIGITAL));
+        c.freeze();
+        ISO = c;
+    }
+
+    /**
+     * The <a href="http://www.epsg.org">European Petroleum Survey Group</a>
authority.
+     * An {@linkplain Citation#getAlternateTitles alternate title} for this citation is
+     * "EPSG" (according ISO 19115, alternate titles often contain abbreviations). In
+     * addition, this citation contains the "EPSG" {@linkplain Citation#getIdentifiers identifier}.
+     */
+    public static final Citation EPSG;
+    static {
+        final DefaultCitation c = new DefaultCitation();
+        c.setTitle(new SimpleInternationalString("European Petroleum Survey Group"));
+        c.setAlternateTitles(singleton(new SimpleInternationalString("EPSG")));
+        c.setPresentationForms(singleton(PresentationForm.TABLE_DIGITAL));
+        c.freeze();
+        EPSG = c;
+    }
+
+    /**
+     * The <a href="http://www.remotesensing.org/geotiff/geotiff.html">GeoTIFF</a>
specification.
+     */
+    public static final Citation GEOTIFF;
+    static {
+        final DefaultCitation c = new DefaultCitation();
+        c.setTitle(new SimpleInternationalString("GeoTIFF"));
+        c.setPresentationForms(singleton(PresentationForm.DOCUMENT_DIGITAL));
+        c.freeze();
+        GEOTIFF = c;
+    }
+
+    /**
+     * Do not allow instantiation of this class.
+     */
+    private HardCodedCitations() {
+    }
+
+    /**
+     * Asserts that the given identifiers are for the {@link HardCodedCitations#EPSG} constant.
+     *
+     * @param identifiers The collection to validate. Should be a collection of {@link Identifier}.
+     */
+    public static void assertIdentifiersForEPSG(final Collection<?> identifiers) {
+        assertNotNull("identifiers", identifiers);
+        for (final Object id : identifiers) {
+            assertInstanceOf("identifier", Identifier.class, id);
+            // TODO: check for EPSG identifiers here.
+        }
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java?rev=1453538&r1=1453537&r2=1453538&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
[UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
[UTF-8] Wed Mar  6 20:36:19 2013
@@ -29,6 +29,7 @@ import org.junit.runners.Suite;
  * @module
  */
 @Suite.SuiteClasses({
+    org.apache.sis.metadata.PropertyAccessorTest.class,
     org.apache.sis.metadata.PropertyDescriptorTest.class
 })
 public final strictfp class MetadataTestSuite extends TestSuite {



Mime
View raw message