Skip to content

Commit 841ae94

Browse files
prashant-marotiPrashant MarotiPrashant Maroti
authored
Comparing collection using equals method for assertEquals (#2460)
* Comparing collection with equals method. * replaced all occurence of comparison operator with equals methods for non primitive data types * added test cases for collections, sets and list * build failing Co-authored-by: Prashant Maroti <prashant@ip-192-168-1-2.ap-southeast-1.compute.internal> Co-authored-by: Prashant Maroti <prashant@ip-192-168-1-4.ap-southeast-1.compute.internal>
1 parent 378e63e commit 841ae94

3 files changed

Lines changed: 37 additions & 14 deletions

File tree

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
Current
2+
Fixed: GITHUB-2296: Fix for assertEquals not working for sets as order is not guaranteed. (Prashant Maroti)
23
Fixed: GITHUB-2465: Fix bux where Strings.join returns empty String
34
Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Julien Herr & Krishnan Mahadevan)
45
New : GITHUB-2456: Add onDataProviderFailure listener (Krishnan Mahadevan)

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
import static org.testng.internal.EclipseInterface.ASSERT_MIDDLE;
66
import static org.testng.internal.EclipseInterface.ASSERT_RIGHT;
77
import static org.testng.internal.EclipseInterface.ASSERT_UNEQUAL_LEFT;
8-
98
import java.lang.reflect.Array;
109
import java.util.Arrays;
1110
import java.util.Collection;
1211
import java.util.Iterator;
1312
import java.util.List;
1413
import java.util.Map;
14+
import java.util.Objects;
1515
import java.util.Set;
1616
import org.testng.collections.Lists;
1717

@@ -165,7 +165,7 @@ private static boolean areEqualImpl(Object actual, Object expected) {
165165
* returns not equal reason or null if equal
166166
**/
167167
private static String getArrayNotEqualReason(Object actual, Object expected) {
168-
if (actual == expected) {
168+
if (Objects.equals(actual, expected)) {
169169
return null;
170170
}
171171
if (null == expected) {
@@ -975,7 +975,7 @@ public static void assertNull(Object object, String message) {
975975
* @param message the assertion error message
976976
*/
977977
public static void assertSame(Object actual, Object expected, String message) {
978-
if (expected == actual) {
978+
if (Objects.equals(actual, expected)) {
979979
return;
980980
}
981981
failNotSame(actual, expected, message);
@@ -1001,7 +1001,7 @@ public static void assertSame(Object actual, Object expected) {
10011001
* @param message the assertion error message
10021002
*/
10031003
public static void assertNotSame(Object actual, Object expected, String message) {
1004-
if (expected == actual) {
1004+
if (Objects.equals(actual, expected)) {
10051005
failSame(actual, expected, message);
10061006
}
10071007
}
@@ -1074,7 +1074,7 @@ public static void assertEquals(Collection<?> actual, Collection<?> expected) {
10741074
* @param message the assertion error message
10751075
*/
10761076
public static void assertEquals(Collection<?> actual, Collection<?> expected, String message) {
1077-
if (actual == expected) {
1077+
if (Objects.equals(actual, expected)) {
10781078
return;
10791079
}
10801080

@@ -1126,7 +1126,7 @@ public static void assertEquals(Iterator<?> actual, Iterator<?> expected) {
11261126
* @param message the assertion error message
11271127
*/
11281128
public static void assertEquals(Iterator<?> actual, Iterator<?> expected, String message) {
1129-
if (actual == expected) {
1129+
if (Objects.equals(actual, expected)) {
11301130
return;
11311131
}
11321132
if (actual == null || expected == null) {
@@ -1183,7 +1183,7 @@ public static void assertEquals(Iterable<?> actual, Iterable<?> expected) {
11831183
* @param message the assertion error message
11841184
*/
11851185
public static void assertEquals(Iterable<?> actual, Iterable<?> expected, String message) {
1186-
if (actual == expected) {
1186+
if (Objects.equals(actual, expected)) {
11871187
return;
11881188
}
11891189

@@ -1210,7 +1210,7 @@ public static void assertEquals(Iterable<?> actual, Iterable<?> expected, String
12101210
* @param message the assertion error message
12111211
*/
12121212
public static void assertEquals(Object[] actual, Object[] expected, String message) {
1213-
if (actual == expected) {
1213+
if (Arrays.equals(actual, expected)) {
12141214
return;
12151215
}
12161216

@@ -1256,7 +1256,7 @@ public static void assertEquals(Object[] actual, Object[] expected, String messa
12561256
* @param message the assertion error message
12571257
*/
12581258
public static void assertEqualsNoOrder(Object[] actual, Object[] expected, String message) {
1259-
if (actual == expected) {
1259+
if (Arrays.equals(actual, expected)) {
12601260
return;
12611261
}
12621262

@@ -1327,7 +1327,7 @@ public static void assertEquals(Set<?> actual, Set<?> expected) {
13271327
* returns not equal reason or null if equal
13281328
**/
13291329
private static String getNotEqualReason(Set<?> actual, Set<?> expected) {
1330-
if (actual == expected) {
1330+
if (Objects.equals(actual, expected)) {
13311331
return null;
13321332
}
13331333

@@ -1336,7 +1336,7 @@ private static String getNotEqualReason(Set<?> actual, Set<?> expected) {
13361336
return "Sets not equal: expected: " + expected + " and actual: " + actual;
13371337
}
13381338

1339-
if (!actual.equals(expected)) {
1339+
if (!Objects.equals(actual, expected)) {
13401340
return "Sets differ: expected " + expected + " but got " + actual;
13411341
}
13421342
return null;
@@ -1365,7 +1365,7 @@ public static void assertEquals(Set<?> actual, Set<?> expected, String message)
13651365
* returns not equal deep reason or null if equal
13661366
**/
13671367
private static String getNotEqualDeepReason(Set<?> actual, Set<?> expected) {
1368-
if (actual == expected) {
1368+
if (Objects.equals(actual, expected)) {
13691369
return null;
13701370
}
13711371

@@ -1413,7 +1413,7 @@ public static void assertEquals(Map<?, ?> actual, Map<?, ?> expected) {
14131413
}
14141414

14151415
private static String getNotEqualReason(Map<?, ?> actual, Map<?, ?> expected) {
1416-
if (actual == expected) {
1416+
if (Objects.equals(actual, expected)) {
14171417
return null;
14181418
}
14191419

@@ -1470,7 +1470,7 @@ public static void assertEqualsDeep(Map<?, ?> actual, Map<?, ?> expected) {
14701470
* returns not equal deep reason or null if equal
14711471
**/
14721472
private static String getNotEqualDeepReason(Map<?, ?> actual, Map<?, ?> expected) {
1473-
if (actual == expected) {
1473+
if (Objects.equals(actual, expected)) {
14741474
return null;
14751475
}
14761476

src/test/java/org/testng/AssertTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.common.collect.ImmutableMap;
44
import org.testng.annotations.Test;
5+
import org.testng.collections.Lists;
56
import org.testng.collections.Maps;
67
import org.testng.collections.Sets;
78
import testhelper.PerformanceUtils;
@@ -41,6 +42,27 @@ public void nullSetAssertEquals() {
4142
Assert.assertEquals(actual, expected);
4243
}
4344

45+
@Test
46+
public void testCollectionAssertEquals() {
47+
final Collection<Asymmetric> expected = Sets.newHashSet(new Asymmetric(10, 'a'), new Asymmetric(11, 'b'));
48+
final Collection<Asymmetric> actual = Sets.newHashSet(new Asymmetric(11, 'b'), new Asymmetric(10, 'a'));
49+
Assert.assertEquals(actual, expected);
50+
}
51+
52+
@Test
53+
public void testListAssertNotEquals() {
54+
final Collection<Asymmetric> expected = Lists.newArrayList(new Asymmetric(10, 'a'), new Asymmetric(11, 'b'));
55+
final Collection<Asymmetric> actual = Lists.newArrayList(new Asymmetric(11, 'b'), new Asymmetric(10, 'a'));
56+
Assert.assertNotEquals(actual, expected);
57+
}
58+
59+
@Test
60+
public void testSetAssertEquals() {
61+
final Set<Asymmetric> expected = Sets.newHashSet(new Asymmetric(10, 'a'), new Asymmetric(11, 'b'));
62+
final Set<Asymmetric> actual = Sets.newHashSet(new Asymmetric(11, 'b'), new Asymmetric(10, 'a'));
63+
Assert.assertEquals(actual, expected);
64+
}
65+
4466
@Test
4567
public void nullMapAssertEquals() {
4668
Map expected = null;

0 commit comments

Comments
 (0)