Skip to content

Commit 38279c6

Browse files
authored
Merge pull request #2914 from ahgittin/github-2913
GitHub 2913
2 parents 2a4fb57 + 88eb73f commit 38279c6

3 files changed

Lines changed: 83 additions & 2 deletions

File tree

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
Current
22

3+
Fixed: GITHUB-2913: Maps containing nulls can be incorrectly considered equal (Alex Heneveld)
4+
35
7.8.0
46
Fixed: GITHUB-2906: Generate testng-results.xml per test suite (Krishnan Mahadevan)
57
New: GITHUB-2897: Not exception but warning if some (not all) of the given test names are not found in suite files. (Bruce Wen)

testng-asserts/src/main/java/org/testng/Assert.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2109,11 +2109,14 @@ private static String getNotEqualReason(Map<?, ?> actual, Map<?, ?> expected) {
21092109
Object key = entry.getKey();
21102110
Object value = entry.getValue();
21112111
Object expectedValue = expected.get(key);
2112-
String assertMessage =
2113-
"Maps do not match for key:" + key + " actual:" + value + " expected:" + expectedValue;
21142112
if (!areEqualImpl(value, expectedValue)) {
2113+
String assertMessage =
2114+
"Maps do not match for key:" + key + " actual:" + value + " expected:" + expectedValue;
21152115
return assertMessage;
21162116
}
2117+
if (value == null && !expected.containsKey(key)) {
2118+
return "Maps do not match for key:" + key + " actual: null but not present in expected";
2119+
}
21172120
}
21182121
return null;
21192122
}

testng-asserts/src/test/java/test/asserttests/AssertTest.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,4 +563,80 @@ public void checkArrayNotEqualsFailsWhenDifferentOrder() {
563563

564564
assertNotEquals(array1, array2);
565565
}
566+
567+
@Test
568+
public void checkMapEquals() {
569+
Map<String, Object> map1 = new LinkedHashMap<>();
570+
map1.put("a", "1");
571+
map1.put("b", 2);
572+
Map<String, Object> map2 = new LinkedHashMap<>();
573+
map2.put("b", 2);
574+
map2.put("a", "1");
575+
576+
assertMapsEqual(map1, map2);
577+
}
578+
579+
@Test
580+
public void checkMapNotEquals() {
581+
Map<String, Object> map1 = new LinkedHashMap<>();
582+
map1.put("a", "1");
583+
map1.put("b", "2");
584+
Map<String, Object> map2 = new LinkedHashMap<>();
585+
map2.put("a", "1");
586+
map2.put("b", 2);
587+
588+
assertMapsNotEqual(map1, map2);
589+
}
590+
591+
@Test(description = "GITHUB-2913")
592+
public void checkMapNotEqualsWithNull() {
593+
Map<String, Object> map1 = new LinkedHashMap<>();
594+
map1.put("a", 1);
595+
map1.put("b", null);
596+
Map<String, Object> map2 = new LinkedHashMap<>();
597+
map2.put("a", 1);
598+
map2.put("c", null);
599+
600+
assertMapsNotEqual(map1, map2);
601+
}
602+
603+
protected void assertMapsEqual(Map m1, Map m2) {
604+
assertEquals((Object) m1, (Object) m2);
605+
assertEquals(m1, m2);
606+
607+
boolean succeeded = false;
608+
try {
609+
assertNotEquals((Object) m1, (Object) m2);
610+
succeeded = true;
611+
} catch (AssertionError expected) {
612+
}
613+
assertFalse(succeeded, "Maps reported as not equal when equal: " + m1 + " / " + m2);
614+
615+
try {
616+
assertNotEquals(m1, m2);
617+
succeeded = true;
618+
} catch (AssertionError expected) {
619+
}
620+
assertFalse(succeeded, "Maps reported as not equal when equal: " + m1 + " / " + m2);
621+
}
622+
623+
protected void assertMapsNotEqual(Map m1, Map m2) {
624+
boolean succeeded = false;
625+
try {
626+
assertEquals((Object) m1, (Object) m2);
627+
succeeded = true;
628+
} catch (AssertionError expected) {
629+
}
630+
assertFalse(succeeded, "Maps reported as equal when not equal: " + m1 + " / " + m2);
631+
632+
try {
633+
assertEquals(m1, m2);
634+
succeeded = true;
635+
} catch (AssertionError expected) {
636+
}
637+
assertFalse(succeeded, "Maps reported as equal when not equal: " + m1 + " / " + m2);
638+
639+
assertNotEquals((Object) m1, (Object) m2);
640+
assertNotEquals(m1, m2);
641+
}
566642
}

0 commit comments

Comments
 (0)