sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1575723 - in /sis/branches/JDK7/core/sis-referencing/src: main/java/org/apache/sis/parameter/ test/java/org/apache/sis/parameter/
Date Sun, 09 Mar 2014 16:33:34 GMT
Author: desruisseaux
Date: Sun Mar  9 16:33:34 2014
New Revision: 1575723

URL: http://svn.apache.org/r1575723
Log:
Added tests.

Modified:
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueGroupTest.java

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java?rev=1575723&r1=1575722&r2=1575723&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
[UTF-8] Sun Mar  9 16:33:34 2014
@@ -74,10 +74,10 @@ import static org.apache.sis.util.Argume
  * by the following code in order to declare its aliases:
  *
  * {@preformat java
- *   builder.addName("Longitude of natural origin")        // Primary name in builder default
namespace.
+ *   builder.addIdentifier("8802")                         // Primary key in builder default
namespace (EPSG in this example).
+ *          .addName("Longitude of natural origin")        // Primary name in builder default
namespace (EPSG in this example).
  *          .addName(Citations.OGC, "central_meridian")    // First alias in "OGC" namespace.
  *          .addName(Citations.GEOTIFF, "NatOriginLong")   // Second alias in "GeoTIFF" namespace.
- *          .addIdentifier("8802")                         // Primary key in EPSG database.
  *          .createBounded(-80, +84, 0, NonSI.DEGREE_ANGLE);
  * }
  *

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java?rev=1575723&r1=1575722&r2=1575723&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
[UTF-8] Sun Mar  9 16:33:34 2014
@@ -182,7 +182,7 @@ final class ParameterValueList extends A
                 count++;
             }
         }
-        if (count > desc.getMaximumOccurs()) {
+        if (count >= desc.getMaximumOccurs()) {
             throw new InvalidParameterCardinalityException(Errors.format(
                     Errors.Keys.TooManyOccurrences_2, count, name), name.getCode());
         }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java?rev=1575723&r1=1575722&r2=1575723&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java
[UTF-8] Sun Mar  9 16:33:34 2014
@@ -41,15 +41,16 @@ import static org.opengis.referencing.Id
 @DependsOn(DefaultParameterDescriptorTest.class)
 public final strictfp class DefaultParameterDescriptorGroupTest extends TestCase {
     /**
-     * Returns a group of 4 parameters of type {@link Integer} with default value 10.
+     * A group of 4 parameters of type {@link Integer} with default value 10.
      * The two first parameters are mandatory, while the two last parameters are optional.
      * The very last parameter has a maximum number of occurrence of 2, which is illegal
      * according ISO 19111 but nevertheless supported by Apache SIS.
      */
-    static final DefaultParameterDescriptorGroup createGroup_2M_2O() {
+    static final DefaultParameterDescriptorGroup M1_M1_O1_O2;
+    static {
         final Integer DEFAULT_VALUE = 10;
         final Class<Integer> type = Integer.class;
-        return new DefaultParameterDescriptorGroup(name("The group"), 0, 1,
+        M1_M1_O1_O2 = new DefaultParameterDescriptorGroup(name("The group"), 0, 1,
             new DefaultParameterDescriptor<>(name("Mandatory 1"), type, null, null,
DEFAULT_VALUE, true),
             new DefaultParameterDescriptor<>(name("Mandatory 2"), type, null, null,
DEFAULT_VALUE, true),
             new DefaultParameterDescriptor<>(name( "Optional 3"), type, null, null,
DEFAULT_VALUE, false),
@@ -69,7 +70,7 @@ public final strictfp class DefaultParam
      */
     @Test
     public void validateTestObjects() {
-        for (final GeneralParameterDescriptor descriptor : createGroup_2M_2O().descriptors())
{
+        for (final GeneralParameterDescriptor descriptor : M1_M1_O1_O2.descriptors()) {
             AssertionError error = null;
             try {
                 validate(descriptor);
@@ -89,7 +90,7 @@ public final strictfp class DefaultParam
      */
     @Test
     public void testDescriptor() {
-        final DefaultParameterDescriptorGroup group = createGroup_2M_2O();
+        final DefaultParameterDescriptorGroup group = M1_M1_O1_O2;
         final List<GeneralParameterDescriptor> descriptors = group.descriptors();
         assertEquals("name", "The group", group.getName().getCode());
         assertEquals("size", 4, descriptors.size());
@@ -106,7 +107,7 @@ public final strictfp class DefaultParam
      */
     @Test
     public void testContains() {
-        final List<GeneralParameterDescriptor> descriptors = createGroup_2M_2O().descriptors();
+        final List<GeneralParameterDescriptor> descriptors = M1_M1_O1_O2.descriptors();
         for (final GeneralParameterDescriptor p : descriptors) {
             assertTrue(descriptors.contains(p));
         }

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueGroupTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueGroupTest.java?rev=1575723&r1=1575722&r2=1575723&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueGroupTest.java
[UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterValueGroupTest.java
[UTF-8] Sun Mar  9 16:33:34 2014
@@ -22,7 +22,11 @@ import org.opengis.parameter.GeneralPara
 import org.opengis.parameter.GeneralParameterValue;
 import org.opengis.parameter.ParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
+import org.opengis.parameter.ParameterValue;
 import org.opengis.parameter.ParameterValueGroup;
+import org.opengis.parameter.InvalidParameterNameException;
+import org.opengis.parameter.InvalidParameterCardinalityException;
+import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
@@ -46,12 +50,26 @@ import static org.apache.sis.parameter.D
 })
 public final strictfp class DefaultParameterValueGroupTest extends TestCase {
     /**
-     * Creates values for all parameters defines by the given descriptor,
-     * and assigns to them an integer value in sequence with the given step.
+     * The descriptors of parameters to be tested by this class.
+     * The default descriptors are:
+     * <ul>
+     *   <li>One mandatory parameter (cardinality [1…1]).</li>
+     *   <li>One mandatory parameter (cardinality [1…1]).</li>
+     *   <li>One optional  parameter (cardinality [0…1]).</li>
+     *   <li>One optional  parameter (cardinality [0…2]) — invalid according ISO
19111, but supported by SIS.</li>
+     * </ul>
+     *
+     * Some test methods may replace the default descriptor by an other one.
      */
-    private static DefaultParameterValue<?>[] createValues(
-            final List<GeneralParameterDescriptor> descriptors, final int step)
-    {
+    private ParameterDescriptorGroup descriptor = DefaultParameterDescriptorGroupTest.M1_M1_O1_O2;
+
+    /**
+     * Creates values for all parameters defined by the {@linkplain #descriptor} (regardless
their cardinality),
+     * and assigns to them an integer value in sequence with the given step. For example
if {@code step} is 10,
+     * then this method will create parameters with values 10, 20, 30 and 40.
+     */
+    private DefaultParameterValue<?>[] createValues(final int step) {
+        final List<GeneralParameterDescriptor> descriptors = descriptor.descriptors();
         final DefaultParameterValue<?>[] parameters = new DefaultParameterValue<?>[descriptors.size()];
         for (int i=0; i<parameters.length;) {
             parameters[i] = new DefaultParameterValue<>((ParameterDescriptor<?>)
descriptors.get(i));
@@ -61,12 +79,22 @@ public final strictfp class DefaultParam
     }
 
     /**
+     * Same as {@link #createValues(int)}, but put the parameters in a {@link DefaultParameterValueGroup}.
+     *
+     * @see #testValuesAddAll()
+     */
+    private DefaultParameterValueGroup createGroup(final int step) {
+        final DefaultParameterValueGroup group = new DefaultParameterValueGroup(descriptor);
+        group.values().addAll(Arrays.asList(createValues(step)));
+        return group;
+    }
+
+    /**
      * Validates the test parameter values created by {@link #createValues(List, int)}.
      */
     @Test
     public void validateTestObjects() {
-        final DefaultParameterDescriptorGroup group = DefaultParameterDescriptorGroupTest.createGroup_2M_2O();
-        for (final DefaultParameterValue<?> param : createValues(group.descriptors(),
10)) {
+        for (final DefaultParameterValue<?> param : createValues(10)) {
             AssertionError error = null;
             try {
                 validate(param);
@@ -82,20 +110,165 @@ public final strictfp class DefaultParam
     }
 
     /**
+     * Tests {@link DefaultParameterValueGroup#parameter(String)}.
+     */
+    @Test
+    @DependsOnMethod("testValuesAddAll")
+    public void testParameter() {
+        final DefaultParameterValueGroup  group  = createGroup(10);
+        final List<GeneralParameterValue> values = group.values();
+        assertSame  ("parameter(“Mandatory 1”)", values.get(0), group.parameter("Mandatory
1"));
+        assertSame  ("parameter(“Mandatory 2”)", values.get(1), group.parameter("Mandatory
2"));
+        assertSame  ("parameter(“Optional 3”)",  values.get(2), group.parameter("Optional
3"));
+        assertSame  ("parameter(“Optional 4”)",  values.get(3), group.parameter("Optional
4"));
+        assertEquals("parameter(“Mandatory 1”)", 10, group.parameter("Mandatory 1").intValue());
+        assertEquals("parameter(“Mandatory 2”)", 20, group.parameter("Mandatory 2").intValue());
+        assertEquals("parameter(“Optional 3”)",  30, group.parameter("Optional 3") .intValue());
+        assertEquals("parameter(“Optional 4”)",  40, group.parameter("Optional 4") .intValue());
+    }
+
+    /**
+     * Tests {@code DefaultParameterValueGroup.values().get(…)} on a group expected to
be pre-filled
+     * with mandatory parameters.
+     */
+    @Test
+    public void testValuesGet() {
+        final DefaultParameterValueGroup  group  = new DefaultParameterValueGroup(descriptor);
+        final List<GeneralParameterValue> values = group.values();
+        assertEquals("Initial size", 2, values.size());
+        assertEquals(descriptor.descriptors().get(0).createValue(), values.get(0));
+        assertEquals(descriptor.descriptors().get(1).createValue(), values.get(1));
+        try {
+            values.get(2);
+            fail("Index 2 shall be out of bounds.");
+        } catch (IndexOutOfBoundsException e) {
+            assertNotNull(e.getMessage());
+        }
+    }
+
+    /**
+     * Tests {@code DefaultParameterValueGroup.values().contains(…)}.
+     */
+    @Test
+    @DependsOnMethod("testValuesAddAll")
+    public void testValuesContains() {
+        final GeneralParameterValue[] positives = createValues(+10);
+        final GeneralParameterValue[] negatives = createValues(-10);
+        final List<GeneralParameterValue> values = createGroup(+10).values();
+        for (int i=0; i<positives.length; i++) {
+            assertTrue (values.contains(positives[i]));
+            assertFalse(values.contains(negatives[i]));
+        }
+    }
+
+    /**
      * Tests {@code DefaultParameterValueGroup.values().addAll(…)}.
      */
     @Test
-    public void testAddAll() {
-        final DefaultParameterDescriptorGroup descriptor = DefaultParameterDescriptorGroupTest.createGroup_2M_2O();
-        final DefaultParameterValueGroup group = new DefaultParameterValueGroup(descriptor);
+    @DependsOnMethod("testValuesAdd")
+    public void testValuesAddAll() {
+        final DefaultParameterValueGroup  group  = new DefaultParameterValueGroup(descriptor);
         final List<GeneralParameterValue> values = group.values();
         assertEquals("Initial size", 2, values.size());
 
-        final DefaultParameterValue<?>[] external = createValues(descriptor.descriptors(),
10);
-        assertTrue(values.addAll(Arrays.asList(external)));
-        assertEquals("Final size", external.length, values.size());
-        for (int i=0; i<external.length; i++) {
-            assertSame(external[i], values.get(i));
+        final DefaultParameterValue<?>[] parameters = createValues(10);
+        assertTrue(values.addAll(Arrays.asList(parameters)));
+        assertEquals("Final size", parameters.length, values.size());
+        for (int i=0; i<parameters.length; i++) {
+            assertSame(parameters[i], values.get(i));
+        }
+    }
+
+    /**
+     * Tests that attempts to add an invalid parameter cause an {@link InvalidParameterNameException}
to be thrown.
+     */
+    @Test
+    @DependsOnMethod("testValuesAdd")
+    public void testValuesAddWrongParameter() {
+        final DefaultParameterValueGroup    group = createGroup(10);
+        final List<GeneralParameterValue>  values = group.values();
+        final ParameterValue<Integer> nonExistent = new DefaultParameterDescriptor<>(
+                name("Optional 5"), Integer.class, null, null, null, false).createValue();
+        try {
+            values.add(nonExistent);
+            fail("“Optional 5” is not a parameter for this group.");
+        } catch (InvalidParameterNameException e) {
+            assertEquals("Optional 5", e.getParameterName());
+            final String message = e.getMessage();
+            assertTrue(message, message.contains("Optional 5"));
+            assertTrue(message, message.contains("The group"));
+        }
+    }
+
+    /**
+     * Tests {@code DefaultParameterValueGroup.values().add(…)}. In particular, tests that
attempt to add
+     * a parameter already present causes an {@link InvalidParameterCardinalityException}
to be thrown.
+     */
+    @Test
+    public void testValuesAdd() {
+        final GeneralParameterValue[]      toAdd = createValues(-10);
+        final DefaultParameterValueGroup   group = new DefaultParameterValueGroup(descriptor);
+        final List<GeneralParameterValue> values = group.values();
+        assertEquals("size", 2, values.size()); // Because the descriptor declares 2 parameters
as mandatory.
+        assertTrue  ("add(“Mandatory 1”)", values.add(toAdd[0])); assertEquals("size",
2, values.size());
+        assertTrue  ("add(“Mandatory 2”)", values.add(toAdd[1])); assertEquals("size",
2, values.size());
+        assertTrue  ("add(“Optional 3”)",  values.add(toAdd[2])); assertEquals("size",
3, values.size());
+        assertTrue  ("add(“Optional 4”)",  values.add(toAdd[3])); assertEquals("size",
4, values.size());
+        /*
+         * Test [1…1] cardinality.
+         */
+        try {
+            values.add(toAdd[1]);
+            fail("“Mandatory 2” is already present in this group.");
+        } catch (InvalidParameterCardinalityException e) {
+            assertEquals("Mandatory 2", e.getParameterName());
+            final String message = e.getMessage();
+            assertTrue(message, message.contains("Mandatory 2"));
+        }
+        assertEquals("size", 4, values.size()); // Size shall be unchanged.
+        /*
+         * Test [0…1] cardinality.
+         */
+        try {
+            values.add(toAdd[2]);
+            fail("“Optional 3” is already present in this group.");
+        } catch (InvalidParameterCardinalityException e) {
+            assertEquals("Optional 3", e.getParameterName());
+            final String message = e.getMessage();
+            assertTrue(message, message.contains("Optional 3"));
+        }
+        assertEquals("size", 4, values.size()); // Size shall be unchanged.
+        /*
+         * Test [0…2] cardinality.
+         */
+        assertTrue("add(“Optional 4”)",values.add(toAdd[3]));
+        assertEquals("size", 5, values.size());
+        /*
+         * Verifies parameter values.
+         */
+        assertEquals("parameter(“Mandatory 1”)", -10, group.parameter("Mandatory 1").intValue());
+        assertEquals("parameter(“Mandatory 2”)", -20, group.parameter("Mandatory 2").intValue());
+        assertEquals("parameter(“Optional 3”)",  -30, group.parameter( "Optional 3").intValue());
+    }
+
+    /**
+     * Tests {@code DefaultParameterValueGroup.values().remove(…)}. In particular, tests
that attempt to
+     * remove a mandatory parameter causes an {@link InvalidParameterCardinalityException}
to be thrown.
+     */
+    @Test
+    @DependsOnMethod("testValuesAddAll")
+    public void testValuesRemove() {
+        final GeneralParameterValue[]  negatives = createValues(-10);
+        final DefaultParameterValueGroup   group = createGroup(10);
+        final List<GeneralParameterValue> values = group.values();
+        assertFalse(values.remove(negatives[0])); // Non-existant parameter.
+        try {
+            values.remove(values.get(0));
+            fail("“Mandatory 1” is a mandatory parameter; it should not be removeable.");
+        } catch (InvalidParameterCardinalityException e) {
+            assertEquals("Mandatory 1", e.getParameterName());
+            final String message = e.getMessage();
+            assertTrue(message, message.contains("Mandatory 1"));
         }
     }
 
@@ -105,15 +278,30 @@ public final strictfp class DefaultParam
      */
     @Test
     public void testAddGroup() {
-        final ParameterDescriptorGroup groupDesc = new DefaultParameterDescriptorGroup(name("theGroup"),
1, 1,
+        descriptor = new DefaultParameterDescriptorGroup(name("theGroup"), 1, 1,
                 new DefaultParameterDescriptorGroup(name("theSubGroup"), 0, 10)
         );
-        validate(groupDesc);
+        validate(descriptor);
 
-        final ParameterValueGroup groupValues = groupDesc.createValue();
+        final ParameterValueGroup groupValues = descriptor.createValue();
         assertEquals("Size before add.", 0, groupValues.values().size());
         final ParameterValueGroup subGroupValues = groupValues.addGroup("theSubGroup");
         assertEquals("Size after add.", 1, groupValues.values().size());
         assertSame(subGroupValues, groupValues.values().get(0));
     }
+
+    /**
+     * Tests {@link #equals(Object)} and {@link #hashCode()} methods.
+     */
+    @Test
+    @DependsOnMethod("testValuesAddAll")
+    public void testEqualsAndHashCode() {
+        final DefaultParameterValueGroup g1 = createGroup( 10);
+        final DefaultParameterValueGroup g2 = createGroup(-10);
+        final DefaultParameterValueGroup g3 = createGroup( 10);
+        assertTrue ("equals", g1.equals(g1));
+        assertFalse("equals", g1.equals(g2));
+        assertTrue ("equals", g1.equals(g3));
+        assertEquals("hashCode", g1.hashCode(), g3.hashCode());
+    }
 }



Mime
View raw message