Fixed: TESTNG-415. Assert.assertEquals() for sets and maps fails with 'null' as arguments
diff --git a/CHANGES.txt b/CHANGES.txt
index db10560..d996ca0 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,7 @@
Added: -randomizesuites (Nalin Makar)
Added: IConfigurable
+Fixed: TESTNG-415. Assert.assertEquals() for sets and maps fails with 'null' as arguments
Fixed: TESTNG-384. Use CharSequence instead of String for assert messages (Toms Pollak)
Fixed: TESTNG-186. Rename IWorkerApadter to IWorkerAdapter (Toms Pollak)
Fixed: typo -testRunFactory
diff --git a/src/main/java/org/testng/Assert.java b/src/main/java/org/testng/Assert.java
index 4ba1055..9cd73ec 100644
--- a/src/main/java/org/testng/Assert.java
+++ b/src/main/java/org/testng/Assert.java
@@ -512,7 +512,7 @@
if (actual == null || expected == null) {
if (message != null) fail(message);
- else fail("Arrays not equal: " + expected + " and " + actual);
+ else fail("Collections not equal: " + expected + " and " + actual);
}
assertEquals(actual.size(), expected.size(), message + ": lists don't have the same size");
@@ -659,6 +659,12 @@
* Asserts that two sets are equal.
*/
static public void assertEquals(Set actual, Set expected) {
+ if(actual == expected) return;
+
+ if (actual == null || expected == null) {
+ fail("Sets not equal: " + expected + " and " + actual);
+ }
+
if (!actual.equals(expected)) {
fail("Sets differ: expected " + expected + " but got " + actual);
}
@@ -668,9 +674,15 @@
* Asserts that two maps are equal.
*/
static public void assertEquals(Map actual, Map expected) {
- if (!actual.equals(expected)) {
- fail("Maps differ: expected " + expected + " but got " + actual);
- }
+ if(actual == expected) return;
+
+ if (actual == null || expected == null) {
+ fail("Maps not equal: " + expected + " and " + actual);
}
+ if (!actual.equals(expected)) {
+ fail("Maps differ: expected " + expected + " but got " + actual);
+ }
+ }
+
}
diff --git a/src/test/java/org/testng/AssertTest.java b/src/test/java/org/testng/AssertTest.java
index d637aac..43dda11 100644
--- a/src/test/java/org/testng/AssertTest.java
+++ b/src/test/java/org/testng/AssertTest.java
@@ -1,8 +1,12 @@
package org.testng;
import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
import org.testng.annotations.Test;
+import org.testng.collections.Maps;
+import org.testng.internal.annotations.Sets;
/**
@@ -29,4 +33,42 @@
Collection actual = null;
Assert.assertEquals(actual, expected);
}
+
+ @Test
+ public void nullSetAssertEquals() {
+ Set expected = null;
+ Set actual = null;
+ Assert.assertEquals(actual, expected);
+ }
+
+ @Test
+ public void nullMapAssertEquals() {
+ Map expected = null;
+ Map actual = null;
+ Assert.assertEquals(actual, expected);
+ }
+
+ @Test
+ public void oneNullMapAssertEquals() {
+ Map expected = Maps.newHashMap();
+ Map actual = null;
+ try {
+ Assert.assertEquals(actual, expected);
+ }
+ catch (AssertionError error) {
+ //do nothing
+ }
+ }
+
+ @Test
+ public void oneNullSetAssertEquals() {
+ Set expected = null;
+ Set actual = Sets.newHashSet();
+ try {
+ Assert.assertEquals(actual, expected);
+ }
+ catch (AssertionError error) {
+ //do nothing
+ }
+ }
}