adding test coverage for VectorXD.Unit.from(VectorXD) methods; using better assertions for ConvexSubPlane and SubPlane toString() unit tests
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
index c1647f0..cea56a6 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
@@ -80,7 +80,8 @@
.append("[plane= ")
.append(getPlane())
.append(", subspaceRegion= ")
- .append(getSubspaceRegion());
+ .append(getSubspaceRegion())
+ .append(']');
return sb.toString();
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 393fce4..3df8825 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
@@ -652,14 +652,25 @@
}
@Test
- public void testNormalize_static() {
+ public void testUnitFrom_coordinates() {
// act/assert
checkVector(Vector1D.Unit.from(2.0), 1);
checkVector(Vector1D.Unit.from(-4.0), -1);
}
@Test
- public void testNormalize_static_illegalNorm() {
+ public void testUnitFrom_vector() {
+ // arrange
+ Vector1D vec = Vector1D.of(2);
+ Vector1D unitVec = Vector1D.Unit.from(2);
+
+ // act/assert
+ checkVector(Vector1D.Unit.from(vec), 1);
+ Assert.assertSame(unitVec, Vector1D.Unit.from(unitVec));
+ }
+
+ @Test
+ public void testUnitFrom_illegalNorm() {
GeometryTestUtils.assertThrows(() -> Vector1D.Unit.from(0.0),
IllegalNormException.class);
GeometryTestUtils.assertThrows(() -> Vector1D.Unit.from(Double.NaN),
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlaneTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlaneTest.java
index eb8c11e..a3ff41c 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlaneTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlaneTest.java
@@ -20,6 +20,7 @@
import java.util.List;
import org.apache.commons.numbers.angle.PlaneAngleRadians;
+import org.apache.commons.geometry.core.GeometryTestUtils;
import org.apache.commons.geometry.core.RegionLocation;
import org.apache.commons.geometry.core.Transform;
import org.apache.commons.geometry.core.partitioning.Split;
@@ -610,7 +611,8 @@
String str = sp.toString();
// assert
- Assert.assertTrue(str.contains("plane=") && str.contains("subspaceRegion="));
+ GeometryTestUtils.assertContains("plane= Plane[", str);
+ GeometryTestUtils.assertContains("subspaceRegion= ConvexArea[", str);
}
private static void checkPlane(Plane plane, Vector3D origin, Vector3D u, Vector3D v) {
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SubPlaneTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SubPlaneTest.java
index 075d271..1ca6474 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SubPlaneTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/SubPlaneTest.java
@@ -19,7 +19,6 @@
import java.util.Arrays;
import java.util.List;
-import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.geometry.core.GeometryTestUtils;
import org.apache.commons.geometry.core.RegionLocation;
import org.apache.commons.geometry.core.Transform;
@@ -38,6 +37,7 @@
import org.apache.commons.geometry.euclidean.twod.Line;
import org.apache.commons.geometry.euclidean.twod.RegionBSPTree2D;
import org.apache.commons.geometry.euclidean.twod.Vector2D;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.junit.Assert;
import org.junit.Test;
@@ -402,7 +402,8 @@
String str = sp.toString();
// assert
- Assert.assertTrue(str.contains("plane=") && str.contains("subspaceRegion="));
+ GeometryTestUtils.assertContains("plane= Plane[", str);
+ GeometryTestUtils.assertContains("subspaceRegion= RegionBSPTree2D[", str);
}
@Test
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 23e2e75..b163f78 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
@@ -1177,7 +1177,7 @@
}
@Test
- public void testNormalize_static() {
+ public void testUnitFrom_coordinates() {
// arrange
double invSqrt3 = 1.0 / Math.sqrt(3.0);
@@ -1187,7 +1187,19 @@
}
@Test
- public void testNormalize_static_illegalNorm() {
+ public void testUnitFrom_vector() {
+ // arrange
+ double invSqrt3 = 1.0 / Math.sqrt(3.0);
+ Vector3D vec = Vector3D.of(2.0, -2.0, 2.0);
+ Vector3D.Unit unitVec = Vector3D.Unit.from(2.0, -2.0, 2.0);
+
+ // act/assert
+ checkVector(Vector3D.Unit.from(vec), invSqrt3, -invSqrt3, invSqrt3);
+ Assert.assertSame(unitVec, Vector3D.Unit.from(unitVec));
+ }
+
+ @Test
+ public void testUnitFrom_static_illegalNorm() {
GeometryTestUtils.assertThrows(() -> Vector3D.Unit.from(0.0, 0.0, 0.0),
IllegalNormException.class);
GeometryTestUtils.assertThrows(() -> Vector3D.Unit.from(Double.NaN, 1.0, 1.0),
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 e61326b..1e76c86 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
@@ -989,7 +989,7 @@
}
@Test
- public void testNormalize_static() {
+ public void testUnitFrom_coordinates() {
// arrange
double invSqrt2 = 1.0 / Math.sqrt(2.0);
@@ -999,7 +999,19 @@
}
@Test
- public void testNormalize_static_illegalNorm() {
+ public void testUnitFrom_vector() {
+ // arrange
+ double invSqrt2 = 1.0 / Math.sqrt(2.0);
+ Vector2D vec = Vector2D.of(2.0, -2.0);
+ Vector2D.Unit unitVec = Vector2D.Unit.from(2.0, -2.0);
+
+ // act/assert
+ checkVector(Vector2D.Unit.from(vec), invSqrt2, -invSqrt2);
+ Assert.assertSame(unitVec, Vector2D.Unit.from(unitVec));
+ }
+
+ @Test
+ public void testUnitFrom_illegalNorm() {
GeometryTestUtils.assertThrows(() -> Vector2D.Unit.from(0.0, 0.0),
IllegalNormException.class);
GeometryTestUtils.assertThrows(() -> Vector2D.Unit.from(Double.NaN, 1.0),