diff --git a/src/test/org/apache/commons/lang/builder/BuilderTestSuite.java b/src/test/org/apache/commons/lang/builder/BuilderTestSuite.java
index 0176f3fac..291aa6b36 100644
--- a/src/test/org/apache/commons/lang/builder/BuilderTestSuite.java
+++ b/src/test/org/apache/commons/lang/builder/BuilderTestSuite.java
@@ -61,7 +61,7 @@
* Test suite for the Lang Builder package.
*
* @author Stephen Colebourne
- * @version $Id: BuilderTestSuite.java,v 1.1 2002/09/12 22:01:24 scolebourne Exp $
+ * @version $Id: BuilderTestSuite.java,v 1.2 2002/09/15 10:27:06 scolebourne Exp $
*/
public class BuilderTestSuite extends TestCase {
@@ -85,6 +85,7 @@ public static void main(String[] args) {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.setName("Commons-Lang-Builder Tests");
+ suite.addTest(CompareToBuilderTest.suite());
suite.addTest(EqualsBuilderTest.suite());
suite.addTest(HashCodeBuilderTest.suite());
return suite;
diff --git a/src/test/org/apache/commons/lang/builder/CompareToBuilderTest.java b/src/test/org/apache/commons/lang/builder/CompareToBuilderTest.java
new file mode 100644
index 000000000..e8287fd81
--- /dev/null
+++ b/src/test/org/apache/commons/lang/builder/CompareToBuilderTest.java
@@ -0,0 +1,957 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * .
+ */
+package org.apache.commons.lang.builder;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+/**
+ * Unit tests {@link org.apache.commons.lang.CompareToBuilder}.
+ *
+ * @author Steve Downey
+ * @author Stephen Colebourne
+ * @version $Id: CompareToBuilderTest.java,v 1.1 2002/09/15 10:27:06 scolebourne Exp $
+ */
+public class CompareToBuilderTest extends TestCase {
+
+ public CompareToBuilderTest(String name) {
+ super(name);
+ }
+ public static void main(String[] args) {
+ TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(CompareToBuilderTest.class);
+ suite.setName("CompareToBuilder Tests");
+ return suite;
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ //-----------------------------------------------------------------------
+
+ static class TestObject implements Comparable{
+ private int a;
+ public TestObject(int a) {
+ this.a = a;
+ }
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (!(o instanceof TestObject)) {
+ return false;
+ }
+ TestObject rhs = (TestObject) o;
+ return (a == rhs.a);
+ }
+
+ public void setA(int a) {
+ this.a = a;
+ }
+
+ public int getA() {
+ return a;
+ }
+ public int compareTo(Object o) {
+ TestObject rhs = (TestObject) o;
+ return (a < rhs.a) ? -1 : (a > rhs.a) ? +1 : 0;
+ }
+ }
+
+ public void testReflectionCompare() {
+ TestObject o1 = new TestObject(4);
+ TestObject o2 = new TestObject(4);
+ assertTrue(CompareToBuilder.reflectionCompare(o1, o1) == 0);
+ assertTrue(CompareToBuilder.reflectionCompare(o1, o2) == 0);
+ o2.setA(5);
+ assertTrue(CompareToBuilder.reflectionCompare(o1, o2) < 0);
+ assertTrue(CompareToBuilder.reflectionCompare(o2, o1) > 0);
+ }
+
+ public void testReflectionCompareEx1() {
+ TestObject o1 = new TestObject(4);
+ try {
+ CompareToBuilder.reflectionCompare(o1, null);
+ } catch (NullPointerException ex) {
+ return;
+ }
+ fail();
+ }
+
+ public void testReflectionCompareEx2() {
+ TestObject o1 = new TestObject(4);
+ Object o2 = new Object();
+ try {
+ CompareToBuilder.reflectionCompare(o1, o2);
+ } catch (ClassCastException ex) {
+ return;
+ }
+ fail();
+ }
+
+ public void testObject() {
+ TestObject o1 = new TestObject(4);
+ TestObject o2 = new TestObject(4);
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() == 0);
+ o2.setA(5);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ }
+
+ public void testObjectEx1() {
+ TestObject o1 = new TestObject(4);
+ try {
+ new CompareToBuilder().append(o1, null).toComparison();
+ } catch (NullPointerException ex) {
+ return;
+ }
+ fail();
+ }
+
+ public void testObjectEx2() {
+ TestObject o1 = new TestObject(4);
+ Object o2 = new Object();
+ try {
+ new CompareToBuilder().append(o1, o2).toComparison();
+ } catch (ClassCastException ex) {
+ return;
+ }
+ fail();
+ }
+
+ public void testLong() {
+ long o1 = 1L;
+ long o2 = 2L;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Long.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Long.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Long.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Long.MIN_VALUE, o1).toComparison() < 0);
+ }
+
+ public void testInt() {
+ int o1 = 1;
+ int o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Integer.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Integer.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Integer.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Integer.MIN_VALUE, o1).toComparison() < 0);
+ }
+
+ public void testShort() {
+ short o1 = 1;
+ short o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Short.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Short.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Short.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Short.MIN_VALUE, o1).toComparison() < 0);
+ }
+
+ public void testChar() {
+ char o1 = 1;
+ char o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Character.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Character.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Character.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Character.MIN_VALUE, o1).toComparison() < 0);
+ }
+
+ public void testByte() {
+ byte o1 = 1;
+ byte o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Byte.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Byte.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Byte.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Byte.MIN_VALUE, o1).toComparison() < 0);
+ }
+
+ public void testDouble() {
+ double o1 = 1;
+ double o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Double.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Double.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Double.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Double.MIN_VALUE, o1).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Double.NaN, Double.NaN).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(Double.NaN, Double.MAX_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Double.POSITIVE_INFINITY, Double.MAX_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Double.NEGATIVE_INFINITY, Double.MIN_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o1, Double.NaN).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Double.NaN, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
+ }
+
+ public void testFloat() {
+ float o1 = 1;
+ float o2 = 2;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Float.MAX_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Float.MAX_VALUE, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o1, Float.MIN_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Float.MIN_VALUE, o1).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Float.NaN, Float.NaN).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(Float.NaN, Float.MAX_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Float.POSITIVE_INFINITY, Float.MAX_VALUE).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(Float.NEGATIVE_INFINITY, Float.MIN_VALUE).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(o1, Float.NaN).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(Float.NaN, o1).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
+ }
+
+ public void testBoolean() {
+ boolean o1 = true;
+ boolean o2 = false;
+ assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o2, o2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(o1, o2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(o2, o1).toComparison() < 0);
+ }
+
+ public void testObjectArray() {
+ TestObject[] obj1 = new TestObject[2];
+ obj1[0] = new TestObject(4);
+ obj1[1] = new TestObject(5);
+ TestObject[] obj2 = new TestObject[2];
+ obj2[0] = new TestObject(4);
+ obj2[1] = new TestObject(5);
+ TestObject[] obj3 = new TestObject[3];
+ obj3[0] = new TestObject(4);
+ obj3[1] = new TestObject(5);
+ obj3[2] = new TestObject(6);
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = new TestObject(7);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testObjectArrayEx1() {
+ TestObject[] obj1 = new TestObject[2];
+ obj1[0] = new TestObject(4);
+ obj1[1] = new TestObject(5);
+ try {
+ new CompareToBuilder().append(obj1, null).toComparison();
+ } catch (NullPointerException ex) {
+ return;
+ }
+ fail();
+ }
+
+ public void testLongArray() {
+ long[] obj1 = new long[2];
+ obj1[0] = 5L;
+ obj1[1] = 6L;
+ long[] obj2 = new long[2];
+ obj2[0] = 5L;
+ obj2[1] = 6L;
+ long[] obj3 = new long[3];
+ obj3[0] = 5L;
+ obj3[1] = 6L;
+ obj3[2] = 7L;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testIntArray() {
+ int[] obj1 = new int[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ int[] obj2 = new int[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ int[] obj3 = new int[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testShortArray() {
+ short[] obj1 = new short[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ short[] obj2 = new short[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ short[] obj3 = new short[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testCharArray() {
+ char[] obj1 = new char[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ char[] obj2 = new char[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ char[] obj3 = new char[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testByteArray() {
+ byte[] obj1 = new byte[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ byte[] obj2 = new byte[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ byte[] obj3 = new byte[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testDoubleArray() {
+ double[] obj1 = new double[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ double[] obj2 = new double[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ double[] obj3 = new double[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testFloatArray() {
+ float[] obj1 = new float[2];
+ obj1[0] = 5;
+ obj1[1] = 6;
+ float[] obj2 = new float[2];
+ obj2[0] = 5;
+ obj2[1] = 6;
+ float[] obj3 = new float[3];
+ obj3[0] = 5;
+ obj3[1] = 6;
+ obj3[2] = 7;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testBooleanArray() {
+ boolean[] obj1 = new boolean[2];
+ obj1[0] = true;
+ obj1[1] = false;
+ boolean[] obj2 = new boolean[2];
+ obj2[0] = true;
+ obj2[1] = false;
+ boolean[] obj3 = new boolean[3];
+ obj3[0] = true;
+ obj3[1] = false;
+ obj3[2] = true;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ obj1[1] = true;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testMultiLongArray() {
+ long[][] array1 = new long[2][2];
+ long[][] array2 = new long[2][2];
+ long[][] array3 = new long[2][3];
+ for (int i = 0; i < array1.length; ++i) {
+ for (int j = 0; j < array1[0].length; j++) {
+ array1[i][j] = (i + 1) * (j + 1);
+ array2[i][j] = (i + 1) * (j + 1);
+ array3[i][j] = (i + 1) * (j + 1);
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiIntArray() {
+ int[][] array1 = new int[2][2];
+ int[][] array2 = new int[2][2];
+ int[][] array3 = new int[2][3];
+ for (int i = 0; i < array1.length; ++i) {
+ for (int j = 0; j < array1[0].length; j++) {
+ array1[i][j] = (i + 1) * (j + 1);
+ array2[i][j] = (i + 1) * (j + 1);
+ array3[i][j] = (i + 1) * (j + 1);
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiShortArray() {
+ short[][] array1 = new short[2][2];
+ short[][] array2 = new short[2][2];
+ short[][] array3 = new short[2][3];
+ for (short i = 0; i < array1.length; ++i) {
+ for (short j = 0; j < array1[0].length; j++) {
+ array1[i][j] = (short)((i + 1) * (j + 1));
+ array2[i][j] = (short)((i + 1) * (j + 1));
+ array3[i][j] = (short)((i + 1) * (j + 1));
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiCharArray() {
+ char[][] array1 = new char[2][2];
+ char[][] array2 = new char[2][2];
+ char[][] array3 = new char[2][3];
+ for (short i = 0; i < array1.length; ++i) {
+ for (short j = 0; j < array1[0].length; j++) {
+ array1[i][j] = (char)((i + 1) * (j + 1));
+ array2[i][j] = (char)((i + 1) * (j + 1));
+ array3[i][j] = (char)((i + 1) * (j + 1));
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiByteArray() {
+ byte[][] array1 = new byte[2][2];
+ byte[][] array2 = new byte[2][2];
+ byte[][] array3 = new byte[2][3];
+ for (byte i = 0; i < array1.length; ++i) {
+ for (byte j = 0; j < array1[0].length; j++) {
+ array1[i][j] = (byte)((i + 1) * (j + 1));
+ array2[i][j] = (byte)((i + 1) * (j + 1));
+ array3[i][j] = (byte)((i + 1) * (j + 1));
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 127;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiFloatArray() {
+ float[][] array1 = new float[2][2];
+ float[][] array2 = new float[2][2];
+ float[][] array3 = new float[2][3];
+ for (int i = 0; i < array1.length; ++i) {
+ for (int j = 0; j < array1[0].length; j++) {
+ array1[i][j] = ((i + 1) * (j + 1));
+ array2[i][j] = ((i + 1) * (j + 1));
+ array3[i][j] = ((i + 1) * (j + 1));
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 127;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiDoubleArray() {
+ double[][] array1 = new double[2][2];
+ double[][] array2 = new double[2][2];
+ double[][] array3 = new double[2][3];
+ for (int i = 0; i < array1.length; ++i) {
+ for (int j = 0; j < array1[0].length; j++) {
+ array1[i][j] = ((i + 1) * (j + 1));
+ array2[i][j] = ((i + 1) * (j + 1));
+ array3[i][j] = ((i + 1) * (j + 1));
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 127;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMultiBooleanArray() {
+ boolean[][] array1 = new boolean[2][2];
+ boolean[][] array2 = new boolean[2][2];
+ boolean[][] array3 = new boolean[2][3];
+ for (int i = 0; i < array1.length; ++i) {
+ for (int j = 0; j < array1[0].length; j++) {
+ array1[i][j] = ((i == 1) ^ (j == 1));
+ array2[i][j] = ((i == 1) ^ (j == 1));
+ array3[i][j] = ((i == 1) ^ (j == 1));
+ }
+ }
+ array3[1][2] = false;
+ array3[1][2] = false;
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = true;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testRaggedArray() {
+ long array1[][] = new long[2][];
+ long array2[][] = new long[2][];
+ long array3[][] = new long[3][];
+ for (int i = 0; i < array1.length; ++i) {
+ array1[i] = new long[2];
+ array2[i] = new long[2];
+ array3[i] = new long[3];
+ for (int j = 0; j < array1[i].length; ++j) {
+ array1[i][j] = (i + 1) * (j + 1);
+ array2[i][j] = (i + 1) * (j + 1);
+ array3[i][j] = (i + 1) * (j + 1);
+ }
+ }
+ array3[1][2] = 100;
+ array3[1][2] = 100;
+
+
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ array1[1][1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testMixedArray() {
+ Object array1[] = new Object[2];
+ Object array2[] = new Object[2];
+ Object array3[] = new Object[2];
+ for (int i = 0; i < array1.length; ++i) {
+ array1[i] = new long[2];
+ array2[i] = new long[2];
+ array3[i] = new long[3];
+ for (int j = 0; j < 2; ++j) {
+ ((long[]) array1[i])[j] = (i + 1) * (j + 1);
+ ((long[]) array2[i])[j] = (i + 1) * (j + 1);
+ ((long[]) array3[i])[j] = (i + 1) * (j + 1);
+ }
+ }
+ ((long[]) array3[0])[2] = 1;
+ ((long[]) array3[1])[2] = 1;
+ assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
+ ((long[]) array1[1])[1] = 200;
+ assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
+ }
+
+ public void testObjectArrayHiddenByObject() {
+ TestObject[] array1 = new TestObject[2];
+ array1[0] = new TestObject(4);
+ array1[1] = new TestObject(5);
+ TestObject[] array2 = new TestObject[2];
+ array2[0] = new TestObject(4);
+ array2[1] = new TestObject(5);
+ TestObject[] array3 = new TestObject[3];
+ array3[0] = new TestObject(4);
+ array3[1] = new TestObject(5);
+ array3[2] = new TestObject(6);
+
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = new TestObject(7);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0); }
+
+ public void testLongArrayHiddenByObject() {
+ long[] array1 = new long[2];
+ array1[0] = 5L;
+ array1[1] = 6L;
+ long[] array2 = new long[2];
+ array2[0] = 5L;
+ array2[1] = 6L;
+ long[] array3 = new long[3];
+ array3[0] = 5L;
+ array3[1] = 6L;
+ array3[2] = 7L;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testIntArrayHiddenByObject() {
+ int[] array1 = new int[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ int[] array2 = new int[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ int[] array3 = new int[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testShortArrayHiddenByObject() {
+ short[] array1 = new short[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ short[] array2 = new short[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ short[] array3 = new short[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testCharArrayHiddenByObject() {
+ char[] array1 = new char[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ char[] array2 = new char[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ char[] array3 = new char[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testByteArrayHiddenByObject() {
+ byte[] array1 = new byte[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ byte[] array2 = new byte[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ byte[] array3 = new byte[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testDoubleArrayHiddenByObject() {
+ double[] array1 = new double[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ double[] array2 = new double[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ double[] array3 = new double[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testFloatArrayHiddenByObject() {
+ float[] array1 = new float[2];
+ array1[0] = 5;
+ array1[1] = 6;
+ float[] array2 = new float[2];
+ array2[0] = 5;
+ array2[1] = 6;
+ float[] array3 = new float[3];
+ array3[0] = 5;
+ array3[1] = 6;
+ array3[2] = 7;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = 7;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ public void testBooleanArrayHiddenByObject() {
+ boolean[] array1 = new boolean[2];
+ array1[0] = true;
+ array1[1] = false;
+ boolean[] array2 = new boolean[2];
+ array2[0] = true;
+ array2[1] = false;
+ boolean[] array3 = new boolean[3];
+ array3[0] = true;
+ array3[1] = false;
+ array3[2] = true;
+ Object obj1 = array1;
+ Object obj2 = array2;
+ Object obj3 = array3;
+ assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
+ assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
+ assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
+
+ array1[1] = true;
+ assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
+ assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
+ }
+
+ }