1 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 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 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 assertXYZCompareOrder(to1, to2, to3, true); 199 assertXYZCompareOrder(tso1, tso2, tso3, true); 201 } 202 203 211 public void assertReflectionCompareContract(Object x, Object y, Object z, boolean testTransients) { 212 213 assertTrue(reflectionCompareSignum(x, y, testTransients) == -reflectionCompareSignum(y, x, testTransients)); 215 216 if (CompareToBuilder.reflectionCompare(x, y, testTransients) > 0 && CompareToBuilder.reflectionCompare(y, z, testTransients) > 0){ 218 assertTrue(CompareToBuilder.reflectionCompare(x, z, testTransients) > 0); 219 } 220 221 if (CompareToBuilder.reflectionCompare(x, y, testTransients) == 0) { 223 assertTrue(reflectionCompareSignum(x, z, testTransients) == -reflectionCompareSignum(y, z, testTransients)); 224 } 225 226 assertTrue((CompareToBuilder.reflectionCompare(x, y, testTransients) ==0 ) == EqualsBuilder.reflectionEquals(x, y, testTransients)); 228 } 229 230 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 } 1109 | Popular Tags |