From 746499fd82d1e3735bfbb4327baee4f2c8bf1f78 Mon Sep 17 00:00:00 2001 From: Quincy Bowers Date: Wed, 17 Sep 2014 10:42:17 -0600 Subject: [PATCH] Fix for assertEquals(0.0, -0.0, 0.0) and assertEquals(0.0, -0.0) giving different answers. --- src/main/java/org/junit/Assert.java | 6 +++++- src/test/java/org/junit/tests/assertion/AssertionTest.java | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/junit/Assert.java b/src/main/java/org/junit/Assert.java index d7deb06bb33e..fdefe0ee8c40 100755 --- a/src/main/java/org/junit/Assert.java +++ b/src/main/java/org/junit/Assert.java @@ -108,7 +108,11 @@ static public void fail() { */ static public void assertEquals(String message, Object expected, Object actual) { - if (equalsRegardingNull(expected, actual)) { + if (expected instanceof Double && actual instanceof Double) { + assertEquals(message, (Double) expected, (Double) actual, 0.0); + } else if (expected instanceof Float && actual instanceof Float) { + assertEquals(message, (Float) expected, (Float) actual, 0.0); + } else if (equalsRegardingNull(expected, actual)) { return; } else if (expected instanceof String && actual instanceof String) { String cleanMessage = message == null ? "" : message; diff --git a/src/test/java/org/junit/tests/assertion/AssertionTest.java b/src/test/java/org/junit/tests/assertion/AssertionTest.java index 27b47cd25bd4..729ec3afacbb 100755 --- a/src/test/java/org/junit/tests/assertion/AssertionTest.java +++ b/src/test/java/org/junit/tests/assertion/AssertionTest.java @@ -256,6 +256,10 @@ public void equals() { assertEquals(1l, 1l); assertEquals(1.0, 1.0, 0.0); assertEquals(1.0d, 1.0d, 0.0d); + assertEquals(new Double(0.0), new Double(-0.0), 0.0d); + assertEquals(new Double(0.0), new Double(-0.0)); + assertEquals(new Float(0.0), new Float(-0.0), 0.0); + assertEquals(new Float(0.0), new Float(-0.0)); } @Test(expected = AssertionError.class)