aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/apache/commons
diff options
context:
space:
mode:
authorpascalschumacher <pascalschumacher@gmx.net>2018-02-11 20:43:05 +0100
committerpascalschumacher <pascalschumacher@gmx.net>2018-02-11 20:43:05 +0100
commit2e9f3a80146262511ca7bcdd3411f095dff4951d (patch)
tree24b7f69be9c598e463634846a32425ebb6a28fbc /src/test/java/org/apache/commons
parent2ce40494073aa4e9bdcba4c39d24727b7141d227 (diff)
downloadapache-commons-lang-2e9f3a80146262511ca7bcdd3411f095dff4951d.tar.gz
LANG-1356: Add bypass option for classes to recursive and reflective EqualsBuilder
Patch supplied by Yathos UG
Diffstat (limited to 'src/test/java/org/apache/commons')
-rw-r--r--src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
index 23651f612..05f1da9a8 100644
--- a/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
@@ -168,6 +168,19 @@ public class EqualsBuilderTest {
}
}
+ static class TestRecursiveGenericObject<T> {
+
+ private final T a;
+
+ TestRecursiveGenericObject(final T a) {
+ this.a = a;
+ }
+
+ public T getA() {
+ return a;
+ }
+ }
+
static class TestRecursiveObject {
private final TestRecursiveInnerObject a;
private final TestRecursiveInnerObject b;
@@ -419,6 +432,35 @@ public class EqualsBuilderTest {
}
@Test
+ public void testObjectRecursiveGenericInteger() {
+ final TestRecursiveGenericObject<Integer> o1_a = new TestRecursiveGenericObject<Integer>(1);
+ final TestRecursiveGenericObject<Integer> o1_b = new TestRecursiveGenericObject<Integer>(1);
+ final TestRecursiveGenericObject<Integer> o2 = new TestRecursiveGenericObject<Integer>(2);
+
+ assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_b).isEquals());
+ assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_b, o1_a).isEquals());
+
+ assertFalse(new EqualsBuilder().setTestRecursive(true).append(o1_b, o2).isEquals());
+ }
+
+ @Test
+ public void testObjectRecursiveGenericString() {
+ // Note: Do not use literals, because string literals are always mapped by same object (internal() of String))!
+ String s1_a = String.valueOf(1);
+ final TestRecursiveGenericObject<String> o1_a = new TestRecursiveGenericObject<String>(s1_a);
+ final TestRecursiveGenericObject<String> o1_b = new TestRecursiveGenericObject<String>(String.valueOf(1));
+ final TestRecursiveGenericObject<String> o2 = new TestRecursiveGenericObject<String>(String.valueOf(2));
+
+ // To trigger bug reported in LANG-1356, call hashCode only on string in instance o1_a
+ s1_a.hashCode();
+
+ assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_b).isEquals());
+ assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_b, o1_a).isEquals());
+
+ assertFalse(new EqualsBuilder().setTestRecursive(true).append(o1_b, o2).isEquals());
+ }
+
+ @Test
public void testObjectRecursive() {
final TestRecursiveInnerObject i1_1 = new TestRecursiveInnerObject(1);
final TestRecursiveInnerObject i1_2 = new TestRecursiveInnerObject(1);