Home » commons-lang-2.4-src » org.apache.commons » lang » builder » [javadoc | source]
    1   /*
    2    * Copyright 2002-2005 The Apache Software Foundation.
    3    * 
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    * 
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    * 
   10    * Unless required by applicable law or agreed to in writing, software
   11    * distributed under the License is distributed on an "AS IS" BASIS,
   12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   13    * See the License for the specific language governing permissions and
   14    * limitations under the License.
   15    */
   16   package org.apache.commons.lang.builder;
   17   
   18   import java.math.BigInteger;
   19   
   20   import junit.framework.Test;
   21   import junit.framework.TestCase;
   22   import junit.framework.TestSuite;
   23   import junit.textui.TestRunner;
   24   
   25   /**
   26    * Unit tests {@link org.apache.commons.lang.builder.CompareToBuilder}.
   27    *
   28    * @author <a href="mailto:sdowney@panix.com">Steve Downey</a>
   29    * @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
   30    * @version $Id: CompareToBuilderTest.java 161244 2005-04-14 06:16:36Z ggregory $
   31    */
   32   public class CompareToBuilderTest extends TestCase {
   33   
   34     public CompareToBuilderTest(String name) {
   35       super(name);
   36     }
   37        public static void main(String[] args) {
   38           TestRunner.run(suite());
   39       }
   40   
   41       public static Test suite() {
   42           TestSuite suite = new TestSuite(CompareToBuilderTest.class);
   43           suite.setName("CompareToBuilder Tests");
   44           return suite;
   45       }
   46   
   47       protected void setUp() throws Exception {
   48           super.setUp();
   49       }
   50   
   51       protected void tearDown() throws Exception {
   52           super.tearDown();
   53       }
   54   
   55       //-----------------------------------------------------------------------
   56   
   57       static class TestObject implements Comparable {
   58           private int a;
   59           public TestObject(int a) {
   60               this.a = a;
   61           }
   62           public boolean equals(Object o) {
   63               if (o == this) {
   64                   return true;
   65               }
   66               if (!(o instanceof TestObject)) {
   67                   return false;
   68               }
   69               TestObject rhs = (TestObject) o;
   70               return (a == rhs.a);
   71           }
   72   
   73           public void setA(int a) {
   74               this.a = a;
   75           }
   76   
   77           public int getA() {
   78               return a;
   79           }
   80           public int compareTo(Object o) {
   81               TestObject rhs = (TestObject) o;
   82               return (a < rhs.a) ? -1 : (a > rhs.a) ? +1 : 0;
   83           }
   84       }
   85   
   86       static class TestSubObject extends TestObject {
   87           private int b;
   88           public TestSubObject() {
   89               super(0);
   90           }
   91           public TestSubObject(int a, int b) {
   92               super(a);
   93               this.b = b;
   94           }
   95           public boolean equals(Object o) {
   96               if (o == this) {
   97                   return true;
   98               }
   99               if (!(o instanceof TestSubObject)) {
  100                   return false;
  101               }
  102               TestSubObject rhs = (TestSubObject) o;
  103               return super.equals(o) && (b == rhs.b);
  104           }
  105       }
  106   
  107       static class TestTransientSubObject extends TestObject {
  108           private transient int t;
  109           public TestTransientSubObject(int a, int t) {
  110               super(a);
  111               this.t = t;
  112           }
  113       }
  114   
  115       public void testReflectionCompare() {
  116           TestObject o1 = new TestObject(4);
  117           TestObject o2 = new TestObject(4);
  118           assertTrue(CompareToBuilder.reflectionCompare(o1, o1) == 0);
  119           assertTrue(CompareToBuilder.reflectionCompare(o1, o2) == 0);
  120           o2.setA(5);
  121           assertTrue(CompareToBuilder.reflectionCompare(o1, o2) < 0);
  122           assertTrue(CompareToBuilder.reflectionCompare(o2, o1) > 0);
  123       }
  124   
  125       public void testReflectionCompareEx1() {
  126           TestObject o1 = new TestObject(4);
  127           try {
  128               CompareToBuilder.reflectionCompare(o1, null);
  129           } catch (NullPointerException ex) {
  130               return;
  131           }
  132           fail();
  133       }
  134   
  135       public void testReflectionCompareEx2() {
  136           TestObject o1 = new TestObject(4);
  137           Object o2 = new Object();
  138           try {
  139               CompareToBuilder.reflectionCompare(o1, o2);
  140               fail();
  141           } catch (ClassCastException ex) {}
  142       }
  143   
  144       public void testReflectionHierarchyCompare() {
  145           testReflectionHierarchyCompare(false);
  146       }
  147       
  148       public void testReflectionHierarchyCompareTransients() {
  149           testReflectionHierarchyCompare(true);
  150   
  151           TestTransientSubObject x;
  152           TestTransientSubObject y;
  153           TestTransientSubObject z;
  154   
  155           x = new TestTransientSubObject(1, 1);
  156           y = new TestTransientSubObject(2, 2);
  157           z = new TestTransientSubObject(3, 3);
  158           assertXYZCompareOrder(x, y, z, true);
  159           
  160           x = new TestTransientSubObject(1, 1);
  161           y = new TestTransientSubObject(1, 2);
  162           z = new TestTransientSubObject(1, 3);
  163           assertXYZCompareOrder(x, y, z, true);  
  164       }
  165       
  166       private void assertXYZCompareOrder(Object x, Object y, Object z, boolean testTransients) {
  167           assertTrue(0 == CompareToBuilder.reflectionCompare(x, x, testTransients));
  168           assertTrue(0 == CompareToBuilder.reflectionCompare(y, y, testTransients));
  169           assertTrue(0 == CompareToBuilder.reflectionCompare(z, z, testTransients));
  170           
  171           assertTrue(0 > CompareToBuilder.reflectionCompare(x, y, testTransients));
  172           assertTrue(0 > CompareToBuilder.reflectionCompare(x, z, testTransients));
  173           assertTrue(0 > CompareToBuilder.reflectionCompare(y, z, testTransients));
  174           
  175           assertTrue(0 < CompareToBuilder.reflectionCompare(y, x, testTransients));
  176           assertTrue(0 < CompareToBuilder.reflectionCompare(z, x, testTransients));
  177           assertTrue(0 < CompareToBuilder.reflectionCompare(z, y, testTransients));
  178       }
  179       
  180       public void testReflectionHierarchyCompare(boolean testTransients) {
  181           TestObject to1 = new TestObject(1);
  182           TestObject to2 = new TestObject(2);
  183           TestObject to3 = new TestObject(3);
  184           TestSubObject tso1 = new TestSubObject(1, 1);
  185           TestSubObject tso2 = new TestSubObject(2, 2);
  186           TestSubObject tso3 = new TestSubObject(3, 3);
  187           
  188           assertReflectionCompareContract(to1, to1, to1, false);
  189           assertReflectionCompareContract(to1, to2, to3, false);
  190           assertReflectionCompareContract(tso1, tso1, tso1, false);
  191           assertReflectionCompareContract(tso1, tso2, tso3, false);
  192           assertReflectionCompareContract("1", "2", "3", false);
  193           
  194           assertTrue(0 != CompareToBuilder.reflectionCompare(tso1, new TestSubObject(1, 0), testTransients));
  195           assertTrue(0 != CompareToBuilder.reflectionCompare(tso1, new TestSubObject(0, 1), testTransients));
  196   
  197           // root class
  198           assertXYZCompareOrder(to1, to2, to3, true);
  199           // subclass  
  200           assertXYZCompareOrder(tso1, tso2, tso3, true);  
  201       }
  202   
  203       /**
  204        * See "Effective Java" under "Consider Implementing Comparable".
  205        *  
  206        * @param x an object to compare 
  207        * @param y an object to compare
  208        * @param z an object to compare
  209        * @param testTransients Whether to include transients in the comparison
  210        */
  211       public void assertReflectionCompareContract(Object x, Object y, Object z, boolean testTransients) {
  212   
  213           // signum
  214           assertTrue(reflectionCompareSignum(x, y, testTransients) == -reflectionCompareSignum(y, x, testTransients));
  215           
  216           // transitive
  217           if (CompareToBuilder.reflectionCompare(x, y, testTransients) > 0 && CompareToBuilder.reflectionCompare(y, z, testTransients) > 0){
  218               assertTrue(CompareToBuilder.reflectionCompare(x, z, testTransients) > 0);
  219           }
  220           
  221           // un-named
  222           if (CompareToBuilder.reflectionCompare(x, y, testTransients) == 0) {
  223               assertTrue(reflectionCompareSignum(x, z, testTransients) == -reflectionCompareSignum(y, z, testTransients));
  224           }
  225           
  226           // strongly recommended but not strictly required
  227           assertTrue((CompareToBuilder.reflectionCompare(x, y, testTransients) ==0 ) == EqualsBuilder.reflectionEquals(x, y, testTransients));
  228       }
  229       
  230       /**
  231        * Returns the signum of the result of comparing x and y with
  232        * <code>CompareToBuilder.reflectionCompare</code>
  233        * 
  234        * @param lhs The "left-hand-side" of the comparison.
  235        * @param rhs The "right-hand-side" of the comparison.
  236        * @param testTransients Whether to include transients in the comparison
  237        * @return int The signum
  238        */
  239       private int reflectionCompareSignum(Object lhs, Object rhs, boolean testTransients) {
  240           return BigInteger.valueOf(CompareToBuilder.reflectionCompare(lhs, rhs, testTransients)).signum();
  241       }
  242       
  243       public void testAppendSuper() {
  244           TestObject o1 = new TestObject(4);
  245           TestObject o2 = new TestObject(5);
  246           assertTrue(new CompareToBuilder().appendSuper(0).append(o1, o1).toComparison() == 0);
  247           assertTrue(new CompareToBuilder().appendSuper(0).append(o1, o2).toComparison() < 0);
  248           assertTrue(new CompareToBuilder().appendSuper(0).append(o2, o1).toComparison() > 0);
  249           
  250           assertTrue(new CompareToBuilder().appendSuper(-1).append(o1, o1).toComparison() < 0);
  251           assertTrue(new CompareToBuilder().appendSuper(-1).append(o1, o2).toComparison() < 0);
  252           
  253           assertTrue(new CompareToBuilder().appendSuper(1).append(o1, o1).toComparison() > 0);
  254           assertTrue(new CompareToBuilder().appendSuper(1).append(o1, o2).toComparison() > 0);
  255       }
  256       
  257       public void testObject() {
  258           TestObject o1 = new TestObject(4);
  259           TestObject o2 = new TestObject(4);
  260           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  261           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() == 0);
  262           o2.setA(5);
  263           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  264           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  265           
  266           assertTrue(new CompareToBuilder().append(o1, null).toComparison() > 0);
  267           assertTrue(new CompareToBuilder().append((Object) null, (Object) null).toComparison() == 0);
  268           assertTrue(new CompareToBuilder().append(null, o1).toComparison() < 0);
  269       }
  270   
  271       public void testObjectEx2() {
  272           TestObject o1 = new TestObject(4);
  273           Object o2 = new Object();
  274           try {
  275               new CompareToBuilder().append(o1, o2);
  276               fail();
  277           } catch (ClassCastException ex) {}
  278       }
  279   
  280       public void testObjectComparator() {
  281           String o1 = "Fred";
  282           String o2 = "Fred";
  283           assertTrue(new CompareToBuilder().append(o1, o1, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
  284           assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
  285           o2 = "FRED";
  286           assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
  287           assertTrue(new CompareToBuilder().append(o2, o1, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
  288           o2 = "FREDA";
  289           assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() < 0);
  290           assertTrue(new CompareToBuilder().append(o2, o1, String.CASE_INSENSITIVE_ORDER).toComparison() > 0);
  291           
  292           assertTrue(new CompareToBuilder().append(o1, null, String.CASE_INSENSITIVE_ORDER).toComparison() > 0);
  293           assertTrue(new CompareToBuilder().append((Object) null, (Object) null, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
  294           assertTrue(new CompareToBuilder().append(null, o1, String.CASE_INSENSITIVE_ORDER).toComparison() < 0);
  295       }
  296       
  297       public void testObjectComparatorNull() {
  298           String o1 = "Fred";
  299           String o2 = "Fred";
  300           assertTrue(new CompareToBuilder().append(o1, o1, null).toComparison() == 0);
  301           assertTrue(new CompareToBuilder().append(o1, o2, null).toComparison() == 0);
  302           o2 = "Zebra";
  303           assertTrue(new CompareToBuilder().append(o1, o2, null).toComparison() < 0);
  304           assertTrue(new CompareToBuilder().append(o2, o1, null).toComparison() > 0);
  305           
  306           assertTrue(new CompareToBuilder().append(o1, null, null).toComparison() > 0);
  307           assertTrue(new CompareToBuilder().append((Object) null, (Object) null, null).toComparison() == 0);
  308           assertTrue(new CompareToBuilder().append(null, o1, null).toComparison() < 0);
  309       }
  310   
  311       public void testLong() {
  312           long o1 = 1L;
  313           long o2 = 2L;
  314           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  315           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  316           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  317           assertTrue(new CompareToBuilder().append(o1, Long.MAX_VALUE).toComparison() < 0);
  318           assertTrue(new CompareToBuilder().append(Long.MAX_VALUE, o1).toComparison() > 0);
  319           assertTrue(new CompareToBuilder().append(o1, Long.MIN_VALUE).toComparison() > 0);
  320           assertTrue(new CompareToBuilder().append(Long.MIN_VALUE, o1).toComparison() < 0);
  321       }
  322   
  323       public void testInt() {
  324           int o1 = 1;
  325           int o2 = 2;
  326           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  327           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  328           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  329           assertTrue(new CompareToBuilder().append(o1, Integer.MAX_VALUE).toComparison() < 0);
  330           assertTrue(new CompareToBuilder().append(Integer.MAX_VALUE, o1).toComparison() > 0);
  331           assertTrue(new CompareToBuilder().append(o1, Integer.MIN_VALUE).toComparison() > 0);
  332           assertTrue(new CompareToBuilder().append(Integer.MIN_VALUE, o1).toComparison() < 0);
  333       }
  334   
  335       public void testShort() {
  336           short o1 = 1;
  337           short o2 = 2;
  338           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  339           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  340           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  341           assertTrue(new CompareToBuilder().append(o1, Short.MAX_VALUE).toComparison() < 0);
  342           assertTrue(new CompareToBuilder().append(Short.MAX_VALUE, o1).toComparison() > 0);
  343           assertTrue(new CompareToBuilder().append(o1, Short.MIN_VALUE).toComparison() > 0);
  344           assertTrue(new CompareToBuilder().append(Short.MIN_VALUE, o1).toComparison() < 0);
  345       }
  346   
  347       public void testChar() {
  348           char o1 = 1;
  349           char o2 = 2;
  350           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  351           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  352           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  353           assertTrue(new CompareToBuilder().append(o1, Character.MAX_VALUE).toComparison() < 0);
  354           assertTrue(new CompareToBuilder().append(Character.MAX_VALUE, o1).toComparison() > 0);
  355           assertTrue(new CompareToBuilder().append(o1, Character.MIN_VALUE).toComparison() > 0);
  356           assertTrue(new CompareToBuilder().append(Character.MIN_VALUE, o1).toComparison() < 0);
  357       }
  358   
  359       public void testByte() {
  360           byte o1 = 1;
  361           byte o2 = 2;
  362           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  363           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  364           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  365           assertTrue(new CompareToBuilder().append(o1, Byte.MAX_VALUE).toComparison() < 0);
  366           assertTrue(new CompareToBuilder().append(Byte.MAX_VALUE, o1).toComparison() > 0);
  367           assertTrue(new CompareToBuilder().append(o1, Byte.MIN_VALUE).toComparison() > 0);
  368           assertTrue(new CompareToBuilder().append(Byte.MIN_VALUE, o1).toComparison() < 0);
  369       }
  370   
  371       public void testDouble() {
  372           double o1 = 1;
  373           double o2 = 2;
  374           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  375           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  376           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  377           assertTrue(new CompareToBuilder().append(o1, Double.MAX_VALUE).toComparison() < 0);
  378           assertTrue(new CompareToBuilder().append(Double.MAX_VALUE, o1).toComparison() > 0);
  379           assertTrue(new CompareToBuilder().append(o1, Double.MIN_VALUE).toComparison() > 0);
  380           assertTrue(new CompareToBuilder().append(Double.MIN_VALUE, o1).toComparison() < 0);
  381           assertTrue(new CompareToBuilder().append(Double.NaN, Double.NaN).toComparison() == 0);
  382           assertTrue(new CompareToBuilder().append(Double.NaN, Double.MAX_VALUE).toComparison() > 0);
  383           assertTrue(new CompareToBuilder().append(Double.POSITIVE_INFINITY, Double.MAX_VALUE).toComparison() > 0);
  384           assertTrue(new CompareToBuilder().append(Double.NEGATIVE_INFINITY, Double.MIN_VALUE).toComparison() < 0);
  385           assertTrue(new CompareToBuilder().append(o1, Double.NaN).toComparison() < 0);
  386           assertTrue(new CompareToBuilder().append(Double.NaN, o1).toComparison() > 0);
  387           assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
  388           assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
  389       }
  390   
  391       public void testFloat() {
  392           float o1 = 1;
  393           float o2 = 2;
  394           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  395           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
  396           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
  397           assertTrue(new CompareToBuilder().append(o1, Float.MAX_VALUE).toComparison() < 0);
  398           assertTrue(new CompareToBuilder().append(Float.MAX_VALUE, o1).toComparison() > 0);
  399           assertTrue(new CompareToBuilder().append(o1, Float.MIN_VALUE).toComparison() > 0);
  400           assertTrue(new CompareToBuilder().append(Float.MIN_VALUE, o1).toComparison() < 0);
  401           assertTrue(new CompareToBuilder().append(Float.NaN, Float.NaN).toComparison() == 0);
  402           assertTrue(new CompareToBuilder().append(Float.NaN, Float.MAX_VALUE).toComparison() > 0);
  403           assertTrue(new CompareToBuilder().append(Float.POSITIVE_INFINITY, Float.MAX_VALUE).toComparison() > 0);
  404           assertTrue(new CompareToBuilder().append(Float.NEGATIVE_INFINITY, Float.MIN_VALUE).toComparison() < 0);
  405           assertTrue(new CompareToBuilder().append(o1, Float.NaN).toComparison() < 0);
  406           assertTrue(new CompareToBuilder().append(Float.NaN, o1).toComparison() > 0);
  407           assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
  408           assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
  409       }
  410   
  411       public void testBoolean() {
  412           boolean o1 = true;
  413           boolean o2 = false;
  414           assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
  415           assertTrue(new CompareToBuilder().append(o2, o2).toComparison() == 0);
  416           assertTrue(new CompareToBuilder().append(o1, o2).toComparison() > 0);
  417           assertTrue(new CompareToBuilder().append(o2, o1).toComparison() < 0);
  418       }
  419   
  420       public void testObjectArray() {
  421           TestObject[] obj1 = new TestObject[2];
  422           obj1[0] = new TestObject(4);
  423           obj1[1] = new TestObject(5);
  424           TestObject[] obj2 = new TestObject[2];
  425           obj2[0] = new TestObject(4);
  426           obj2[1] = new TestObject(5);
  427           TestObject[] obj3 = new TestObject[3];
  428           obj3[0] = new TestObject(4);
  429           obj3[1] = new TestObject(5);
  430           obj3[2] = new TestObject(6);
  431           
  432           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  433           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  434           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  435           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  436           
  437           obj1[1] = new TestObject(7);
  438           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  439           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  440   
  441           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  442           assertTrue(new CompareToBuilder().append((Object[]) null, (Object[]) null).toComparison() == 0);
  443           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  444       }
  445   
  446       public void testLongArray() {
  447           long[] obj1 = new long[2];
  448           obj1[0] = 5L;
  449           obj1[1] = 6L;
  450           long[] obj2 = new long[2];
  451           obj2[0] = 5L;
  452           obj2[1] = 6L;
  453           long[] obj3 = new long[3];
  454           obj3[0] = 5L;
  455           obj3[1] = 6L;
  456           obj3[2] = 7L;
  457           
  458           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  459           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  460           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  461           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  462   
  463           obj1[1] = 7;
  464           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  465           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  466   
  467           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  468           assertTrue(new CompareToBuilder().append((long[]) null, (long[]) null).toComparison() == 0);
  469           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  470       }
  471   
  472       public void testIntArray() {
  473           int[] obj1 = new int[2];
  474           obj1[0] = 5;
  475           obj1[1] = 6;
  476           int[] obj2 = new int[2];
  477           obj2[0] = 5;
  478           obj2[1] = 6;
  479           int[] obj3 = new int[3];
  480           obj3[0] = 5;
  481           obj3[1] = 6;
  482           obj3[2] = 7;
  483   
  484           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  485           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  486           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  487           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  488   
  489           obj1[1] = 7;
  490           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  491           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  492   
  493           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  494           assertTrue(new CompareToBuilder().append((int[]) null, (int[]) null).toComparison() == 0);
  495           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  496       }
  497   
  498       public void testShortArray() {
  499           short[] obj1 = new short[2];
  500           obj1[0] = 5;
  501           obj1[1] = 6;
  502           short[] obj2 = new short[2];
  503           obj2[0] = 5;
  504           obj2[1] = 6;
  505           short[] obj3 = new short[3];
  506           obj3[0] = 5;
  507           obj3[1] = 6;
  508           obj3[2] = 7;
  509   
  510           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  511           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  512           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  513           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  514   
  515           obj1[1] = 7;
  516           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  517           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  518   
  519           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  520           assertTrue(new CompareToBuilder().append((short[]) null, (short[]) null).toComparison() == 0);
  521           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  522       }
  523   
  524       public void testCharArray() {
  525           char[] obj1 = new char[2];
  526           obj1[0] = 5;
  527           obj1[1] = 6;
  528           char[] obj2 = new char[2];
  529           obj2[0] = 5;
  530           obj2[1] = 6;
  531           char[] obj3 = new char[3];
  532           obj3[0] = 5;
  533           obj3[1] = 6;
  534           obj3[2] = 7;
  535   
  536           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  537           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  538           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  539           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  540   
  541           obj1[1] = 7;
  542           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  543           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  544   
  545           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  546           assertTrue(new CompareToBuilder().append((char[]) null, (char[]) null).toComparison() == 0);
  547           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  548       }
  549   
  550       public void testByteArray() {
  551           byte[] obj1 = new byte[2];
  552           obj1[0] = 5;
  553           obj1[1] = 6;
  554           byte[] obj2 = new byte[2];
  555           obj2[0] = 5;
  556           obj2[1] = 6;
  557           byte[] obj3 = new byte[3];
  558           obj3[0] = 5;
  559           obj3[1] = 6;
  560           obj3[2] = 7;
  561   
  562           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  563           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  564           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  565           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  566   
  567           obj1[1] = 7;
  568           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  569           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  570   
  571           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  572           assertTrue(new CompareToBuilder().append((byte[]) null, (byte[]) null).toComparison() == 0);
  573           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  574       }
  575   
  576       public void testDoubleArray() {
  577           double[] obj1 = new double[2];
  578           obj1[0] = 5;
  579           obj1[1] = 6;
  580           double[] obj2 = new double[2];
  581           obj2[0] = 5;
  582           obj2[1] = 6;
  583           double[] obj3 = new double[3];
  584           obj3[0] = 5;
  585           obj3[1] = 6;
  586           obj3[2] = 7;
  587   
  588           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  589           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  590           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  591           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  592   
  593           obj1[1] = 7;
  594           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  595           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  596   
  597           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  598           assertTrue(new CompareToBuilder().append((double[]) null, (double[]) null).toComparison() == 0);
  599           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  600       }
  601   
  602       public void testFloatArray() {
  603           float[] obj1 = new float[2];
  604           obj1[0] = 5;
  605           obj1[1] = 6;
  606           float[] obj2 = new float[2];
  607           obj2[0] = 5;
  608           obj2[1] = 6;
  609           float[] obj3 = new float[3];
  610           obj3[0] = 5;
  611           obj3[1] = 6;
  612           obj3[2] = 7;
  613   
  614           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  615           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  616           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  617           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  618   
  619           obj1[1] = 7;
  620           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  621           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  622   
  623           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  624           assertTrue(new CompareToBuilder().append((float[]) null, (float[]) null).toComparison() == 0);
  625           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  626       }
  627   
  628       public void testBooleanArray() {
  629           boolean[] obj1 = new boolean[2];
  630           obj1[0] = true;
  631           obj1[1] = false;
  632           boolean[] obj2 = new boolean[2];
  633           obj2[0] = true;
  634           obj2[1] = false;
  635           boolean[] obj3 = new boolean[3];
  636           obj3[0] = true;
  637           obj3[1] = false;
  638           obj3[2] = true;
  639   
  640           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  641           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  642           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  643           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  644   
  645           obj1[1] = true;
  646           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  647           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  648   
  649           assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
  650           assertTrue(new CompareToBuilder().append((boolean[]) null, (boolean[]) null).toComparison() == 0);
  651           assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
  652       }
  653   
  654       public void testMultiLongArray() {
  655           long[][] array1 = new long[2][2];
  656           long[][] array2 = new long[2][2];
  657           long[][] array3 = new long[2][3];
  658           for (int i = 0; i < array1.length; ++i) {
  659               for (int j = 0; j < array1[0].length; j++) {
  660                   array1[i][j] = (i + 1) * (j + 1);
  661                   array2[i][j] = (i + 1) * (j + 1);
  662                   array3[i][j] = (i + 1) * (j + 1);
  663               }
  664           }
  665           array3[1][2] = 100;
  666           array3[1][2] = 100;
  667           
  668           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  669           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  670           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  671           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  672           array1[1][1] = 200;
  673           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  674           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  675       }
  676   
  677       public void testMultiIntArray() {
  678           int[][] array1 = new int[2][2];
  679           int[][] array2 = new int[2][2];
  680           int[][] array3 = new int[2][3];
  681           for (int i = 0; i < array1.length; ++i) {
  682               for (int j = 0; j < array1[0].length; j++) {
  683                   array1[i][j] = (i + 1) * (j + 1);
  684                   array2[i][j] = (i + 1) * (j + 1);
  685                   array3[i][j] = (i + 1) * (j + 1);
  686               }
  687           }
  688           array3[1][2] = 100;
  689           array3[1][2] = 100;
  690           
  691           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  692           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  693           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  694           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  695           array1[1][1] = 200;
  696           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  697           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  698       }
  699   
  700       public void testMultiShortArray() {
  701           short[][] array1 = new short[2][2];
  702           short[][] array2 = new short[2][2];
  703           short[][] array3 = new short[2][3];
  704           for (short i = 0; i < array1.length; ++i) {
  705               for (short j = 0; j < array1[0].length; j++) {
  706                   array1[i][j] = (short)((i + 1) * (j + 1));
  707                   array2[i][j] = (short)((i + 1) * (j + 1));
  708                   array3[i][j] = (short)((i + 1) * (j + 1));
  709               }
  710           }
  711           array3[1][2] = 100;
  712           array3[1][2] = 100;
  713           
  714           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  715           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  716           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  717           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  718           array1[1][1] = 200;
  719           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  720           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  721       }
  722   
  723       public void testMultiCharArray() {
  724           char[][] array1 = new char[2][2];
  725           char[][] array2 = new char[2][2];
  726           char[][] array3 = new char[2][3];
  727           for (short i = 0; i < array1.length; ++i) {
  728               for (short j = 0; j < array1[0].length; j++) {
  729                   array1[i][j] = (char)((i + 1) * (j + 1));
  730                   array2[i][j] = (char)((i + 1) * (j + 1));
  731                   array3[i][j] = (char)((i + 1) * (j + 1));
  732               }
  733           }
  734           array3[1][2] = 100;
  735           array3[1][2] = 100;
  736           
  737           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  738           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  739           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  740           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  741           array1[1][1] = 200;
  742           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  743           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  744       }
  745   
  746       public void testMultiByteArray() {
  747           byte[][] array1 = new byte[2][2];
  748           byte[][] array2 = new byte[2][2];
  749           byte[][] array3 = new byte[2][3];
  750           for (byte i = 0; i < array1.length; ++i) {
  751               for (byte j = 0; j < array1[0].length; j++) {
  752                   array1[i][j] = (byte)((i + 1) * (j + 1));
  753                   array2[i][j] = (byte)((i + 1) * (j + 1));
  754                   array3[i][j] = (byte)((i + 1) * (j + 1));
  755               }
  756           }
  757           array3[1][2] = 100;
  758           array3[1][2] = 100;
  759           
  760           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  761           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  762           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  763           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  764           array1[1][1] = 127;
  765           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  766           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  767       }
  768       
  769       public void testMultiFloatArray() {
  770           float[][] array1 = new float[2][2];
  771           float[][] array2 = new float[2][2];
  772           float[][] array3 = new float[2][3];
  773           for (int i = 0; i < array1.length; ++i) {
  774               for (int j = 0; j < array1[0].length; j++) {
  775                   array1[i][j] = ((i + 1) * (j + 1));
  776                   array2[i][j] = ((i + 1) * (j + 1));
  777                   array3[i][j] = ((i + 1) * (j + 1));
  778               }
  779           }
  780           array3[1][2] = 100;
  781           array3[1][2] = 100;
  782           
  783           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  784           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  785           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  786           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  787           array1[1][1] = 127;
  788           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  789           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  790       }
  791   
  792       public void testMultiDoubleArray() {
  793           double[][] array1 = new double[2][2];
  794           double[][] array2 = new double[2][2];
  795           double[][] array3 = new double[2][3];
  796           for (int i = 0; i < array1.length; ++i) {
  797               for (int j = 0; j < array1[0].length; j++) {
  798                   array1[i][j] = ((i + 1) * (j + 1));
  799                   array2[i][j] = ((i + 1) * (j + 1));
  800                   array3[i][j] = ((i + 1) * (j + 1));
  801               }
  802           }
  803           array3[1][2] = 100;
  804           array3[1][2] = 100;
  805           
  806           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  807           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  808           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  809           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  810           array1[1][1] = 127;
  811           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  812           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  813       }
  814   
  815       public void testMultiBooleanArray() {
  816           boolean[][] array1 = new boolean[2][2];
  817           boolean[][] array2 = new boolean[2][2];
  818           boolean[][] array3 = new boolean[2][3];
  819           for (int i = 0; i < array1.length; ++i) {
  820               for (int j = 0; j < array1[0].length; j++) {
  821                   array1[i][j] = ((i == 1) ^ (j == 1));
  822                   array2[i][j] = ((i == 1) ^ (j == 1));
  823                   array3[i][j] = ((i == 1) ^ (j == 1));
  824               }
  825           }
  826           array3[1][2] = false;
  827           array3[1][2] = false;
  828           
  829           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  830           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  831           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  832           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  833           array1[1][1] = true;
  834           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  835           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  836       }
  837   
  838       public void testRaggedArray() {
  839           long array1[][] = new long[2][];
  840           long array2[][] = new long[2][];
  841           long array3[][] = new long[3][];
  842           for (int i = 0; i < array1.length; ++i) {
  843               array1[i] = new long[2];
  844               array2[i] = new long[2];
  845               array3[i] = new long[3];
  846               for (int j = 0; j < array1[i].length; ++j) {
  847                   array1[i][j] = (i + 1) * (j + 1);
  848                   array2[i][j] = (i + 1) * (j + 1);
  849                   array3[i][j] = (i + 1) * (j + 1);
  850               }
  851           }
  852           array3[1][2] = 100;
  853           array3[1][2] = 100;
  854           
  855           
  856           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  857           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  858           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  859           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  860           array1[1][1] = 200;
  861           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  862           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  863       }
  864   
  865       public void testMixedArray() {
  866           Object array1[] = new Object[2];
  867           Object array2[] = new Object[2];
  868           Object array3[] = new Object[2];
  869           for (int i = 0; i < array1.length; ++i) {
  870               array1[i] = new long[2];
  871               array2[i] = new long[2];
  872               array3[i] = new long[3];
  873               for (int j = 0; j < 2; ++j) {
  874                   ((long[]) array1[i])[j] = (i + 1) * (j + 1);
  875                   ((long[]) array2[i])[j] = (i + 1) * (j + 1);
  876                   ((long[]) array3[i])[j] = (i + 1) * (j + 1);
  877               }
  878           }
  879           ((long[]) array3[0])[2] = 1;
  880           ((long[]) array3[1])[2] = 1;
  881           assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
  882           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
  883           assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
  884           assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
  885           ((long[]) array1[1])[1] = 200;
  886           assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
  887           assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
  888       }
  889   
  890       public void testObjectArrayHiddenByObject() {
  891           TestObject[] array1 = new TestObject[2];
  892           array1[0] = new TestObject(4);
  893           array1[1] = new TestObject(5);
  894           TestObject[] array2 = new TestObject[2];
  895           array2[0] = new TestObject(4);
  896           array2[1] = new TestObject(5);
  897           TestObject[] array3 = new TestObject[3];
  898           array3[0] = new TestObject(4);
  899           array3[1] = new TestObject(5);
  900           array3[2] = new TestObject(6);
  901           
  902           Object obj1 = array1;
  903           Object obj2 = array2;
  904           Object obj3 = array3;
  905           
  906           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  907           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  908           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  909           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  910   
  911           array1[1] = new TestObject(7);
  912           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  913           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  914       }
  915   
  916       public void testLongArrayHiddenByObject() {
  917           long[] array1 = new long[2];
  918           array1[0] = 5L;
  919           array1[1] = 6L;
  920           long[] array2 = new long[2];
  921           array2[0] = 5L;
  922           array2[1] = 6L;
  923           long[] array3 = new long[3];
  924           array3[0] = 5L;
  925           array3[1] = 6L;
  926           array3[2] = 7L;
  927           Object obj1 = array1;
  928           Object obj2 = array2;
  929           Object obj3 = array3;
  930           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  931           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  932           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  933           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  934   
  935           array1[1] = 7;
  936           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  937           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  938       }
  939   
  940       public void testIntArrayHiddenByObject() {
  941           int[] array1 = new int[2];
  942           array1[0] = 5;
  943           array1[1] = 6;
  944           int[] array2 = new int[2];
  945           array2[0] = 5;
  946           array2[1] = 6;
  947           int[] array3 = new int[3];
  948           array3[0] = 5;
  949           array3[1] = 6;
  950           array3[2] = 7;
  951           Object obj1 = array1;
  952           Object obj2 = array2;
  953           Object obj3 = array3;
  954           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  955           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  956           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  957           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  958   
  959           array1[1] = 7;
  960           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  961           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  962       }
  963   
  964       public void testShortArrayHiddenByObject() {
  965           short[] array1 = new short[2];
  966           array1[0] = 5;
  967           array1[1] = 6;
  968           short[] array2 = new short[2];
  969           array2[0] = 5;
  970           array2[1] = 6;
  971           short[] array3 = new short[3];
  972           array3[0] = 5;
  973           array3[1] = 6;
  974           array3[2] = 7;
  975           Object obj1 = array1;
  976           Object obj2 = array2;
  977           Object obj3 = array3;
  978           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
  979           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
  980           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
  981           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
  982   
  983           array1[1] = 7;
  984           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
  985           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
  986       }
  987   
  988       public void testCharArrayHiddenByObject() {
  989           char[] array1 = new char[2];
  990           array1[0] = 5;
  991           array1[1] = 6;
  992           char[] array2 = new char[2];
  993           array2[0] = 5;
  994           array2[1] = 6;
  995           char[] array3 = new char[3];
  996           array3[0] = 5;
  997           array3[1] = 6;
  998           array3[2] = 7;
  999           Object obj1 = array1;
 1000           Object obj2 = array2;
 1001           Object obj3 = array3;
 1002           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
 1003           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
 1004           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
 1005           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
 1006   
 1007           array1[1] = 7;
 1008           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
 1009           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
 1010       }
 1011   
 1012       public void testByteArrayHiddenByObject() {
 1013           byte[] array1 = new byte[2];
 1014           array1[0] = 5;
 1015           array1[1] = 6;
 1016           byte[] array2 = new byte[2];
 1017           array2[0] = 5;
 1018           array2[1] = 6;
 1019           byte[] array3 = new byte[3];
 1020           array3[0] = 5;
 1021           array3[1] = 6;
 1022           array3[2] = 7;
 1023           Object obj1 = array1;
 1024           Object obj2 = array2;
 1025           Object obj3 = array3;
 1026           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
 1027           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
 1028           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
 1029           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
 1030   
 1031           array1[1] = 7;
 1032           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
 1033           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
 1034       }
 1035   
 1036       public void testDoubleArrayHiddenByObject() {
 1037           double[] array1 = new double[2];
 1038           array1[0] = 5;
 1039           array1[1] = 6;
 1040           double[] array2 = new double[2];
 1041           array2[0] = 5;
 1042           array2[1] = 6;
 1043           double[] array3 = new double[3];
 1044           array3[0] = 5;
 1045           array3[1] = 6;
 1046           array3[2] = 7;
 1047           Object obj1 = array1;
 1048           Object obj2 = array2;
 1049           Object obj3 = array3;
 1050           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
 1051           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
 1052           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
 1053           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
 1054   
 1055           array1[1] = 7;
 1056           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
 1057           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
 1058       }
 1059   
 1060       public void testFloatArrayHiddenByObject() {
 1061           float[] array1 = new float[2];
 1062           array1[0] = 5;
 1063           array1[1] = 6;
 1064           float[] array2 = new float[2];
 1065           array2[0] = 5;
 1066           array2[1] = 6;
 1067           float[] array3 = new float[3];
 1068           array3[0] = 5;
 1069           array3[1] = 6;
 1070           array3[2] = 7;
 1071           Object obj1 = array1;
 1072           Object obj2 = array2;
 1073           Object obj3 = array3;
 1074           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
 1075           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
 1076           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
 1077           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
 1078   
 1079           array1[1] = 7;
 1080           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
 1081           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
 1082       }
 1083   
 1084       public void testBooleanArrayHiddenByObject() {
 1085           boolean[] array1 = new boolean[2];
 1086           array1[0] = true;
 1087           array1[1] = false;
 1088           boolean[] array2 = new boolean[2];
 1089           array2[0] = true;
 1090           array2[1] = false;
 1091           boolean[] array3 = new boolean[3];
 1092           array3[0] = true;
 1093           array3[1] = false;
 1094           array3[2] = true;
 1095           Object obj1 = array1;
 1096           Object obj2 = array2;
 1097           Object obj3 = array3;
 1098           assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
 1099           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
 1100           assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
 1101           assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
 1102   
 1103           array1[1] = true;
 1104           assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
 1105           assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
 1106       }
 1107     
 1108    }

Save This Page
Home » commons-lang-2.4-src » org.apache.commons » lang » builder » [javadoc | source]