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


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new c92fa5ad66 Add JUnit 5 in test dependencies for progressive migration. 
Opportunistically upgrade `ArgumentChecks` to JUnit 5, after its change for 
testing negative zeros.
c92fa5ad66 is described below

commit c92fa5ad66fdb99b68d68cc3305fb7121b9db55d
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Mon Aug 28 18:13:47 2023 +0200

    Add JUnit 5 in test dependencies for progressive migration.
    Opportunistically upgrade `ArgumentChecks` to JUnit 5,
    after its change for testing negative zeros.
---
 endorsed/build.gradle.kts                          |  3 +-
 .../test/module-info.java                          |  1 +
 .../main/org/apache/sis/util/ArgumentChecks.java   |  6 ++-
 .../org/apache/sis/util/ArgumentChecksTest.java    | 49 ++++++++++++++--------
 incubator/build.gradle.kts                         |  3 +-
 .../test/module-info.java                          |  2 +
 netbeans-project/ivy.xml                           |  1 +
 netbeans-project/nbproject/project.properties      | 35 ++++++++--------
 optional/build.gradle.kts                          |  3 +-
 .../test/module-info.java                          |  2 +
 settings.gradle.kts                                |  1 +
 11 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/endorsed/build.gradle.kts b/endorsed/build.gradle.kts
index a1c29e321f..82fe277188 100644
--- a/endorsed/build.gradle.kts
+++ b/endorsed/build.gradle.kts
@@ -67,6 +67,7 @@ dependencies {
 
     // Test dependencies
     testImplementation(tests.junit4)
+    testImplementation(tests.junit5)
     testImplementation(tests.geoapi)
     testImplementation(tests.jama)
     testImplementation(tests.geographiclib)
@@ -98,7 +99,7 @@ tasks.compileJava {
 }
 tasks.compileTestJava {
     srcDir.list().forEach {
-        addRead(options.compilerArgs, it, "org.apache.sis.test.endorsed,junit")
+        addRead(options.compilerArgs, it, 
"org.apache.sis.test.endorsed,org.junit.jupiter.api,junit")
     }
     addExportForTests(options.compilerArgs)
 }
diff --git a/endorsed/src/org.apache.sis.test.endorsed/test/module-info.java 
b/endorsed/src/org.apache.sis.test.endorsed/test/module-info.java
index 5530caf16d..56af08af67 100644
--- a/endorsed/src/org.apache.sis.test.endorsed/test/module-info.java
+++ b/endorsed/src/org.apache.sis.test.endorsed/test/module-info.java
@@ -24,6 +24,7 @@
  */
 module org.apache.sis.test.endorsed {
     requires transitive junit;
+    requires transitive org.junit.jupiter.api;
     requires transitive org.opengis.geoapi.conformance;
     requires transitive org.apache.derby.tools;
     requires transitive org.hsqldb;
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
index b075df3d48..ff6ee7cd18 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
@@ -465,7 +465,8 @@ public final class ArgumentChecks extends Static {
     public static void ensurePositive(final String name, final float value)
             throws IllegalArgumentException
     {
-        if (!(value >= 0)) {                                                // 
Use `!` for catching NaN.
+        // Use `!` for catching NaN.
+        if (!(value >= 0) || Float.floatToRawIntBits(value) == 
Integer.MIN_VALUE) {
             throw new IllegalArgumentException(Float.isNaN(value) ?
                     Errors.format(Errors.Keys.NotANumber_1, name) :
                     Errors.format(Errors.Keys.NegativeArgument_2, name, 
value));
@@ -486,7 +487,8 @@ public final class ArgumentChecks extends Static {
     public static void ensurePositive(final String name, final double value)
             throws IllegalArgumentException
     {
-        if (!(value >= 0)) {                                                // 
Use `!` for catching NaN.
+        // Use `!` for catching NaN.
+        if (!(value >= 0) || Double.doubleToRawLongBits(value) == 
Long.MIN_VALUE) {
             throw new IllegalArgumentException(Double.isNaN(value) ?
                     Errors.format(Errors.Keys.NotANumber_1, name)  :
                     Errors.format(Errors.Keys.NegativeArgument_2, name, 
value));
diff --git 
a/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/ArgumentChecksTest.java
 
b/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/ArgumentChecksTest.java
index 41122b0d0e..29a7c0671e 100644
--- 
a/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/ArgumentChecksTest.java
+++ 
b/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/ArgumentChecksTest.java
@@ -20,14 +20,14 @@ import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 
 /**
  * Tests the {@link ArgumentChecks} static methods.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.4
  * @since   0.4
  */
 @DependsOn(org.apache.sis.util.resources.IndexedResourceBundleTest.class)
@@ -43,18 +43,14 @@ public final class ArgumentChecksTest extends TestCase {
      */
     @Test
     public void testEnsureNonNullElement() {
-        try {
+        NullArgumentException e = assertThrows(NullArgumentException.class, () 
-> {
             ArgumentChecks.ensureNonNullElement("axes", 2, null);
-            fail("Expected a NullArgumentException.");
-        } catch (NullArgumentException e) {
-            assertTrue(e.getMessage().contains("axes[2]"));
-        }
-        try {
+        });
+        assertTrue(e.getMessage().contains("axes[2]"));
+        e = assertThrows(NullArgumentException.class, () -> {
             ArgumentChecks.ensureNonNullElement("axes[#].unit", 2, null);
-            fail("Expected a NullArgumentException.");
-        } catch (NullArgumentException e) {
-            assertTrue(e.getMessage().contains("axes[2].unit"));
-        }
+        });
+        assertTrue(e.getMessage().contains("axes[2].unit"));
     }
 
     /**
@@ -63,11 +59,30 @@ public final class ArgumentChecksTest extends TestCase {
     @Test
     public void testEnsureBetweenAndDistinct() {
         ArgumentChecks.ensureNonEmptyBounded("dimensions", true, 0, 4, new 
int[] {2, 3, 0, 1});
-        try {
+        IllegalArgumentException e = 
assertThrows(IllegalArgumentException.class, () -> {
             ArgumentChecks.ensureNonEmptyBounded("dimensions", true, 0, 4, new 
int[] {2, 3, 3, 1});
-            fail("Expected an IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            assertNotNull(e.getMessage());
-        }
+        });
+        assertNotNull(e.getMessage());
+    }
+
+    /**
+     * Tests {@link ArgumentChecks#ensurePositive(java.lang.String, double)}.
+     */
+    @Test
+    public void testEnsurePositive() {
+        ArgumentChecks.ensurePositive("length", 4d);
+        ArgumentChecks.ensurePositive("length", 0d);
+        IllegalArgumentException e = 
assertThrows(IllegalArgumentException.class, () -> {
+            ArgumentChecks.ensurePositive("length", -4d);
+        });
+        assertTrue(e.getMessage().contains("length"));
+        e = assertThrows(IllegalArgumentException.class, () -> {
+            ArgumentChecks.ensurePositive("length", -0d);
+        });
+        assertTrue(e.getMessage().contains("length"));
+        e = assertThrows(IllegalArgumentException.class, () -> {
+            ArgumentChecks.ensurePositive("length", -0f);
+        });
+        assertTrue(e.getMessage().contains("length"));
     }
 }
diff --git a/incubator/build.gradle.kts b/incubator/build.gradle.kts
index d78d2f957e..86cec2320e 100644
--- a/incubator/build.gradle.kts
+++ b/incubator/build.gradle.kts
@@ -48,6 +48,7 @@ dependencies {
 
     // Test dependencies
     testImplementation(tests.geoapi)
+    testImplementation(tests.junit5)
     testImplementation(tests.junit4)
     testRuntimeOnly   (tests.junit)
     testRuntimeOnly   (tests.junitLauncher)
@@ -82,7 +83,7 @@ tasks.compileJava {
 }
 tasks.compileTestJava {
     srcDir.list().forEach {
-        addRead(options.compilerArgs, it, 
"org.apache.sis.test.incubator,junit")
+        addRead(options.compilerArgs, it, 
"org.apache.sis.test.incubator,org.junit.jupiter.api,junit")
     }
 }
 
diff --git a/incubator/src/org.apache.sis.test.incubator/test/module-info.java 
b/incubator/src/org.apache.sis.test.incubator/test/module-info.java
index 5cea0f2dc5..62dcaa90b5 100644
--- a/incubator/src/org.apache.sis.test.incubator/test/module-info.java
+++ b/incubator/src/org.apache.sis.test.incubator/test/module-info.java
@@ -23,5 +23,7 @@
  * @since   1.4
  */
 module org.apache.sis.test.incubator {
+    requires transitive junit;
+    requires transitive org.junit.jupiter.api;
     requires transitive org.opengis.geoapi.conformance;
 }
diff --git a/netbeans-project/ivy.xml b/netbeans-project/ivy.xml
index 6aaa72c5d8..01c97e7812 100644
--- a/netbeans-project/ivy.xml
+++ b/netbeans-project/ivy.xml
@@ -27,6 +27,7 @@
         <dependency org="jakarta.servlet"        name="jakarta.servlet-api"    
 rev="6.0.0"/>
         <dependency org="org.osgi"               name="osgi.core"              
 rev="8.0.0"/>
         <dependency org="org.junit.platform"     
name="junit-platform-launcher" rev="1.9.3"/>
+        <dependency org="org.junit.jupiter"      name="junit-jupiter-api"      
 rev="5.9.3"/>
         <dependency org="org.junit.vintage"      name="junit-vintage-engine"   
 rev="5.9.3"/>
         <dependency org="junit"                  name="junit"                  
 rev="4.13.2"/>
         <dependency org="org.apache.derby"       name="derby"                  
 rev="10.15.2.0"/>
diff --git a/netbeans-project/nbproject/project.properties 
b/netbeans-project/nbproject/project.properties
index c79b5b9019..bf7bf3c472 100644
--- a/netbeans-project/nbproject/project.properties
+++ b/netbeans-project/nbproject/project.properties
@@ -77,29 +77,30 @@ modules.list = org.apache.sis.cloud.aws,\
                org.apache.sis.storage.sql,\
                org.apache.sis.storage.xml,\
                org.apache.sis.util
-read.options = --add-reads org.apache.sis.cloud.aws=junit \
-               --add-reads org.apache.sis.console=junit \
-               --add-reads org.apache.sis.feature=junit \
-               --add-reads org.apache.sis.metadata=junit \
-               --add-reads org.apache.sis.openoffice=junit \
-               --add-reads org.apache.sis.portrayal=junit \
-               --add-reads org.apache.sis.profile.france=junit \
-               --add-reads org.apache.sis.profile.japan=junit \
-               --add-reads org.apache.sis.referencing=junit \
-               --add-reads org.apache.sis.referencing.gazetteer=junit \
-               --add-reads org.apache.sis.storage=junit \
-               --add-reads org.apache.sis.storage.earthobservation=junit \
-               --add-reads org.apache.sis.storage.geotiff=junit \
-               --add-reads org.apache.sis.storage.netcdf=junit \
-               --add-reads org.apache.sis.storage.sql=junit \
-               --add-reads org.apache.sis.storage.xml=junit \
-               --add-reads org.apache.sis.util=junit
+read.options = --add-reads 
org.apache.sis.cloud.aws=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.console=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.feature=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.metadata=org.junit.jupiter.api,junit 
\
+               --add-reads 
org.apache.sis.openoffice=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.portrayal=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.profile.france=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.profile.japan=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.referencing=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.referencing.gazetteer=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.storage=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.storage.earthobservation=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.storage.geotiff=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.storage.netcdf=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.storage.sql=org.junit.jupiter.api,junit \
+               --add-reads 
org.apache.sis.storage.xml=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.util=org.junit.jupiter.api,junit
 test.options = --add-modules jama,GeographicLib.Java,\
                  com.h2database,\
                  org.hsqldb,\
                  org.apache.derby.tools,\
                  software.amazon.awssdk.utils,\
                  org.opengis.geoapi.conformance,\
+                 org.junit.jupiter.api,\
                  ${modules.list} \
                --add-exports 
org.apache.sis.util/org.apache.sis.test=${modules.list} \
                --add-exports 
org.apache.sis.metadata/org.apache.sis.test.xml=${modules.list} \
diff --git a/optional/build.gradle.kts b/optional/build.gradle.kts
index f77fbd58d7..27d33fd534 100644
--- a/optional/build.gradle.kts
+++ b/optional/build.gradle.kts
@@ -64,6 +64,7 @@ dependencies {
 
     // Test dependencies
     testImplementation(tests.geoapi)
+    testImplementation(tests.junit5)
     testImplementation(tests.junit4)
     testRuntimeOnly   (tests.junit)
     testRuntimeOnly   (tests.junitLauncher)
@@ -81,7 +82,7 @@ tasks.compileJava {
 tasks.compileTestJava {
     patchForTests(options.compilerArgs);
     srcDir.list().forEach {
-        addRead(options.compilerArgs, it, "org.apache.sis.test.optional,junit")
+        addRead(options.compilerArgs, it, 
"org.apache.sis.test.optional,org.junit.jupiter.api,junit")
     }
 }
 
diff --git a/optional/src/org.apache.sis.test.optional/test/module-info.java 
b/optional/src/org.apache.sis.test.optional/test/module-info.java
index dcdcaaddf8..bb74d69566 100644
--- a/optional/src/org.apache.sis.test.optional/test/module-info.java
+++ b/optional/src/org.apache.sis.test.optional/test/module-info.java
@@ -23,5 +23,7 @@
  * @since   1.4
  */
 module org.apache.sis.test.optional {
+    requires transitive junit;
+    requires transitive org.junit.jupiter.api;
     requires transitive org.opengis.geoapi.conformance;
 }
diff --git a/settings.gradle.kts b/settings.gradle.kts
index d01052eca5..152fff8b2a 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -70,6 +70,7 @@ dependencyResolutionManagement {
         create("tests") {
             library("geoapi",        "org.opengis",            
"geoapi-conformance")     .version {strictly(geoapiVersion)}
             library("junit4",        "junit",                  "junit")        
          .version {strictly("4.13.2")}
+            library("junit5",        "org.junit.jupiter",      
"junit-jupiter-api")      .version {strictly("5.9.3")}
             library("junit",         "org.junit.vintage",      
"junit-vintage-engine")   .version {strictly("5.9.3")}
             library("junitLauncher", "org.junit.platform",     
"junit-platform-launcher").version {strictly("1.9.3")}
             library("jama",          "gov.nist.math",          "jama")         
          .version {strictly("1.0.3")}

Reply via email to