Sort members.

This commit is contained in:
Gary Gregory 2019-09-13 11:39:08 -04:00
parent 3ea8244287
commit 26ed080b46
1 changed files with 99 additions and 100 deletions

View File

@ -35,8 +35,6 @@ import org.junit.jupiter.api.Test;
*/ */
public class DiffBuilderTest { public class DiffBuilderTest {
private static final ToStringStyle SHORT_STYLE = ToStringStyle.SHORT_PREFIX_STYLE;
private static class TypeTestClass implements Diffable<TypeTestClass> { private static class TypeTestClass implements Diffable<TypeTestClass> {
private ToStringStyle style = SHORT_STYLE; private ToStringStyle style = SHORT_STYLE;
private boolean booleanField = true; private boolean booleanField = true;
@ -82,17 +80,19 @@ public class DiffBuilderTest {
.build(); .build();
} }
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, false);
}
@Override @Override
public boolean equals(final Object obj) { public boolean equals(final Object obj) {
return EqualsBuilder.reflectionEquals(this, obj, false); return EqualsBuilder.reflectionEquals(this, obj, false);
} }
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, false);
}
} }
private static final ToStringStyle SHORT_STYLE = ToStringStyle.SHORT_PREFIX_STYLE;
@Test @Test
public void testBoolean() { public void testBoolean() {
@ -148,6 +148,24 @@ public class DiffBuilderTest {
(Object[]) diff.getRight()); (Object[]) diff.getRight());
} }
@Test
public void testByteArrayEqualAsObject() {
final DiffResult<String> list = new DiffBuilder<>("String1", "String2", SHORT_STYLE)
.append("foo", new boolean[] {false}, new boolean[] {false})
.append("foo", new byte[] {0x01}, new byte[] {0x01})
.append("foo", new char[] {'a'}, new char[] {'a'})
.append("foo", new double[] {1.0}, new double[] {1.0})
.append("foo", new float[] {1.0F}, new float[] {1.0F})
.append("foo", new int[] {1}, new int[] {1})
.append("foo", new long[] {1L}, new long[] {1L})
.append("foo", new short[] {1}, new short[] {1})
.append("foo", new Object[] {1, "two"}, new Object[] {1, "two"})
.build();
assertEquals(0, list.getNumberOfDiffs());
}
@Test @Test
public void testChar() { public void testChar() {
final TypeTestClass class1 = new TypeTestClass(); final TypeTestClass class1 = new TypeTestClass();
@ -176,6 +194,19 @@ public class DiffBuilderTest {
} }
@Test
public void testDiffResult() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class2.intField = 2;
final DiffResult<TypeTestClass> list = new DiffBuilder<>(class1, class2, SHORT_STYLE)
.append("prop1", class1.diff(class2))
.build();
assertEquals(1, list.getNumberOfDiffs());
assertEquals("prop1.int", list.getDiffs().get(0).getFieldName());
}
@Test @Test
public void testDouble() { public void testDouble() {
final TypeTestClass class1 = new TypeTestClass(); final TypeTestClass class1 = new TypeTestClass();
@ -203,6 +234,7 @@ public class DiffBuilderTest {
(Object[]) diff.getRight()); (Object[]) diff.getRight());
} }
@Test @Test
public void testFloat() { public void testFloat() {
final TypeTestClass class1 = new TypeTestClass(); final TypeTestClass class1 = new TypeTestClass();
@ -230,7 +262,6 @@ public class DiffBuilderTest {
(Object[]) diff.getRight()); (Object[]) diff.getRight());
} }
@Test @Test
public void testInt() { public void testInt() {
final TypeTestClass class1 = new TypeTestClass(); final TypeTestClass class1 = new TypeTestClass();
@ -286,30 +317,13 @@ public class DiffBuilderTest {
} }
@Test @Test
public void testShort() { public void testNullLhs() {
final TypeTestClass class1 = new TypeTestClass(); assertThrows(IllegalArgumentException.class, () -> new DiffBuilder<>(null, this, ToStringStyle.DEFAULT_STYLE));
final TypeTestClass class2 = new TypeTestClass();
class2.shortField = 42;
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(1, list.getNumberOfDiffs());
final Diff<?> diff = list.getDiffs().get(0);
assertEquals(Short.valueOf(class1.shortField), diff.getLeft());
assertEquals(Short.valueOf(class2.shortField), diff.getRight());
} }
@Test @Test
public void testShortArray() { public void testNullRhs() {
final TypeTestClass class1 = new TypeTestClass(); assertThrows(IllegalArgumentException.class, () -> new DiffBuilder<>(this, null, ToStringStyle.DEFAULT_STYLE));
final TypeTestClass class2 = new TypeTestClass();
class2.shortArrayField = new short[] {3, 2, 1};
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(1, list.getNumberOfDiffs());
final Diff<?> diff = list.getDiffs().get(0);
assertArrayEquals(ArrayUtils.toObject(class1.shortArrayField),
(Object[]) diff.getLeft());
assertArrayEquals(ArrayUtils.toObject(class2.shortArrayField),
(Object[]) diff.getRight());
} }
@Test @Test
@ -324,20 +338,25 @@ public class DiffBuilderTest {
assertEquals(class2.objectField, diff.getRight()); assertEquals(class2.objectField, diff.getRight());
} }
/**
* Test that "left" and "right" are the same instance and are equal.
*/
@Test @Test
public void testObjectsSameAndEqual() { public void testObjectArray() {
final Integer sameObject = 1; final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass left = new TypeTestClass(); final TypeTestClass class2 = new TypeTestClass();
left.objectField = sameObject; class2.objectArrayField = new Object[] {"string", 1, 2};
final TypeTestClass right = new TypeTestClass(); final DiffResult<TypeTestClass> list = class1.diff(class2);
right.objectField = sameObject; assertEquals(1, list.getNumberOfDiffs());
assertSame(left.objectField, right.objectField); final Diff<?> diff = list.getDiffs().get(0);
assertEquals(left.objectField, right.objectField); assertArrayEquals(class1.objectArrayField, (Object[]) diff.getLeft());
assertArrayEquals(class2.objectArrayField, (Object[]) diff.getRight());
}
final DiffResult<TypeTestClass> list = left.diff(right); @Test
public void testObjectArrayEqual() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class1.objectArrayField = new Object[] {"string", 1, 2};
class2.objectArrayField = new Object[] {"string", 1, 2};
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(0, list.getNumberOfDiffs()); assertEquals(0, list.getNumberOfDiffs());
} }
@ -373,70 +392,23 @@ public class DiffBuilderTest {
assertEquals(1, list.getNumberOfDiffs()); assertEquals(1, list.getNumberOfDiffs());
} }
/**
* Test that "left" and "right" are the same instance and are equal.
*/
@Test @Test
public void testObjectArray() { public void testObjectsSameAndEqual() {
final TypeTestClass class1 = new TypeTestClass(); final Integer sameObject = 1;
final TypeTestClass class2 = new TypeTestClass(); final TypeTestClass left = new TypeTestClass();
class2.objectArrayField = new Object[] {"string", 1, 2}; left.objectField = sameObject;
final DiffResult<TypeTestClass> list = class1.diff(class2); final TypeTestClass right = new TypeTestClass();
assertEquals(1, list.getNumberOfDiffs()); right.objectField = sameObject;
final Diff<?> diff = list.getDiffs().get(0); assertSame(left.objectField, right.objectField);
assertArrayEquals(class1.objectArrayField, (Object[]) diff.getLeft()); assertEquals(left.objectField, right.objectField);
assertArrayEquals(class2.objectArrayField, (Object[]) diff.getRight());
}
@Test final DiffResult<TypeTestClass> list = left.diff(right);
public void testObjectArrayEqual() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class1.objectArrayField = new Object[] {"string", 1, 2};
class2.objectArrayField = new Object[] {"string", 1, 2};
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(0, list.getNumberOfDiffs()); assertEquals(0, list.getNumberOfDiffs());
} }
@Test
public void testByteArrayEqualAsObject() {
final DiffResult<String> list = new DiffBuilder<>("String1", "String2", SHORT_STYLE)
.append("foo", new boolean[] {false}, new boolean[] {false})
.append("foo", new byte[] {0x01}, new byte[] {0x01})
.append("foo", new char[] {'a'}, new char[] {'a'})
.append("foo", new double[] {1.0}, new double[] {1.0})
.append("foo", new float[] {1.0F}, new float[] {1.0F})
.append("foo", new int[] {1}, new int[] {1})
.append("foo", new long[] {1L}, new long[] {1L})
.append("foo", new short[] {1}, new short[] {1})
.append("foo", new Object[] {1, "two"}, new Object[] {1, "two"})
.build();
assertEquals(0, list.getNumberOfDiffs());
}
@Test
public void testDiffResult() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class2.intField = 2;
final DiffResult<TypeTestClass> list = new DiffBuilder<>(class1, class2, SHORT_STYLE)
.append("prop1", class1.diff(class2))
.build();
assertEquals(1, list.getNumberOfDiffs());
assertEquals("prop1.int", list.getDiffs().get(0).getFieldName());
}
@Test
public void testNullLhs() {
assertThrows(IllegalArgumentException.class, () -> new DiffBuilder<>(null, this, ToStringStyle.DEFAULT_STYLE));
}
@Test
public void testNullRhs() {
assertThrows(IllegalArgumentException.class, () -> new DiffBuilder<>(this, null, ToStringStyle.DEFAULT_STYLE));
}
@Test @Test
public void testSameObjectIgnoresAppends() { public void testSameObjectIgnoresAppends() {
final TypeTestClass testClass = new TypeTestClass(); final TypeTestClass testClass = new TypeTestClass();
@ -446,6 +418,33 @@ public class DiffBuilderTest {
assertEquals(0, list.getNumberOfDiffs()); assertEquals(0, list.getNumberOfDiffs());
} }
@Test
public void testShort() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class2.shortField = 42;
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(1, list.getNumberOfDiffs());
final Diff<?> diff = list.getDiffs().get(0);
assertEquals(Short.valueOf(class1.shortField), diff.getLeft());
assertEquals(Short.valueOf(class2.shortField), diff.getRight());
}
@Test
public void testShortArray() {
final TypeTestClass class1 = new TypeTestClass();
final TypeTestClass class2 = new TypeTestClass();
class2.shortArrayField = new short[] {3, 2, 1};
final DiffResult<TypeTestClass> list = class1.diff(class2);
assertEquals(1, list.getNumberOfDiffs());
final Diff<?> diff = list.getDiffs().get(0);
assertArrayEquals(ArrayUtils.toObject(class1.shortArrayField),
(Object[]) diff.getLeft());
assertArrayEquals(ArrayUtils.toObject(class2.shortArrayField),
(Object[]) diff.getRight());
}
@Test @Test
public void testSimilarObjectIgnoresAppends() { public void testSimilarObjectIgnoresAppends() {
final TypeTestClass testClass1 = new TypeTestClass(); final TypeTestClass testClass1 = new TypeTestClass();