This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new 60d4c9843 Add tests to ensure nulls compare correctly
60d4c9843 is described below
commit 60d4c9843891f07596d2caf52fb8689d80179344
Author: Sebb <[email protected]>
AuthorDate: Sun Jun 14 20:31:45 2026 +0100
Add tests to ensure nulls compare correctly
---
.../lang3/compare/ObjectToStringComparator.java | 2 +-
.../compare/ObjectToStringComparatorTest.java | 24 ++++++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git
a/src/main/java/org/apache/commons/lang3/compare/ObjectToStringComparator.java
b/src/main/java/org/apache/commons/lang3/compare/ObjectToStringComparator.java
index 10bf81d0f..4eceaa39d 100644
---
a/src/main/java/org/apache/commons/lang3/compare/ObjectToStringComparator.java
+++
b/src/main/java/org/apache/commons/lang3/compare/ObjectToStringComparator.java
@@ -65,7 +65,7 @@ public int compare(final Object o1, final Object o2) {
final String string1 = o1.toString();
final String string2 = o2.toString();
// No guarantee that toString() returns a non-null value, despite what
Spotbugs thinks.
- if (string1 == string2) {
+ if (string1 == string2) { // this is essential to ensure equality if
both strings are null
return 0;
}
if (string1 == null) {
diff --git
a/src/test/java/org/apache/commons/lang3/compare/ObjectToStringComparatorTest.java
b/src/test/java/org/apache/commons/lang3/compare/ObjectToStringComparatorTest.java
index 537cf2cec..260890073 100644
---
a/src/test/java/org/apache/commons/lang3/compare/ObjectToStringComparatorTest.java
+++
b/src/test/java/org/apache/commons/lang3/compare/ObjectToStringComparatorTest.java
@@ -22,6 +22,7 @@
import static org.junit.jupiter.api.Assertions.assertSame;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang3.AbstractLangTest;
@@ -46,6 +47,29 @@ public String toString() {
}
}
+ @Test
+ void testCompareNulls() {
+ final Comparator<Object> comp = ObjectToStringComparator.INSTANCE;
+ assertEquals(0, comp.compare(null, null));
+ final Object o1 = new Thing(null);
+ final Object o2 = new Thing(null);
+ assertEquals(0, comp.compare(o1, o1));
+ assertEquals(0, comp.compare(o1, o2));
+ }
+
+ @Test
+ void testCompareNullWithNonNull() {
+ final Comparator<Object> comp = ObjectToStringComparator.INSTANCE;
+ final Object o1 = new Thing(null);
+ final Object o2 = new Thing("");
+ assertEquals(0, comp.compare(o1, o1));
+ assertEquals(0, comp.compare(o2, o2));
+ assertEquals(1, comp.compare(o1, o2));
+ assertEquals(-1, comp.compare(o2, o1));
+ assertEquals(1, comp.compare(null, o2));
+ assertEquals(-1, comp.compare(o2, null));
+ }
+
@Test
void testNullLeft() {
final Thing thing = new Thing("y");