You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2020/08/12 15:11:40 UTC

[commons-geometry] branch master updated: GEOMETRY-63: adding equals() method test helper; using Double.valueOf

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

mattjuntunen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-geometry.git


The following commit(s) were added to refs/heads/master by this push:
     new b36deb0  GEOMETRY-63: adding equals() method test helper; using Double.valueOf
b36deb0 is described below

commit b36deb014b5c0a2332d225d871db14a58def5200
Author: Matt Juntunen <ma...@apache.org>
AuthorDate: Wed Aug 12 08:05:28 2020 -0400

    GEOMETRY-63: adding equals() method test helper; using Double.valueOf
---
 .../commons/geometry/core/GeometryTestUtils.java   | 23 ++++++++++++++++
 .../core/precision/DoublePrecisionContextTest.java | 12 ++++----
 .../EpsilonDoublePrecisionContextTest.java         |  4 +--
 .../oned/AffineTransformMatrix1DTest.java          |  5 +---
 .../geometry/euclidean/oned/OrientedPointTest.java |  4 +--
 .../geometry/euclidean/oned/Vector1DTest.java      |  5 +---
 .../threed/AffineTransformMatrix3DTest.java        |  5 +---
 .../geometry/euclidean/threed/Bounds3DTest.java    |  5 +---
 .../euclidean/threed/EmbeddingPlaneTest.java       |  5 +---
 .../geometry/euclidean/threed/PlaneTest.java       |  5 +---
 .../euclidean/threed/SphericalCoordinatesTest.java |  6 ++--
 .../geometry/euclidean/threed/Vector3DTest.java    |  5 +---
 .../geometry/euclidean/threed/line/Line3DTest.java |  5 +---
 .../euclidean/threed/line/LinecastPoint3DTest.java | 32 +++++++++++-----------
 .../threed/rotation/AxisAngleSequenceTest.java     |  5 ++--
 .../threed/rotation/QuaternionRotationTest.java    |  5 +---
 .../euclidean/threed/shape/SphereTest.java         |  5 +---
 .../twod/AffineTransformMatrix2DTest.java          |  5 +---
 .../geometry/euclidean/twod/Bounds2DTest.java      |  5 +---
 .../commons/geometry/euclidean/twod/LineTest.java  |  5 +---
 .../euclidean/twod/LinecastPoint2DTest.java        |  5 +---
 .../euclidean/twod/PolarCoordinatesTest.java       |  6 ++--
 .../geometry/euclidean/twod/Vector2DTest.java      |  5 +---
 .../euclidean/twod/rotation/Rotation2DTest.java    |  5 +---
 .../geometry/euclidean/twod/shape/CircleTest.java  |  5 +---
 .../geometry/spherical/oned/CutAngleTest.java      |  6 ++--
 .../geometry/spherical/oned/Point1STest.java       |  5 +---
 .../geometry/spherical/oned/Transform1STest.java   | 29 +++++++++-----------
 .../geometry/spherical/twod/GreatCircleTest.java   |  5 +---
 .../geometry/spherical/twod/Point2STest.java       |  6 ++--
 .../geometry/spherical/twod/Transform2STest.java   |  5 +---
 31 files changed, 90 insertions(+), 143 deletions(-)

diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
index 21f5a1e..ed20b9e 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
@@ -26,8 +26,10 @@ import org.junit.Assert;
 
 /** Class containing various geometry-related test utilities.
  */
+
 public final class GeometryTestUtils {
 
+    /** Utility class; no instantiation. */
     private GeometryTestUtils() {}
 
     /** Asserts that the given value is positive infinity.
@@ -114,6 +116,27 @@ public final class GeometryTestUtils {
         Assert.assertTrue(msg, actual.contains(substr));
     }
 
+    /** Assert that the {@code equals} method of the argument meets the following requirements:
+     * <ol>
+     *  <li>{@code obj} is not equal to null</li>
+     *  <li>{@code obj} is not equal to an instance of a supertype ({@code java.lang.Object})</li>
+     *  <li>{@code obj} is equal to itself</li>
+     * </ol>
+     * @param obj object to test the {@code equals} method of
+     */
+    public static void assertSimpleEqualsCases(final Object obj) {
+        // Use the JUnit boolean assertions here to ensure that the equals methods are actually
+        // invoked and no assertion shortcuts are taken
+
+        Assert.assertFalse("Object should not equal null", obj.equals(null));
+
+        if (obj.getClass().getSuperclass() != null) {
+            Assert.assertFalse("Object should not equal an instance of different type", obj.equals(new Object()));
+        }
+
+        Assert.assertTrue("Object should equal itself", obj.equals(obj));
+    }
+
     /**
      * Serializes and then recovers an object from a byte array. Returns the deserialized object.
      *
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/DoublePrecisionContextTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/DoublePrecisionContextTest.java
index 1ce6941..e3a5c82 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/DoublePrecisionContextTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/DoublePrecisionContextTest.java
@@ -120,13 +120,13 @@ public class DoublePrecisionContextTest {
     @Test
     public void testCompare_wrapper() {
         // act/assert
-        Assert.assertEquals(0, ctx.compare(new Double(1), new Double(1)));
-        Assert.assertEquals(-1, ctx.compare(new Double(1), new Double(2)));
-        Assert.assertEquals(1, ctx.compare(new Double(2), new Double(1)));
+        Assert.assertEquals(0, ctx.compare(Double.valueOf(1), Double.valueOf(1)));
+        Assert.assertEquals(-1, ctx.compare(Double.valueOf(1), Double.valueOf(2)));
+        Assert.assertEquals(1, ctx.compare(Double.valueOf(2), Double.valueOf(1)));
 
-        Assert.assertEquals(0, ctx.compare(new Double(-1), new Double(-1)));
-        Assert.assertEquals(1, ctx.compare(new Double(-1), new Double(-2)));
-        Assert.assertEquals(-1, ctx.compare(new Double(-2), new Double(-1)));
+        Assert.assertEquals(0, ctx.compare(Double.valueOf(-1), Double.valueOf(-1)));
+        Assert.assertEquals(1, ctx.compare(Double.valueOf(-1), Double.valueOf(-2)));
+        Assert.assertEquals(-1, ctx.compare(Double.valueOf(-2), Double.valueOf(-1)));
     }
 
     private static class StubContext extends DoublePrecisionContext {
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContextTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContextTest.java
index d8d4164..6ae31b5 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContextTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContextTest.java
@@ -199,12 +199,10 @@ public class EpsilonDoublePrecisionContextTest {
         final EpsilonDoublePrecisionContext c = new EpsilonDoublePrecisionContext(1e-6);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(b, a);
 
-        Assert.assertEquals(a, a);
         Assert.assertEquals(a, c);
     }
 
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1DTest.java
index bdec5ad..fa30e1d 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1DTest.java
@@ -724,10 +724,7 @@ public class AffineTransformMatrix1DTest {
         final AffineTransformMatrix1D a = AffineTransformMatrix1D.of(1, 2);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, AffineTransformMatrix1D.of(0, 2));
         Assert.assertNotEquals(a, AffineTransformMatrix1D.of(1, 0));
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/OrientedPointTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/OrientedPointTest.java
index 2080b40..f961507 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/OrientedPointTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/OrientedPointTest.java
@@ -307,14 +307,12 @@ public class OrientedPointTest {
         final OrientedPoint g = OrientedPoints.fromPointAndDirection(Vector1D.of(1.0), true, precisionA);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(c, d);
         Assert.assertNotEquals(e, f);
 
-        Assert.assertEquals(a, a);
         Assert.assertEquals(a, g);
         Assert.assertEquals(g, a);
     }
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/Vector1DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/Vector1DTest.java
index a392736..ce93fd4 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/Vector1DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/oned/Vector1DTest.java
@@ -584,10 +584,7 @@ public class Vector1DTest {
         final Vector1D u2 = Vector1D.of(1);
 
         // act/assert
-        Assert.assertFalse(u1.equals(null));
-        Assert.assertFalse(u1.equals(new Object()));
-
-        Assert.assertEquals(u1, u1);
+        GeometryTestUtils.assertSimpleEqualsCases(u1);
         Assert.assertEquals(u1, u2);
 
         Assert.assertNotEquals(u1, Vector1D.of(-1));
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
index aca1c30..971a798 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
@@ -1164,10 +1164,7 @@ public class AffineTransformMatrix3DTest {
         final AffineTransformMatrix3D a = AffineTransformMatrix3D.of(values);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         double[] temp;
         for (int i = 0; i < values.length; ++i) {
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Bounds3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Bounds3DTest.java
index 5b40f68..ce42aa6 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Bounds3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Bounds3DTest.java
@@ -452,10 +452,7 @@ public class Bounds3DTest {
         final Bounds3D b6 = Bounds3D.from(Vector3D.of(1, 1, 1), Vector3D.of(2, 2, 2));
 
         // act/assert
-        Assert.assertEquals(b1, b1);
-
-        Assert.assertFalse(b1.equals(null));
-        Assert.assertFalse(b1.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(b1);
 
         Assert.assertNotEquals(b1, b2);
         Assert.assertNotEquals(b1, b3);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/EmbeddingPlaneTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/EmbeddingPlaneTest.java
index 5fdef59..e9a3b41 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/EmbeddingPlaneTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/EmbeddingPlaneTest.java
@@ -449,10 +449,7 @@ public class EmbeddingPlaneTest {
         final Plane stdPlane = Planes.fromPointAndNormal(pt, Vector3D.Unit.PLUS_Z, TEST_PRECISION);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/PlaneTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/PlaneTest.java
index 3123285..c488ce1 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/PlaneTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/PlaneTest.java
@@ -994,10 +994,7 @@ public class PlaneTest {
         final Plane e = Planes.fromPointAndNormal(pt, normal, TEST_PRECISION);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinatesTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinatesTest.java
index 2f740df..d613724 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinatesTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinatesTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.geometry.euclidean.threed;
 
 import java.util.regex.Pattern;
 
+import org.apache.commons.geometry.core.GeometryTestUtils;
 import org.apache.commons.numbers.angle.PlaneAngleRadians;
 import org.junit.Assert;
 import org.junit.Test;
@@ -297,10 +298,7 @@ public class SphericalCoordinatesTest {
         final SphericalCoordinates e = SphericalCoordinates.of(1, 2, 3);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
         Assert.assertEquals(a, e);
 
         Assert.assertNotEquals(a, b);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Vector3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Vector3DTest.java
index 06b1d3f..e53cdf1 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Vector3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/Vector3DTest.java
@@ -1080,10 +1080,7 @@ public class Vector3DTest {
         final Vector3D u2 = Vector3D.of(1, 2, 3);
 
         // act/assert
-        Assert.assertFalse(u1.equals(null));
-        Assert.assertFalse(u1.equals(new Object()));
-
-        Assert.assertEquals(u1, u1);
+        GeometryTestUtils.assertSimpleEqualsCases(u1);
         Assert.assertEquals(u1, u2);
 
         Assert.assertNotEquals(u1, Vector3D.of(-1, -2, -3));
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/Line3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/Line3DTest.java
index 45107ed..f90c49c 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/Line3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/Line3DTest.java
@@ -549,10 +549,7 @@ public class Line3DTest {
         final Line3D e = Lines3D.fromPointAndDirection(Vector3D.of(1, 2, 3), Vector3D.of(4, 5, 6), new EpsilonDoublePrecisionContext(TEST_EPS));
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/LinecastPoint3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/LinecastPoint3DTest.java
index 208e3b2..f477753 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/LinecastPoint3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/line/LinecastPoint3DTest.java
@@ -31,14 +31,13 @@ public class LinecastPoint3DTest {
 
     private static final double TEST_EPS = 1e-10;
 
-    private static final DoublePrecisionContext TEST_PRECISION =
-            new EpsilonDoublePrecisionContext(TEST_EPS);
+    private static final DoublePrecisionContext TEST_PRECISION = new EpsilonDoublePrecisionContext(TEST_EPS);
 
-    private static final Line3D X_AXIS =
-            Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_X, TEST_PRECISION);
+    private static final Line3D X_AXIS = Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_X,
+            TEST_PRECISION);
 
-    private static final Line3D Y_AXIS =
-            Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_Y, TEST_PRECISION);
+    private static final Line3D Y_AXIS = Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_Y,
+            TEST_PRECISION);
 
     @Test
     public void testProperties() {
@@ -104,10 +103,7 @@ public class LinecastPoint3DTest {
         final LinecastPoint3D e = new LinecastPoint3D(Vector3D.of(1, 1, 1), Vector3D.Unit.PLUS_X, X_AXIS);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
@@ -123,7 +119,8 @@ public class LinecastPoint3DTest {
         final DoublePrecisionContext precision = new EpsilonDoublePrecisionContext(1e-2);
 
         final Line3D line = Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_X, precision);
-        final Line3D otherLine = Lines3D.fromPointAndDirection(Vector3D.of(1e-4, 1e-4, 1e-4), Vector3D.Unit.PLUS_X, precision);
+        final Line3D otherLine = Lines3D.fromPointAndDirection(Vector3D.of(1e-4, 1e-4, 1e-4), Vector3D.Unit.PLUS_X,
+                precision);
 
         final LinecastPoint3D a = new LinecastPoint3D(Vector3D.of(1, 1, 1), Vector3D.Unit.PLUS_X, line);
 
@@ -131,8 +128,8 @@ public class LinecastPoint3DTest {
         final LinecastPoint3D c = new LinecastPoint3D(Vector3D.of(1, 1, 1), Vector3D.Unit.PLUS_Y, line);
 
         final LinecastPoint3D d = new LinecastPoint3D(Vector3D.of(1, 1, 1), Vector3D.Unit.PLUS_X, line);
-        final LinecastPoint3D e = new LinecastPoint3D(
-                Vector3D.of(1 + 1e-3, 1 + 1e-3, 1 + 1e-3), Vector3D.Unit.from(1 + 1e-3, 1e-3, 1e-3), otherLine);
+        final LinecastPoint3D e = new LinecastPoint3D(Vector3D.of(1 + 1e-3, 1 + 1e-3, 1 + 1e-3),
+                Vector3D.Unit.from(1 + 1e-3, 1e-3, 1e-3), otherLine);
 
         // act/assert
         Assert.assertTrue(a.eq(a, precision));
@@ -174,15 +171,18 @@ public class LinecastPoint3DTest {
         final DoublePrecisionContext precision = new EpsilonDoublePrecisionContext(1e-2);
 
         final Line3D line = Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_X, precision);
-        final Line3D eqLine = Lines3D.fromPointAndDirection(Vector3D.of(1e-3, 1e-3, 1e-3), Vector3D.Unit.PLUS_X, precision);
+        final Line3D eqLine = Lines3D.fromPointAndDirection(Vector3D.of(1e-3, 1e-3, 1e-3), Vector3D.Unit.PLUS_X,
+                precision);
         final Line3D diffLine = Lines3D.fromPointAndDirection(Vector3D.ZERO, Vector3D.Unit.PLUS_Y, precision);
 
         final LinecastPoint3D a = new LinecastPoint3D(Vector3D.ZERO, Vector3D.Unit.MINUS_Y, line);
         final LinecastPoint3D aDup1 = new LinecastPoint3D(Vector3D.of(1e-3, 0, 0), Vector3D.Unit.MINUS_Y, line);
-        final LinecastPoint3D aDup2 = new LinecastPoint3D(Vector3D.of(1e-3, 1e-3, 1e-3), Vector3D.of(1e-3, -1, 0), eqLine);
+        final LinecastPoint3D aDup2 = new LinecastPoint3D(Vector3D.of(1e-3, 1e-3, 1e-3), Vector3D.of(1e-3, -1, 0),
+                eqLine);
 
         final LinecastPoint3D b = new LinecastPoint3D(Vector3D.ZERO, Vector3D.Unit.MINUS_X, diffLine);
-        final LinecastPoint3D bDup = new LinecastPoint3D(Vector3D.of(-1e-3, 1e-4, 1e-4), Vector3D.Unit.MINUS_X, diffLine);
+        final LinecastPoint3D bDup = new LinecastPoint3D(Vector3D.of(-1e-3, 1e-4, 1e-4), Vector3D.Unit.MINUS_X,
+                diffLine);
 
         final LinecastPoint3D c = new LinecastPoint3D(Vector3D.of(0.5, 0, 0), Vector3D.Unit.MINUS_Y, line);
 
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequenceTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequenceTest.java
index 05800ff..a9428c7 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequenceTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequenceTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.geometry.euclidean.threed.rotation;
 
+import org.apache.commons.geometry.core.GeometryTestUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -67,8 +68,7 @@ public class AxisAngleSequenceTest {
         final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3);
 
         // act/assert
-        Assert.assertFalse(seq.equals(null));
-        Assert.assertNotEquals(seq, new Object());
+        GeometryTestUtils.assertSimpleEqualsCases(seq);
 
         Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.RELATIVE, AxisSequence.XYZ, 1, 2, 3));
         Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.ZYX, 1, 2, 3));
@@ -76,7 +76,6 @@ public class AxisAngleSequenceTest {
         Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 9, 3));
         Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 9));
 
-        Assert.assertEquals(seq, seq);
         Assert.assertEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3));
     }
 
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
index 10910e9..21c0550 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
@@ -1038,10 +1038,7 @@ public class QuaternionRotationTest {
         final QuaternionRotation q2 = QuaternionRotation.of(1, 2, 3, 4);
 
         // act/assert
-        Assert.assertFalse(q1.equals(null));
-        Assert.assertNotEquals(q1, new Object());
-
-        Assert.assertEquals(q1, q1);
+        GeometryTestUtils.assertSimpleEqualsCases(q1);
         Assert.assertEquals(q1, q2);
 
         Assert.assertNotEquals(q1, QuaternionRotation.of(-1, -2, -3, 4));
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/shape/SphereTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/shape/SphereTest.java
index e573e60..7c49582 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/shape/SphereTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/shape/SphereTest.java
@@ -543,10 +543,7 @@ public class SphereTest {
         final Sphere e = Sphere.from(Vector3D.of(1, 2, 3), 3, TEST_PRECISION);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
index 6eedde8..7a74834 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
@@ -1171,10 +1171,7 @@ public class AffineTransformMatrix2DTest {
         final AffineTransformMatrix2D a = AffineTransformMatrix2D.of(values);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         double[] temp;
         for (int i = 0; i < values.length; ++i) {
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Bounds2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Bounds2DTest.java
index 8224985..a7ac07c 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Bounds2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Bounds2DTest.java
@@ -424,10 +424,7 @@ public class Bounds2DTest {
         final Bounds2D b6 = Bounds2D.from(Vector2D.of(1, 1), Vector2D.of(2, 2));
 
         // act/assert
-        Assert.assertEquals(b1, b1);
-
-        Assert.assertFalse(b1.equals(null));
-        Assert.assertFalse(b1.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(b1);
 
         Assert.assertNotEquals(b1, b2);
         Assert.assertNotEquals(b1, b3);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LineTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LineTest.java
index e5f201e..4da2e8b 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LineTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LineTest.java
@@ -1199,13 +1199,10 @@ public class LineTest {
         final Line e = Lines.fromPointAndDirection(p, v, precision1);
 
         // act/assert
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
         Assert.assertEquals(a, e);
         Assert.assertEquals(e, a);
 
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
         Assert.assertNotEquals(a, d);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LinecastPoint2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LinecastPoint2DTest.java
index 0be73fe..1e2ac0e 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LinecastPoint2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/LinecastPoint2DTest.java
@@ -103,10 +103,7 @@ public class LinecastPoint2DTest {
         final LinecastPoint2D e = new LinecastPoint2D(Vector2D.of(1, 1), Vector2D.Unit.PLUS_X, X_AXIS);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinatesTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinatesTest.java
index eb609d5..6ce5394 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinatesTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinatesTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.geometry.euclidean.twod;
 
 import java.util.regex.Pattern;
 
+import org.apache.commons.geometry.core.GeometryTestUtils;
 import org.apache.commons.numbers.angle.PlaneAngleRadians;
 import org.junit.Assert;
 import org.junit.Test;
@@ -232,10 +233,7 @@ public class PolarCoordinatesTest {
         final PolarCoordinates e = PolarCoordinates.of(1, 2);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
         Assert.assertEquals(a, e);
 
         Assert.assertNotEquals(a, b);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Vector2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Vector2DTest.java
index ba623be..068b938 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Vector2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/Vector2DTest.java
@@ -899,10 +899,7 @@ public class Vector2DTest {
         final Vector2D u2 = Vector2D.of(1, 2);
 
         // act/assert
-        Assert.assertFalse(u1.equals(null));
-        Assert.assertFalse(u1.equals(new Object()));
-
-        Assert.assertEquals(u1, u1);
+        GeometryTestUtils.assertSimpleEqualsCases(u1);
         Assert.assertEquals(u1, u2);
 
         Assert.assertNotEquals(u1, Vector2D.of(-1, -2));
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/rotation/Rotation2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/rotation/Rotation2DTest.java
index 0ce0fcf..3a129ed 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/rotation/Rotation2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/rotation/Rotation2DTest.java
@@ -234,10 +234,7 @@ public class Rotation2DTest {
         final Rotation2D d = Rotation2D.of(1.0);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/shape/CircleTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/shape/CircleTest.java
index 7b7dbe7..41b67b5 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/shape/CircleTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/shape/CircleTest.java
@@ -426,10 +426,7 @@ public class CircleTest {
         final Circle e = Circle.from(Vector2D.of(1, 2), 3, TEST_PRECISION);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/CutAngleTest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/CutAngleTest.java
index 8df9f2c..65ad290 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/CutAngleTest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/CutAngleTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.geometry.spherical.oned;
 
 import java.util.List;
 
+import org.apache.commons.geometry.core.GeometryTestUtils;
 import org.apache.commons.geometry.core.RegionLocation;
 import org.apache.commons.geometry.core.partitioning.HyperplaneConvexSubset;
 import org.apache.commons.geometry.core.partitioning.HyperplaneLocation;
@@ -335,10 +336,7 @@ public class CutAngleTest {
         final CutAngle e = CutAngles.fromPointAndDirection(Point1S.ZERO, true, TEST_PRECISION);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Point1STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Point1STest.java
index f9772c1..40e933f 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Point1STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Point1STest.java
@@ -190,10 +190,7 @@ public class Point1STest {
         final Point1S e = Point1S.of(Double.NaN);
 
         // assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(b, a);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Transform1STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Transform1STest.java
index eeb9f9a..5a37ee8 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Transform1STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/Transform1STest.java
@@ -194,17 +194,16 @@ public class Transform1STest {
         final Transform1S c = Transform1S.identity().negate().rotate(-PlaneAngleRadians.PI_OVER_TWO);
         final Transform1S d = Transform1S.identity().negate().rotate(PlaneAngleRadians.PI_OVER_TWO);
 
-        // act/assert
-        Assert.assertEquals(a, a);
+        // act
+        final int hash = a.hashCode();
 
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        // assert
+        Assert.assertEquals(hash, a.hashCode());
 
-        Assert.assertNotEquals(a, b);
-        Assert.assertNotEquals(a, c);
+        Assert.assertNotEquals(hash, b.hashCode());
+        Assert.assertNotEquals(hash, c.hashCode());
 
-        Assert.assertEquals(a, d);
-        Assert.assertEquals(d, a);
+        Assert.assertEquals(hash, d.hashCode());
     }
 
     @Test
@@ -215,16 +214,14 @@ public class Transform1STest {
         final Transform1S c = Transform1S.identity().negate().rotate(-PlaneAngleRadians.PI_OVER_TWO);
         final Transform1S d = Transform1S.identity().negate().rotate(PlaneAngleRadians.PI_OVER_TWO);
 
-        // act
-        final int hash = a.hashCode();
-
-        // assert
-        Assert.assertEquals(hash, a.hashCode());
+        // act/assert
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
-        Assert.assertNotEquals(hash, b.hashCode());
-        Assert.assertNotEquals(hash, c.hashCode());
+        Assert.assertNotEquals(a, b);
+        Assert.assertNotEquals(a, c);
 
-        Assert.assertEquals(hash, d.hashCode());
+        Assert.assertEquals(a, d);
+        Assert.assertEquals(d, a);
     }
 
     @Test
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatCircleTest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatCircleTest.java
index fdfd99e..db6304d 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatCircleTest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatCircleTest.java
@@ -696,10 +696,7 @@ public class GreatCircleTest {
         final GreatCircle e = GreatCircles.fromPoleAndU(Vector3D.Unit.PLUS_Z, Vector3D.Unit.PLUS_X, TEST_PRECISION);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Point2STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Point2STest.java
index c9d460d..1413f27 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Point2STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Point2STest.java
@@ -19,6 +19,7 @@ package org.apache.commons.geometry.spherical.twod;
 
 import java.util.Comparator;
 
+import org.apache.commons.geometry.core.GeometryTestUtils;
 import org.apache.commons.geometry.core.precision.DoublePrecisionContext;
 import org.apache.commons.geometry.core.precision.EpsilonDoublePrecisionContext;
 import org.apache.commons.geometry.euclidean.threed.Vector3D;
@@ -305,10 +306,7 @@ public class Point2STest {
         final Point2S d = Point2S.of(1.0, 2.0);
 
         // act/assert
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
-
-        Assert.assertEquals(a, a);
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Transform2STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Transform2STest.java
index 507e1b1..eed01ec 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Transform2STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/Transform2STest.java
@@ -234,10 +234,7 @@ public class Transform2STest {
         final Transform2S d = Transform2S.createRotation(Point2S.PLUS_I, PlaneAngleRadians.PI_OVER_TWO);
 
         // act/assert
-        Assert.assertEquals(a, a);
-
-        Assert.assertFalse(a.equals(null));
-        Assert.assertFalse(a.equals(new Object()));
+        GeometryTestUtils.assertSimpleEqualsCases(a);
 
         Assert.assertNotEquals(a, b);
         Assert.assertNotEquals(a, c);