/** * <p>Compares two arrays, using equals(), handling multi-dimensional arrays * correctly. * * <p>Multi-dimensional primitive arrays are also handled correctly by this method. * * @param array1 the left hand array to compare, may be {@code null} * @param array2 the right hand array to compare, may be {@code null} * @return {@code true} if the arrays are equal * @deprecated this method has been replaced by {@code java.util.Objects.deepEquals(Object, Object)} and will be * removed from future releases. */ @Deprecated public static boolean isEquals(final Object array1, final Object array2) { return new EqualsBuilder().append(array1, array2).isEquals(); }
@SuppressWarnings( "EqualsWhichDoesntCheckParameterClass" ) @Override public final boolean equals( Object other ) { // equals() and hashcode() are only used for testing so we don't care that they are a bit slow. return EqualsBuilder.reflectionEquals( this, other ); }
@Override public final boolean equals(final Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } AbstractChannelReader rhs = (AbstractChannelReader) obj; return new EqualsBuilder().appendSuper(super.equals(obj)).append(uniqueId, rhs.uniqueId).isEquals(); }
@Test public void testObjectRecursiveCycleSelfreference() { final TestRecursiveCycleObject o1_a = new TestRecursiveCycleObject(1); final TestRecursiveCycleObject o1_b = new TestRecursiveCycleObject(1); final TestRecursiveCycleObject o2 = new TestRecursiveCycleObject(2); assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_a).isEquals()); assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_b).isEquals()); assertFalse(new EqualsBuilder().setTestRecursive(true).append(o1_a, o2).isEquals()); }
@Test public void testObjectBuild() { final TestObject o1 = new TestObject(4); final TestObject o2 = new TestObject(5); assertEquals(Boolean.TRUE, new EqualsBuilder().append(o1, o1).build()); assertEquals(Boolean.FALSE, new EqualsBuilder().append(o1, o2).build()); o2.setA(4); assertEquals(Boolean.TRUE, new EqualsBuilder().append(o1, o2).build()); assertEquals(Boolean.FALSE, new EqualsBuilder().append(o1, this).build()); assertEquals(Boolean.FALSE, new EqualsBuilder().append(o1, null).build()); assertEquals(Boolean.FALSE, new EqualsBuilder().append(null, o2).build()); assertEquals(Boolean.TRUE, new EqualsBuilder().append((Object) null, null).build()); }
/** * Test from http://issues.apache.org/bugzilla/show_bug.cgi?id=33067 */ @Test public void testNpeForNullElement() { final Object[] x1 = new Object[]{Integer.valueOf(1), null, Integer.valueOf(3)}; final Object[] x2 = new Object[]{Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)}; // causes an NPE in 2.0 according to: // http://issues.apache.org/bugzilla/show_bug.cgi?id=33067 new EqualsBuilder().append(x1, x2); }
@Test public void testReflectionAppend() { assertTrue(EqualsBuilder.reflectionEquals(null, null)); final TestObject o1 = new TestObject(4); final TestObject o2 = new TestObject(5); assertTrue(new EqualsBuilder().reflectionAppend(o1, o1).build()); assertFalse(new EqualsBuilder().reflectionAppend(o1, o2).build()); o2.setA(4); assertTrue(new EqualsBuilder().reflectionAppend(o1, o2).build()); assertFalse(new EqualsBuilder().reflectionAppend(o1, this).build()); assertFalse(new EqualsBuilder().reflectionAppend(o1, null).build()); assertFalse(new EqualsBuilder().reflectionAppend(null, o2).build()); }
/** * <p>Returns <code>true</code> if the fields that have been checked * are all equal.</p> * * @return <code>true</code> if all of the fields that have been checked * are equal, <code>false</code> otherwise. * * @since 3.0 */ @Override public Boolean build() { return Boolean.valueOf(isEquals()); }
@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()); }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FetchArtifactEnvironmentVariable that = (FetchArtifactEnvironmentVariable) o; return new EqualsBuilder() .append(secure, that.secure) .append(name, that.name) .append(value, that.value) .isEquals(); }
@Override public final boolean equals(final Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } AbstractStreamConsumer rhs = (AbstractStreamConsumer) obj; return new EqualsBuilder().appendSuper(super.equals(obj)).append(uniqueId, rhs.uniqueId).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()); }
@Override public boolean equals( Object o ) { return EqualsBuilder.reflectionEquals( this, o ); }
@Test public void testDouble() { final double o1 = 1; final double o2 = 2; assertTrue(new EqualsBuilder().append(o1, o1).isEquals()); assertFalse(new EqualsBuilder().append(o1, o2).isEquals()); assertFalse(new EqualsBuilder().append(o1, Double.NaN).isEquals()); assertTrue(new EqualsBuilder().append(Double.NaN, Double.NaN).isEquals()); assertTrue(new EqualsBuilder().append(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY).isEquals()); }
@Override public final boolean equals(final Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } UDPStreamConsumer rhs = (UDPStreamConsumer) obj; return new EqualsBuilder().appendSuper(super.equals(obj)).append(uniqueId, rhs.uniqueId).isEquals(); }
@Test public void testObjectRecursiveCycle() { final TestRecursiveCycleObject o1_a = new TestRecursiveCycleObject(1); final TestRecursiveCycleObject i1_a = new TestRecursiveCycleObject(o1_a, 100); o1_a.setCycle(i1_a); final TestRecursiveCycleObject o1_b = new TestRecursiveCycleObject(1); final TestRecursiveCycleObject i1_b = new TestRecursiveCycleObject(o1_b, 100); o1_b.setCycle(i1_b); final TestRecursiveCycleObject o2 = new TestRecursiveCycleObject(2); final TestRecursiveCycleObject i2 = new TestRecursiveCycleObject(o1_b, 200); o2.setCycle(i2); assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_a).isEquals()); assertTrue(new EqualsBuilder().setTestRecursive(true).append(o1_a, o1_b).isEquals()); assertFalse(new EqualsBuilder().setTestRecursive(true).append(o1_a, o2).isEquals()); assertTrue(EqualsBuilder.reflectionEquals(o1_a, o1_b, false, null, true)); assertFalse(EqualsBuilder.reflectionEquals(o1_a, o2, false, null, true)); }
@Override public boolean equals(Object o) { return EqualsBuilder.reflectionEquals(this, o); }
@Test public void testFloat() { final float o1 = 1; final float o2 = 2; assertTrue(new EqualsBuilder().append(o1, o1).isEquals()); assertFalse(new EqualsBuilder().append(o1, o2).isEquals()); assertFalse(new EqualsBuilder().append(o1, Float.NaN).isEquals()); assertTrue(new EqualsBuilder().append(Float.NaN, Float.NaN).isEquals()); assertTrue(new EqualsBuilder().append(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY).isEquals()); }