You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2022/11/15 18:04:51 UTC

[sis] 03/03: Add a few tests for metadata quality package.

This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit a31026987c0c7cdf08bae87098cb745032c8947d
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Tue Nov 15 18:12:47 2022 +0100

    Add a few tests for metadata quality package.
---
 .../iso/quality/DefaultQuantitativeResult.java     | 14 ++++++
 .../iso/quality/DefaultDomainConsistencyTest.java  | 47 ++++++++++++++++++++
 .../iso/quality/DefaultQuantitativeResultTest.java | 50 ++++++++++++++++++++++
 .../apache/sis/test/suite/MetadataTestSuite.java   |  2 +
 4 files changed, 113 insertions(+)

diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResult.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResult.java
index d92e2565c0..8e0d1a1b6f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResult.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResult.java
@@ -253,4 +253,18 @@ public class DefaultQuantitativeResult extends AbstractResult implements Quantit
         checkWritePermission(errorStatistic);
         errorStatistic = newValue;
     }
+
+    /**
+     * Returns {@code true} if this metadata contains only {@code null}, nil or empty properties.
+     * The deprecated {@code errorStatistic} is also verified because there is no non-deprecated
+     * replacement receiving a value that {@code super.isEmpty()} would recognize.
+     *
+     * @return {@code true} if this metadata is empty.
+     *
+     * @hidden
+     */
+    @Override
+    public boolean isEmpty() {
+        return super.isEmpty() && errorStatistic == null;
+    }
 }
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultDomainConsistencyTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultDomainConsistencyTest.java
new file mode 100644
index 0000000000..0ad12c0936
--- /dev/null
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultDomainConsistencyTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.quality;
+
+import java.util.Map;
+import java.util.Collections;
+import org.apache.sis.test.TestCase;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+
+/**
+ * Tests {@link DefaultDomainConsistency}.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.3
+ * @since   1.3
+ * @module
+ */
+public final strictfp class DefaultDomainConsistencyTest extends TestCase {
+    /**
+     * Tests {@link DefaultDomainConsistency#asMap()}.
+     */
+    @Test
+    public void testAsMap() {
+        final DefaultDescriptiveResult r = new DefaultDescriptiveResult("A result");
+        final DefaultDomainConsistency c = new DefaultDomainConsistency();
+        final Map<String,Object> m = c.asMap();
+        c.setResults(Collections.singleton(r));
+        assertEquals(Collections.singletonList(r), m.get("result"));
+    }
+}
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
new file mode 100644
index 0000000000..ebd8da6df4
--- /dev/null
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.quality;
+
+import org.apache.sis.util.SimpleInternationalString;
+import org.apache.sis.test.TestCase;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+
+/**
+ * Tests {@link DefaultQuantitativeResult}.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.3
+ * @since   1.3
+ * @module
+ */
+public final strictfp class DefaultQuantitativeResultTest extends TestCase {
+    /**
+     * Tests {@link DefaultQuantitativeResult#isEmpty()}. The {@code isEmpty()} method needs a special check
+     * for the deprecated {@code "errorStatistic"} property because, contrarily to other deprecated properties,
+     * that one has no replacement. Consequently no non-deprecated property is set as a result of redirection.
+     * Because by default {@code isEmpty()} ignores deprecated properties,
+     * it can cause {@link DefaultQuantitativeResult} to be wrongly considered as empty.
+     */
+    @Test
+    @SuppressWarnings("deprecation")
+    public void testIsEmpty() {
+        final DefaultQuantitativeResult r = new DefaultQuantitativeResult();
+        assertTrue(r.isEmpty());
+        r.setErrorStatistic(new SimpleInternationalString("a description"));
+        assertFalse(r.isEmpty());
+    }
+}
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
index a7f8adda19..f570c1bf7d 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
@@ -120,6 +120,8 @@ import org.junit.BeforeClass;
     org.apache.sis.metadata.iso.identification.DefaultServiceIdentificationTest.class,
     org.apache.sis.metadata.iso.quality.AbstractElementTest.class,
     org.apache.sis.metadata.iso.quality.AbstractPositionalAccuracyTest.class,
+    org.apache.sis.metadata.iso.quality.DefaultDomainConsistencyTest.class,
+    org.apache.sis.metadata.iso.quality.DefaultQuantitativeResultTest.class,
     org.apache.sis.metadata.iso.quality.ScopeCodeTest.class,
     org.apache.sis.metadata.iso.lineage.DefaultLineageTest.class,
     org.apache.sis.metadata.iso.lineage.DefaultProcessStepTest.class,