Skip to content

Commit c38bdb7

Browse files
author
David Saff
committed
Merge pull request #611 from motlin/master
Implement assertNotEquals() for float parameters.
2 parents 92a3f73 + f5c7fe4 commit c38bdb7

File tree

2 files changed

+98
-40
lines changed

2 files changed

+98
-40
lines changed

src/main/java/org/junit/Assert.java

100644100755
+86-40
Original file line numberDiff line numberDiff line change
@@ -147,32 +147,32 @@ static public void assertEquals(Object expected, Object actual) {
147147
/**
148148
* Asserts that two objects are <b>not</b> equals. If they are, an
149149
* {@link AssertionError} is thrown with the given message. If
150-
* <code>first</code> and <code>second</code> are <code>null</code>,
150+
* <code>unexpected</code> and <code>actual</code> are <code>null</code>,
151151
* they are considered equal.
152152
*
153153
* @param message the identifying message for the {@link AssertionError} (<code>null</code>
154154
* okay)
155-
* @param first first value to check
156-
* @param second the value to check against <code>first</code>
155+
* @param unexpected unexpected value to check
156+
* @param actual the value to check against <code>unexpected</code>
157157
*/
158-
static public void assertNotEquals(String message, Object first,
159-
Object second) {
160-
if (equalsRegardingNull(first, second)) {
161-
failEquals(message, first);
158+
static public void assertNotEquals(String message, Object unexpected,
159+
Object actual) {
160+
if (equalsRegardingNull(unexpected, actual)) {
161+
failEquals(message, actual);
162162
}
163163
}
164164

165165
/**
166166
* Asserts that two objects are <b>not</b> equals. If they are, an
167167
* {@link AssertionError} without a message is thrown. If
168-
* <code>first</code> and <code>second</code> are <code>null</code>,
168+
* <code>unexpected</code> and <code>actual</code> are <code>null</code>,
169169
* they are considered equal.
170170
*
171-
* @param first first value to check
172-
* @param second the value to check against <code>first</code>
171+
* @param unexpected unexpected value to check
172+
* @param actual the value to check against <code>unexpected</code>
173173
*/
174-
static public void assertNotEquals(Object first, Object second) {
175-
assertNotEquals(null, first, second);
174+
static public void assertNotEquals(Object unexpected, Object actual) {
175+
assertNotEquals(null, unexpected, actual);
176176
}
177177

178178
private static void failEquals(String message, Object actual) {
@@ -191,60 +191,76 @@ private static void failEquals(String message, Object actual) {
191191
*
192192
* @param message the identifying message for the {@link AssertionError} (<code>null</code>
193193
* okay)
194-
* @param first first value to check
195-
* @param second the value to check against <code>first</code>
194+
* @param unexpected unexpected value to check
195+
* @param actual the value to check against <code>unexpected</code>
196196
*/
197-
static public void assertNotEquals(String message, long first, long second) {
198-
assertNotEquals(message, (Long) first, (Long) second);
197+
static public void assertNotEquals(String message, long unexpected, long actual) {
198+
assertNotEquals(message, (Long) unexpected, (Long) actual);
199199
}
200200

201201
/**
202202
* Asserts that two longs are <b>not</b> equals. If they are, an
203203
* {@link AssertionError} without a message is thrown.
204204
*
205-
* @param first first value to check
206-
* @param second the value to check against <code>first</code>
205+
* @param unexpected unexpected value to check
206+
* @param actual the value to check against <code>unexpected</code>
207207
*/
208-
static public void assertNotEquals(long first, long second) {
209-
assertNotEquals(null, first, second);
208+
static public void assertNotEquals(long unexpected, long actual) {
209+
assertNotEquals(null, unexpected, actual);
210210
}
211211

212212
/**
213-
* Asserts that two doubles or floats are <b>not</b> equal to within a positive delta.
213+
* Asserts that two doubles are <b>not</b> equal to within a positive delta.
214214
* If they are, an {@link AssertionError} is thrown with the given
215-
* message. If the expected value is infinity then the delta value is
215+
* message. If the unexpected value is infinity then the delta value is
216216
* ignored. NaNs are considered equal:
217217
* <code>assertNotEquals(Double.NaN, Double.NaN, *)</code> fails
218218
*
219219
* @param message the identifying message for the {@link AssertionError} (<code>null</code>
220220
* okay)
221-
* @param first first value to check
222-
* @param second the value to check against <code>first</code>
223-
* @param delta the maximum delta between <code>expected</code> and
221+
* @param unexpected unexpected value
222+
* @param actual the value to check against <code>unexpected</code>
223+
* @param delta the maximum delta between <code>unexpected</code> and
224224
* <code>actual</code> for which both numbers are still
225225
* considered equal.
226226
*/
227-
static public void assertNotEquals(String message, double first,
228-
double second, double delta) {
229-
if (!doubleIsDifferent(first, second, delta)) {
230-
failEquals(message, new Double(first));
227+
static public void assertNotEquals(String message, double unexpected,
228+
double actual, double delta) {
229+
if (!doubleIsDifferent(unexpected, actual, delta)) {
230+
failEquals(message, new Double(actual));
231231
}
232232
}
233233

234234
/**
235-
* Asserts that two doubles or floats are <b>not</b> equal to within a positive delta.
236-
* If they are, an {@link AssertionError} is thrown. If the expected
235+
* Asserts that two doubles are <b>not</b> equal to within a positive delta.
236+
* If they are, an {@link AssertionError} is thrown. If the unexpected
237237
* value is infinity then the delta value is ignored.NaNs are considered
238238
* equal: <code>assertNotEquals(Double.NaN, Double.NaN, *)</code> fails
239239
*
240-
* @param first first value to check
241-
* @param second the value to check against <code>first</code>
242-
* @param delta the maximum delta between <code>expected</code> and
240+
* @param unexpected unexpected value
241+
* @param actual the value to check against <code>unexpected</code>
242+
* @param delta the maximum delta between <code>unexpected</code> and
243+
* <code>actual</code> for which both numbers are still
244+
* considered equal.
245+
*/
246+
static public void assertNotEquals(double unexpected, double actual, double delta) {
247+
assertNotEquals(null, unexpected, actual, delta);
248+
}
249+
250+
/**
251+
* Asserts that two floats are <b>not</b> equal to within a positive delta.
252+
* If they are, an {@link AssertionError} is thrown. If the unexpected
253+
* value is infinity then the delta value is ignored.NaNs are considered
254+
* equal: <code>assertNotEquals(Float.NaN, Float.NaN, *)</code> fails
255+
*
256+
* @param unexpected unexpected value
257+
* @param actual the value to check against <code>unexpected</code>
258+
* @param delta the maximum delta between <code>unexpected</code> and
243259
* <code>actual</code> for which both numbers are still
244260
* considered equal.
245261
*/
246-
static public void assertNotEquals(double first, double second, double delta) {
247-
assertNotEquals(null, first, second, delta);
262+
static public void assertNotEquals(float unexpected, float actual, float delta) {
263+
assertNotEquals(null, unexpected, actual, delta);
248264
}
249265

250266
/**
@@ -512,14 +528,33 @@ static public void assertEquals(String message, double expected,
512528
*/
513529
static public void assertEquals(String message, float expected,
514530
float actual, float delta) {
515-
if (Float.compare(expected, actual) == 0) {
516-
return;
517-
}
518-
if (!(Math.abs(expected - actual) <= delta)) {
531+
if (floatIsDifferent(expected, actual, delta)) {
519532
failNotEquals(message, new Float(expected), new Float(actual));
520533
}
521534
}
522535

536+
/**
537+
* Asserts that two floats are <b>not</b> equal to within a positive delta.
538+
* If they are, an {@link AssertionError} is thrown with the given
539+
* message. If the unexpected value is infinity then the delta value is
540+
* ignored. NaNs are considered equal:
541+
* <code>assertNotEquals(Float.NaN, Float.NaN, *)</code> fails
542+
*
543+
* @param message the identifying message for the {@link AssertionError} (<code>null</code>
544+
* okay)
545+
* @param unexpected unexpected value
546+
* @param actual the value to check against <code>unexpected</code>
547+
* @param delta the maximum delta between <code>unexpected</code> and
548+
* <code>actual</code> for which both numbers are still
549+
* considered equal.
550+
*/
551+
static public void assertNotEquals(String message, float unexpected,
552+
float actual, float delta) {
553+
if (!floatIsDifferent(unexpected, actual, delta)) {
554+
failEquals(message, new Float(actual));
555+
}
556+
}
557+
523558
static private boolean doubleIsDifferent(double d1, double d2, double delta) {
524559
if (Double.compare(d1, d2) == 0) {
525560
return false;
@@ -531,6 +566,17 @@ static private boolean doubleIsDifferent(double d1, double d2, double delta) {
531566
return true;
532567
}
533568

569+
static private boolean floatIsDifferent(float f1, float f2, float delta) {
570+
if (Float.compare(f1, f2) == 0) {
571+
return false;
572+
}
573+
if ((Math.abs(f1 - f2) <= delta)) {
574+
return false;
575+
}
576+
577+
return true;
578+
}
579+
534580
/**
535581
* Asserts that two longs are equal. If they are not, an
536582
* {@link AssertionError} is thrown.

src/test/java/org/junit/tests/assertion/AssertionTest.java

100644100755
+12
Original file line numberDiff line numberDiff line change
@@ -619,15 +619,27 @@ public void assertNotEqualsWorksWithPrimitiveTypes() {
619619
assertNotEquals("The values should be different", 1L, 2L);
620620
assertNotEquals(1.0, 2.0, 0);
621621
assertNotEquals("The values should be different", 1.0, 2.0, 0);
622+
assertNotEquals(1.0f, 2.0f, 0f);
623+
assertNotEquals("The values should be different", 1.0f, 2.0f, 0f);
622624
}
623625

624626
@Test(expected = AssertionError.class)
625627
public void assertNotEqualsConsidersDeltaCorrectly() {
626628
assertNotEquals(1.0, 0.9, 0.1);
627629
}
628630

631+
@Test(expected = AssertionError.class)
632+
public void assertNotEqualsConsidersFloatDeltaCorrectly() {
633+
assertNotEquals(1.0f, 0.75f, 0.25f);
634+
}
635+
629636
@Test(expected = AssertionError.class)
630637
public void assertNotEqualsIgnoresDeltaOnNaN() {
631638
assertNotEquals(Double.NaN, Double.NaN, 1);
632639
}
640+
641+
@Test(expected = AssertionError.class)
642+
public void assertNotEqualsIgnoresFloatDeltaOnNaN() {
643+
assertNotEquals(Float.NaN, Float.NaN, 1f);
644+
}
633645
}

0 commit comments

Comments
 (0)