From be0a5559e37a6b4b729dfc849d9f9bf26bdc366f Mon Sep 17 00:00:00 2001 From: Dan Royer Date: Wed, 22 May 2024 13:38:45 -0700 Subject: [PATCH] test serializing top/bottom angles --- .../ro3/node/nodes/odenode/ODEHinge.java | 6 ++--- .../ro3/node/nodes/odenode/ODEHingeTest.java | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHinge.java b/src/main/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHinge.java index d6c4fa363..efa692bd9 100644 --- a/src/main/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHinge.java +++ b/src/main/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHinge.java @@ -216,16 +216,14 @@ public void addTorque(double value) { * @return angle in degrees */ public double getAngleMax() { - if(hinge==null) return 0; - return Math.toDegrees(hinge.getParam(DJoint.PARAM_N.dParamHiStop1)); + return top; } /** * @return angle in degrees */ public double getAngleMin() { - if(hinge==null) return 0; - return Math.toDegrees(hinge.getParam(DJoint.PARAM_N.dParamLoStop1)); + return bottom; } /** diff --git a/src/test/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHingeTest.java b/src/test/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHingeTest.java index 4cb1b60bd..352903c5e 100644 --- a/src/test/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHingeTest.java +++ b/src/test/java/com/marginallyclever/ro3/node/nodes/odenode/ODEHingeTest.java @@ -50,4 +50,27 @@ public void test() { Assertions.assertNotNull(afterHinge2.getHinge().getBody(0)); Assertions.assertNotNull(afterHinge2.getHinge().getBody(1)); } + + // test that serializing with infinite limits works, and with non-infinite limits works. + @Test + public void testLimits() { + Registry.start(); + + ODEHinge before = new ODEHinge(); + before.setAngleMax(Double.POSITIVE_INFINITY); + before.setAngleMin(Double.NEGATIVE_INFINITY); + JSONObject json = before.toJSON(); + ODEHinge after = new ODEHinge(); + after.fromJSON(json); + Assertions.assertEquals(Double.POSITIVE_INFINITY,after.getAngleMax()); + Assertions.assertEquals(Double.NEGATIVE_INFINITY,after.getAngleMin()); + + before.setAngleMax(90); + before.setAngleMin(-90); + json = before.toJSON(); + after = new ODEHinge(); + after.fromJSON(json); + Assertions.assertEquals(90,after.getAngleMax()); + Assertions.assertEquals(-90,after.getAngleMin()); + } }