1 /* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. 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 17 package org.apache.harmony.tests.java.lang; 18 19 import java.util.Properties; 20 21 import junit.framework.TestCase; 22 23 public class IntegerTest extends TestCase { 24 private Properties orgProps; 25 26 @Override 27 protected void setUp() { 28 orgProps = System.getProperties(); 29 } 30 31 @Override 32 protected void tearDown() { 33 System.setProperties(orgProps); 34 } 35 36 /** 37 * java.lang.Integer#byteValue() 38 */ 39 public void test_byteValue() { 40 // Test for method byte java.lang.Integer.byteValue() 41 assertEquals("Returned incorrect byte value", -1, new Integer(65535) 42 .byteValue()); 43 assertEquals("Returned incorrect byte value", 127, new Integer(127) 44 .byteValue()); 45 } 46 47 /** 48 * java.lang.Integer#compareTo(java.lang.Integer) 49 */ 50 public void test_compareToLjava_lang_Integer() { 51 // Test for method int java.lang.Integer.compareTo(java.lang.Integer) 52 assertTrue("-2 compared to 1 gave non-negative answer", new Integer(-2) 53 .compareTo(new Integer(1)) < 0); 54 assertEquals("-2 compared to -2 gave non-zero answer", 0, new Integer(-2) 55 .compareTo(new Integer(-2))); 56 assertTrue("3 compared to 2 gave non-positive answer", new Integer(3) 57 .compareTo(new Integer(2)) > 0); 58 59 try { 60 new Integer(0).compareTo(null); 61 fail("No NPE"); 62 } catch (NullPointerException e) { 63 } 64 } 65 66 /** 67 * java.lang.Integer#decode(java.lang.String) 68 */ 69 public void test_decodeLjava_lang_String2() { 70 // Test for method java.lang.Integer 71 // java.lang.Integer.decode(java.lang.String) 72 assertEquals("Failed for 132233", 73 132233, Integer.decode("132233").intValue()); 74 assertEquals("Failed for 07654321", 75 07654321, Integer.decode("07654321").intValue()); 76 assertTrue("Failed for #1234567", 77 Integer.decode("#1234567").intValue() == 0x1234567); 78 assertTrue("Failed for 0xdAd", 79 Integer.decode("0xdAd").intValue() == 0xdad); 80 assertEquals("Failed for -23", -23, Integer.decode("-23").intValue()); 81 assertEquals("Returned incorrect value for 0 decimal", 0, Integer 82 .decode("0").intValue()); 83 assertEquals("Returned incorrect value for 0 hex", 0, Integer.decode("0x0") 84 .intValue()); 85 assertTrue("Returned incorrect value for most negative value decimal", 86 Integer.decode("-2147483648").intValue() == 0x80000000); 87 assertTrue("Returned incorrect value for most negative value hex", 88 Integer.decode("-0x80000000").intValue() == 0x80000000); 89 assertTrue("Returned incorrect value for most positive value decimal", 90 Integer.decode("2147483647").intValue() == 0x7fffffff); 91 assertTrue("Returned incorrect value for most positive value hex", 92 Integer.decode("0x7fffffff").intValue() == 0x7fffffff); 93 94 boolean exception = false; 95 try { 96 Integer.decode("0a"); 97 } catch (NumberFormatException e) { 98 // correct 99 exception = true; 100 } 101 assertTrue("Failed to throw NumberFormatException for \"Oa\"", 102 exception); 103 104 exception = false; 105 try { 106 Integer.decode("2147483648"); 107 } catch (NumberFormatException e) { 108 // Correct 109 exception = true; 110 } 111 assertTrue("Failed to throw exception for MAX_VALUE + 1", exception); 112 113 exception = false; 114 try { 115 Integer.decode("-2147483649"); 116 } catch (NumberFormatException e) { 117 // Correct 118 exception = true; 119 } 120 assertTrue("Failed to throw exception for MIN_VALUE - 1", exception); 121 122 exception = false; 123 try { 124 Integer.decode("0x80000000"); 125 } catch (NumberFormatException e) { 126 // Correct 127 exception = true; 128 } 129 assertTrue("Failed to throw exception for hex MAX_VALUE + 1", exception); 130 131 exception = false; 132 try { 133 Integer.decode("-0x80000001"); 134 } catch (NumberFormatException e) { 135 // Correct 136 exception = true; 137 } 138 assertTrue("Failed to throw exception for hex MIN_VALUE - 1", exception); 139 140 exception = false; 141 try { 142 Integer.decode("9999999999"); 143 } catch (NumberFormatException e) { 144 // Correct 145 exception = true; 146 } 147 assertTrue("Failed to throw exception for 9999999999", exception); 148 149 try { 150 Integer.decode("-"); 151 fail("Expected exception for -"); 152 } catch (NumberFormatException e) { 153 // Expected 154 } 155 156 try { 157 Integer.decode("0x"); 158 fail("Expected exception for 0x"); 159 } catch (NumberFormatException e) { 160 // Expected 161 } 162 163 try { 164 Integer.decode("#"); 165 fail("Expected exception for #"); 166 } catch (NumberFormatException e) { 167 // Expected 168 } 169 170 try { 171 Integer.decode("x123"); 172 fail("Expected exception for x123"); 173 } catch (NumberFormatException e) { 174 // Expected 175 } 176 177 try { 178 Integer.decode(null); 179 fail("Expected exception for null"); 180 } catch (NullPointerException e) { 181 // Expected 182 } 183 184 try { 185 Integer.decode(""); 186 fail("Expected exception for empty string"); 187 } catch (NumberFormatException ex) { 188 // Expected 189 } 190 191 try { 192 Integer.decode(" "); 193 fail("Expected exception for single space"); 194 } catch (NumberFormatException ex) { 195 // Expected 196 } 197 198 } 199 200 /** 201 * java.lang.Integer#doubleValue() 202 */ 203 public void test_doubleValue2() { 204 // Test for method double java.lang.Integer.doubleValue() 205 assertEquals("Returned incorrect double value", 2147483647.0, new Integer(2147483647) 206 .doubleValue(), 0.0D); 207 assertEquals("Returned incorrect double value", -2147483647.0, new Integer(-2147483647) 208 .doubleValue(), 0.0D); 209 } 210 211 /** 212 * java.lang.Integer#equals(java.lang.Object) 213 */ 214 public void test_equalsLjava_lang_Object2() { 215 // Test for method boolean java.lang.Integer.equals(java.lang.Object) 216 Integer i1 = new Integer(1000); 217 Integer i2 = new Integer(1000); 218 Integer i3 = new Integer(-1000); 219 assertTrue("Equality test failed", i1.equals(i2) && !(i1.equals(i3))); 220 } 221 222 /** 223 * java.lang.Integer#floatValue() 224 */ 225 public void test_floatValue2() { 226 // Test for method float java.lang.Integer.floatValue() 227 assertTrue("Returned incorrect float value", new Integer(65535) 228 .floatValue() == 65535.0f); 229 assertTrue("Returned incorrect float value", new Integer(-65535) 230 .floatValue() == -65535.0f); 231 } 232 233 /** 234 * java.lang.Integer#getInteger(java.lang.String) 235 */ 236 public void test_getIntegerLjava_lang_String() { 237 // Test for method java.lang.Integer 238 // java.lang.Integer.getInteger(java.lang.String) 239 Properties tProps = new Properties(); 240 tProps.put("testInt", "99"); 241 System.setProperties(tProps); 242 assertTrue("returned incorrect Integer", Integer.getInteger("testInt") 243 .equals(new Integer(99))); 244 assertNull("returned incorrect default Integer", Integer 245 .getInteger("ff")); 246 } 247 248 /** 249 * java.lang.Integer#getInteger(java.lang.String, int) 250 */ 251 public void test_getIntegerLjava_lang_StringI() { 252 // Test for method java.lang.Integer 253 // java.lang.Integer.getInteger(java.lang.String, int) 254 Properties tProps = new Properties(); 255 tProps.put("testInt", "99"); 256 System.setProperties(tProps); 257 assertTrue("returned incorrect Integer", Integer.getInteger("testInt", 258 4).equals(new Integer(99))); 259 assertTrue("returned incorrect default Integer", Integer.getInteger( 260 "ff", 4).equals(new Integer(4))); 261 } 262 263 /** 264 * java.lang.Integer#getInteger(java.lang.String, java.lang.Integer) 265 */ 266 public void test_getIntegerLjava_lang_StringLjava_lang_Integer() { 267 // Test for method java.lang.Integer 268 // java.lang.Integer.getInteger(java.lang.String, java.lang.Integer) 269 Properties tProps = new Properties(); 270 tProps.put("testInt", "99"); 271 System.setProperties(tProps); 272 assertTrue("returned incorrect Integer", Integer.getInteger("testInt", 273 new Integer(4)).equals(new Integer(99))); 274 assertTrue("returned incorrect default Integer", Integer.getInteger( 275 "ff", new Integer(4)).equals(new Integer(4))); 276 } 277 278 /** 279 * java.lang.Integer#hashCode() 280 */ 281 public void test_hashCode2() { 282 // Test for method int java.lang.Integer.hashCode() 283 284 Integer i1 = new Integer(1000); 285 Integer i2 = new Integer(-1000); 286 assertTrue("Returned incorrect hashcode", i1.hashCode() == 1000 287 && (i2.hashCode() == -1000)); 288 } 289 290 /** 291 * java.lang.Integer#intValue() 292 */ 293 public void test_intValue2() { 294 // Test for method int java.lang.Integer.intValue() 295 296 Integer i = new Integer(8900); 297 assertEquals("Returned incorrect int value", 8900, i.intValue()); 298 } 299 300 /** 301 * java.lang.Integer#longValue() 302 */ 303 public void test_longValue2() { 304 // Test for method long java.lang.Integer.longValue() 305 Integer i = new Integer(8900); 306 assertEquals("Returned incorrect long value", 8900L, i.longValue()); 307 } 308 309 /** 310 * java.lang.Integer#parseInt(java.lang.String) 311 */ 312 public void test_parseIntLjava_lang_String2() { 313 // Test for method int java.lang.Integer.parseInt(java.lang.String) 314 315 int i = Integer.parseInt("-8900"); 316 assertEquals("Returned incorrect int", -8900, i); 317 assertEquals("Returned incorrect value for 0", 0, Integer.parseInt("0")); 318 assertTrue("Returned incorrect value for most negative value", Integer 319 .parseInt("-2147483648") == 0x80000000); 320 assertTrue("Returned incorrect value for most positive value", Integer 321 .parseInt("2147483647") == 0x7fffffff); 322 323 boolean exception = false; 324 try { 325 Integer.parseInt("999999999999"); 326 } catch (NumberFormatException e) { 327 // Correct 328 exception = true; 329 } 330 assertTrue("Failed to throw exception for value > int", exception); 331 332 exception = false; 333 try { 334 Integer.parseInt("2147483648"); 335 } catch (NumberFormatException e) { 336 // Correct 337 exception = true; 338 } 339 assertTrue("Failed to throw exception for MAX_VALUE + 1", exception); 340 341 exception = false; 342 try { 343 Integer.parseInt("-2147483649"); 344 } catch (NumberFormatException e) { 345 // Correct 346 exception = true; 347 } 348 assertTrue("Failed to throw exception for MIN_VALUE - 1", exception); 349 } 350 351 /** 352 * java.lang.Integer#parseInt(java.lang.String, int) 353 */ 354 public void test_parseIntLjava_lang_StringI2() { 355 // Test for method int java.lang.Integer.parseInt(java.lang.String, int) 356 assertEquals("Parsed dec val incorrectly", 357 -8000, Integer.parseInt("-8000", 10)); 358 assertEquals("Parsed hex val incorrectly", 359 255, Integer.parseInt("FF", 16)); 360 assertEquals("Parsed oct val incorrectly", 361 16, Integer.parseInt("20", 8)); 362 assertEquals("Returned incorrect value for 0 hex", 0, Integer.parseInt("0", 363 16)); 364 assertTrue("Returned incorrect value for most negative value hex", 365 Integer.parseInt("-80000000", 16) == 0x80000000); 366 assertTrue("Returned incorrect value for most positive value hex", 367 Integer.parseInt("7fffffff", 16) == 0x7fffffff); 368 assertEquals("Returned incorrect value for 0 decimal", 0, Integer.parseInt( 369 "0", 10)); 370 assertTrue("Returned incorrect value for most negative value decimal", 371 Integer.parseInt("-2147483648", 10) == 0x80000000); 372 assertTrue("Returned incorrect value for most positive value decimal", 373 Integer.parseInt("2147483647", 10) == 0x7fffffff); 374 375 boolean exception = false; 376 try { 377 Integer.parseInt("FFFF", 10); 378 } catch (NumberFormatException e) { 379 // Correct 380 exception = true; 381 } 382 assertTrue( 383 "Failed to throw exception when passes hex string and dec parm", 384 exception); 385 386 exception = false; 387 try { 388 Integer.parseInt("2147483648", 10); 389 } catch (NumberFormatException e) { 390 // Correct 391 exception = true; 392 } 393 assertTrue("Failed to throw exception for MAX_VALUE + 1", exception); 394 395 exception = false; 396 try { 397 Integer.parseInt("-2147483649", 10); 398 } catch (NumberFormatException e) { 399 // Correct 400 exception = true; 401 } 402 assertTrue("Failed to throw exception for MIN_VALUE - 1", exception); 403 404 exception = false; 405 try { 406 Integer.parseInt("80000000", 16); 407 } catch (NumberFormatException e) { 408 // Correct 409 exception = true; 410 } 411 assertTrue("Failed to throw exception for hex MAX_VALUE + 1", exception); 412 413 exception = false; 414 try { 415 Integer.parseInt("-80000001", 16); 416 } catch (NumberFormatException e) { 417 // Correct 418 exception = true; 419 } 420 assertTrue("Failed to throw exception for hex MIN_VALUE + 1", exception); 421 422 exception = false; 423 try { 424 Integer.parseInt("9999999999", 10); 425 } catch (NumberFormatException e) { 426 // Correct 427 exception = true; 428 } 429 assertTrue("Failed to throw exception for 9999999999", exception); 430 } 431 432 /** 433 * java.lang.Integer#shortValue() 434 */ 435 public void test_shortValue2() { 436 // Test for method short java.lang.Integer.shortValue() 437 Integer i = new Integer(2147450880); 438 assertEquals("Returned incorrect long value", -32768, i.shortValue()); 439 } 440 441 /** 442 * java.lang.Integer#toBinaryString(int) 443 */ 444 public void test_toBinaryStringI() { 445 // Test for method java.lang.String 446 // java.lang.Integer.toBinaryString(int) 447 assertEquals("Incorrect string returned", "1111111111111111111111111111111", Integer.toBinaryString( 448 Integer.MAX_VALUE)); 449 assertEquals("Incorrect string returned", "10000000000000000000000000000000", Integer.toBinaryString( 450 Integer.MIN_VALUE)); 451 } 452 453 /** 454 * java.lang.Integer#toHexString(int) 455 */ 456 public void test_toHexStringI() { 457 // Test for method java.lang.String java.lang.Integer.toHexString(int) 458 459 String[] hexvals = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 460 "a", "b", "c", "d", "e", "f" }; 461 462 for (int i = 0; i < 16; i++) { 463 assertTrue("Incorrect string returned " + hexvals[i], Integer 464 .toHexString(i).equals(hexvals[i])); 465 } 466 467 assertTrue("Returned incorrect hex string: " 468 + Integer.toHexString(Integer.MAX_VALUE), Integer.toHexString( 469 Integer.MAX_VALUE).equals("7fffffff")); 470 assertTrue("Returned incorrect hex string: " 471 + Integer.toHexString(Integer.MIN_VALUE), Integer.toHexString( 472 Integer.MIN_VALUE).equals("80000000")); 473 } 474 475 /** 476 * java.lang.Integer#toOctalString(int) 477 */ 478 public void test_toOctalStringI() { 479 // Test for method java.lang.String java.lang.Integer.toOctalString(int) 480 // Spec states that the int arg is treated as unsigned 481 assertEquals("Returned incorrect octal string", "17777777777", Integer.toOctalString( 482 Integer.MAX_VALUE)); 483 assertEquals("Returned incorrect octal string", "20000000000", Integer.toOctalString( 484 Integer.MIN_VALUE)); 485 } 486 487 /** 488 * java.lang.Integer#toString() 489 */ 490 public void test_toString2() { 491 // Test for method java.lang.String java.lang.Integer.toString() 492 493 Integer i = new Integer(-80001); 494 495 assertEquals("Returned incorrect String", "-80001", i.toString()); 496 } 497 498 /** 499 * java.lang.Integer#toString(int) 500 */ 501 public void test_toStringI2() { 502 // Test for method java.lang.String java.lang.Integer.toString(int) 503 504 assertEquals("Returned incorrect String", "-80765", Integer.toString(-80765) 505 ); 506 assertEquals("Returned incorrect octal string", "2147483647", Integer.toString( 507 Integer.MAX_VALUE)); 508 assertEquals("Returned incorrect octal string", "-2147483647", Integer.toString( 509 -Integer.MAX_VALUE)); 510 assertEquals("Returned incorrect octal string", "-2147483648", Integer.toString( 511 Integer.MIN_VALUE)); 512 513 // Test for HARMONY-6068 514 assertEquals("Returned incorrect octal String", "-1000", Integer.toString(-1000)); 515 assertEquals("Returned incorrect octal String", "1000", Integer.toString(1000)); 516 assertEquals("Returned incorrect octal String", "0", Integer.toString(0)); 517 assertEquals("Returned incorrect octal String", "708", Integer.toString(708)); 518 assertEquals("Returned incorrect octal String", "-100", Integer.toString(-100)); 519 assertEquals("Returned incorrect octal String", "-1000000008", Integer.toString(-1000000008)); 520 assertEquals("Returned incorrect octal String", "2000000008", Integer.toString(2000000008)); 521 } 522 523 /** 524 * java.lang.Integer#toString(int, int) 525 */ 526 public void test_toStringII() { 527 // Test for method java.lang.String java.lang.Integer.toString(int, int) 528 assertEquals("Returned incorrect octal string", "17777777777", Integer.toString( 529 2147483647, 8)); 530 assertTrue("Returned incorrect hex string--wanted 7fffffff but got: " 531 + Integer.toString(2147483647, 16), Integer.toString( 532 2147483647, 16).equals("7fffffff")); 533 assertEquals("Incorrect string returned", "1111111111111111111111111111111", Integer.toString(2147483647, 2) 534 ); 535 assertEquals("Incorrect string returned", "2147483647", Integer 536 .toString(2147483647, 10)); 537 538 assertEquals("Returned incorrect octal string", "-17777777777", Integer.toString( 539 -2147483647, 8)); 540 assertTrue("Returned incorrect hex string--wanted -7fffffff but got: " 541 + Integer.toString(-2147483647, 16), Integer.toString( 542 -2147483647, 16).equals("-7fffffff")); 543 assertEquals("Incorrect string returned", 544 "-1111111111111111111111111111111", Integer 545 .toString(-2147483647, 2)); 546 assertEquals("Incorrect string returned", "-2147483647", Integer.toString(-2147483647, 547 10)); 548 549 assertEquals("Returned incorrect octal string", "-20000000000", Integer.toString( 550 -2147483648, 8)); 551 assertTrue("Returned incorrect hex string--wanted -80000000 but got: " 552 + Integer.toString(-2147483648, 16), Integer.toString( 553 -2147483648, 16).equals("-80000000")); 554 assertEquals("Incorrect string returned", 555 "-10000000000000000000000000000000", Integer 556 .toString(-2147483648, 2)); 557 assertEquals("Incorrect string returned", "-2147483648", Integer.toString(-2147483648, 558 10)); 559 } 560 561 /** 562 * java.lang.Integer#valueOf(java.lang.String) 563 */ 564 public void test_valueOfLjava_lang_String2() { 565 // Test for method java.lang.Integer 566 // java.lang.Integer.valueOf(java.lang.String) 567 assertEquals("Returned incorrect int", 8888888, Integer.valueOf("8888888") 568 .intValue()); 569 assertTrue("Returned incorrect int", Integer.valueOf("2147483647") 570 .intValue() == Integer.MAX_VALUE); 571 assertTrue("Returned incorrect int", Integer.valueOf("-2147483648") 572 .intValue() == Integer.MIN_VALUE); 573 574 boolean exception = false; 575 try { 576 Integer.valueOf("2147483648"); 577 } catch (NumberFormatException e) { 578 // Correct 579 exception = true; 580 } 581 assertTrue("Failed to throw exception with MAX_VALUE + 1", exception); 582 583 exception = false; 584 try { 585 Integer.valueOf("-2147483649"); 586 } catch (NumberFormatException e) { 587 // Correct 588 exception = true; 589 } 590 assertTrue("Failed to throw exception with MIN_VALUE - 1", exception); 591 } 592 593 /** 594 * java.lang.Integer#valueOf(java.lang.String, int) 595 */ 596 public void test_valueOfLjava_lang_StringI2() { 597 // Test for method java.lang.Integer 598 // java.lang.Integer.valueOf(java.lang.String, int) 599 assertEquals("Returned incorrect int for hex string", 255, Integer.valueOf( 600 "FF", 16).intValue()); 601 assertEquals("Returned incorrect int for oct string", 16, Integer.valueOf( 602 "20", 8).intValue()); 603 assertEquals("Returned incorrect int for bin string", 4, Integer.valueOf( 604 "100", 2).intValue()); 605 606 assertEquals("Returned incorrect int for - hex string", -255, Integer.valueOf( 607 "-FF", 16).intValue()); 608 assertEquals("Returned incorrect int for - oct string", -16, Integer.valueOf( 609 "-20", 8).intValue()); 610 assertEquals("Returned incorrect int for - bin string", -4, Integer.valueOf( 611 "-100", 2).intValue()); 612 assertTrue("Returned incorrect int", Integer.valueOf("2147483647", 10) 613 .intValue() == Integer.MAX_VALUE); 614 assertTrue("Returned incorrect int", Integer.valueOf("-2147483648", 10) 615 .intValue() == Integer.MIN_VALUE); 616 assertTrue("Returned incorrect int", Integer.valueOf("7fffffff", 16) 617 .intValue() == Integer.MAX_VALUE); 618 assertTrue("Returned incorrect int", Integer.valueOf("-80000000", 16) 619 .intValue() == Integer.MIN_VALUE); 620 621 boolean exception = false; 622 try { 623 Integer.valueOf("FF", 2); 624 } catch (NumberFormatException e) { 625 // Correct 626 exception = true; 627 } 628 assertTrue( 629 "Failed to throw exception with hex string and base 2 radix", 630 exception); 631 632 exception = false; 633 try { 634 Integer.valueOf("2147483648", 10); 635 } catch (NumberFormatException e) { 636 // Correct 637 exception = true; 638 } 639 assertTrue("Failed to throw exception with MAX_VALUE + 1", exception); 640 641 exception = false; 642 try { 643 Integer.valueOf("-2147483649", 10); 644 } catch (NumberFormatException e) { 645 // Correct 646 exception = true; 647 } 648 assertTrue("Failed to throw exception with MIN_VALUE - 1", exception); 649 650 exception = false; 651 try { 652 Integer.valueOf("80000000", 16); 653 } catch (NumberFormatException e) { 654 // Correct 655 exception = true; 656 } 657 assertTrue("Failed to throw exception with hex MAX_VALUE + 1", 658 exception); 659 660 exception = false; 661 try { 662 Integer.valueOf("-80000001", 16); 663 } catch (NumberFormatException e) { 664 // Correct 665 exception = true; 666 } 667 assertTrue("Failed to throw exception with hex MIN_VALUE - 1", 668 exception); 669 } 670 671 /** 672 * java.lang.Integer#valueOf(byte) 673 */ 674 public void test_valueOfI() { 675 assertEquals(new Integer(Integer.MIN_VALUE), Integer.valueOf(Integer.MIN_VALUE)); 676 assertEquals(new Integer(Integer.MAX_VALUE), Integer.valueOf(Integer.MAX_VALUE)); 677 assertEquals(new Integer(0), Integer.valueOf(0)); 678 679 short s = -128; 680 while (s < 128) { 681 assertEquals(new Integer(s), Integer.valueOf(s)); 682 assertSame(Integer.valueOf(s), Integer.valueOf(s)); 683 s++; 684 } 685 } 686 687 /** 688 * java.lang.Integer#hashCode() 689 */ 690 public void test_hashCode() { 691 assertEquals(1, new Integer(1).hashCode()); 692 assertEquals(2, new Integer(2).hashCode()); 693 assertEquals(0, new Integer(0).hashCode()); 694 assertEquals(-1, new Integer(-1).hashCode()); 695 } 696 697 /** 698 * java.lang.Integer#Integer(String) 699 */ 700 public void test_ConstructorLjava_lang_String() { 701 assertEquals(new Integer(0), new Integer("0")); 702 assertEquals(new Integer(1), new Integer("1")); 703 assertEquals(new Integer(-1), new Integer("-1")); 704 705 try { 706 new Integer("0x1"); 707 fail("Expected NumberFormatException with hex string."); 708 } catch (NumberFormatException e) { 709 } 710 711 try { 712 new Integer("9.2"); 713 fail("Expected NumberFormatException with floating point string."); 714 } catch (NumberFormatException e) { 715 } 716 717 try { 718 new Integer(""); 719 fail("Expected NumberFormatException with empty string."); 720 } catch (NumberFormatException e) { 721 } 722 723 try { 724 new Integer(null); 725 fail("Expected NumberFormatException with null string."); 726 } catch (NumberFormatException e) { 727 } 728 } 729 730 /** 731 * java.lang.Integer#Integer 732 */ 733 public void test_ConstructorI() { 734 assertEquals(1, new Integer(1).intValue()); 735 assertEquals(2, new Integer(2).intValue()); 736 assertEquals(0, new Integer(0).intValue()); 737 assertEquals(-1, new Integer(-1).intValue()); 738 739 Integer i = new Integer(-89000); 740 assertEquals("Incorrect Integer created", -89000, i.intValue()); 741 } 742 743 /** 744 * java.lang.Integer#byteValue() 745 */ 746 public void test_booleanValue() { 747 assertEquals(1, new Integer(1).byteValue()); 748 assertEquals(2, new Integer(2).byteValue()); 749 assertEquals(0, new Integer(0).byteValue()); 750 assertEquals(-1, new Integer(-1).byteValue()); 751 } 752 753 /** 754 * java.lang.Integer#equals(Object) 755 */ 756 public void test_equalsLjava_lang_Object() { 757 assertEquals(new Integer(0), Integer.valueOf(0)); 758 assertEquals(new Integer(1), Integer.valueOf(1)); 759 assertEquals(new Integer(-1), Integer.valueOf(-1)); 760 761 Integer fixture = new Integer(25); 762 assertEquals(fixture, fixture); 763 assertFalse(fixture.equals(null)); 764 assertFalse(fixture.equals("Not a Integer")); 765 } 766 767 /** 768 * java.lang.Integer#toString() 769 */ 770 public void test_toString() { 771 assertEquals("-1", new Integer(-1).toString()); 772 assertEquals("0", new Integer(0).toString()); 773 assertEquals("1", new Integer(1).toString()); 774 assertEquals("-1", new Integer(0xFFFFFFFF).toString()); 775 } 776 777 /** 778 * java.lang.Integer#toString 779 */ 780 public void test_toStringI() { 781 assertEquals("-1", Integer.toString(-1)); 782 assertEquals("0", Integer.toString(0)); 783 assertEquals("1", Integer.toString(1)); 784 assertEquals("-1", Integer.toString(0xFFFFFFFF)); 785 } 786 787 /** 788 * java.lang.Integer#valueOf(String) 789 */ 790 public void test_valueOfLjava_lang_String() { 791 assertEquals(new Integer(0), Integer.valueOf("0")); 792 assertEquals(new Integer(1), Integer.valueOf("1")); 793 assertEquals(new Integer(-1), Integer.valueOf("-1")); 794 795 try { 796 Integer.valueOf("0x1"); 797 fail("Expected NumberFormatException with hex string."); 798 } catch (NumberFormatException e) { 799 } 800 801 try { 802 Integer.valueOf("9.2"); 803 fail("Expected NumberFormatException with floating point string."); 804 } catch (NumberFormatException e) { 805 } 806 807 try { 808 Integer.valueOf(""); 809 fail("Expected NumberFormatException with empty string."); 810 } catch (NumberFormatException e) { 811 } 812 813 try { 814 Integer.valueOf(null); 815 fail("Expected NumberFormatException with null string."); 816 } catch (NumberFormatException e) { 817 } 818 } 819 820 /** 821 * java.lang.Integer#valueOf(String, int) 822 */ 823 public void test_valueOfLjava_lang_StringI() { 824 assertEquals(new Integer(0), Integer.valueOf("0", 10)); 825 assertEquals(new Integer(1), Integer.valueOf("1", 10)); 826 assertEquals(new Integer(-1), Integer.valueOf("-1", 10)); 827 828 //must be consistent with Character.digit() 829 assertEquals(Character.digit('1', 2), Integer.valueOf("1", 2).byteValue()); 830 assertEquals(Character.digit('F', 16), Integer.valueOf("F", 16).byteValue()); 831 832 try { 833 Integer.valueOf("0x1", 10); 834 fail("Expected NumberFormatException with hex string."); 835 } catch (NumberFormatException e) { 836 } 837 838 try { 839 Integer.valueOf("9.2", 10); 840 fail("Expected NumberFormatException with floating point string."); 841 } catch (NumberFormatException e) { 842 } 843 844 try { 845 Integer.valueOf("", 10); 846 fail("Expected NumberFormatException with empty string."); 847 } catch (NumberFormatException e) { 848 } 849 850 try { 851 Integer.valueOf(null, 10); 852 fail("Expected NumberFormatException with null string."); 853 } catch (NumberFormatException e) { 854 } 855 } 856 857 /** 858 * java.lang.Integer#parseInt(String) 859 */ 860 public void test_parseIntLjava_lang_String() { 861 assertEquals(0, Integer.parseInt("0")); 862 assertEquals(1, Integer.parseInt("1")); 863 assertEquals(-1, Integer.parseInt("-1")); 864 865 try { 866 Integer.parseInt("0x1"); 867 fail("Expected NumberFormatException with hex string."); 868 } catch (NumberFormatException e) { 869 } 870 871 try { 872 Integer.parseInt("9.2"); 873 fail("Expected NumberFormatException with floating point string."); 874 } catch (NumberFormatException e) { 875 } 876 877 try { 878 Integer.parseInt(""); 879 fail("Expected NumberFormatException with empty string."); 880 } catch (NumberFormatException e) { 881 } 882 883 try { 884 Integer.parseInt(null); 885 fail("Expected NumberFormatException with null string."); 886 } catch (NumberFormatException e) { 887 } 888 } 889 890 /** 891 * java.lang.Integer#parseInt(String, int) 892 */ 893 public void test_parseIntLjava_lang_StringI() { 894 assertEquals(0, Integer.parseInt("0", 10)); 895 assertEquals(1, Integer.parseInt("1", 10)); 896 assertEquals(-1, Integer.parseInt("-1", 10)); 897 898 //must be consistent with Character.digit() 899 assertEquals(Character.digit('1', 2), Integer.parseInt("1", 2)); 900 assertEquals(Character.digit('F', 16), Integer.parseInt("F", 16)); 901 902 try { 903 Integer.parseInt("0x1", 10); 904 fail("Expected NumberFormatException with hex string."); 905 } catch (NumberFormatException e) { 906 } 907 908 try { 909 Integer.parseInt("9.2", 10); 910 fail("Expected NumberFormatException with floating point string."); 911 } catch (NumberFormatException e) { 912 } 913 914 try { 915 Integer.parseInt("", 10); 916 fail("Expected NumberFormatException with empty string."); 917 } catch (NumberFormatException e) { 918 } 919 920 try { 921 Integer.parseInt(null, 10); 922 fail("Expected NumberFormatException with null string."); 923 } catch (NumberFormatException e) { 924 } 925 } 926 927 /** 928 * java.lang.Integer#decode(String) 929 */ 930 public void test_decodeLjava_lang_String() { 931 assertEquals(new Integer(0), Integer.decode("0")); 932 assertEquals(new Integer(1), Integer.decode("1")); 933 assertEquals(new Integer(-1), Integer.decode("-1")); 934 assertEquals(new Integer(0xF), Integer.decode("0xF")); 935 assertEquals(new Integer(0xF), Integer.decode("#F")); 936 assertEquals(new Integer(0xF), Integer.decode("0XF")); 937 assertEquals(new Integer(07), Integer.decode("07")); 938 939 try { 940 Integer.decode("9.2"); 941 fail("Expected NumberFormatException with floating point string."); 942 } catch (NumberFormatException e) { 943 } 944 945 try { 946 Integer.decode(""); 947 fail("Expected NumberFormatException with empty string."); 948 } catch (NumberFormatException e) { 949 } 950 951 try { 952 Integer.decode(null); 953 //undocumented NPE, but seems consistent across JREs 954 fail("Expected NullPointerException with null string."); 955 } catch (NullPointerException e) { 956 } 957 } 958 959 /** 960 * java.lang.Integer#doubleValue() 961 */ 962 public void test_doubleValue() { 963 assertEquals(-1D, new Integer(-1).doubleValue(), 0D); 964 assertEquals(0D, new Integer(0).doubleValue(), 0D); 965 assertEquals(1D, new Integer(1).doubleValue(), 0D); 966 } 967 968 /** 969 * java.lang.Integer#floatValue() 970 */ 971 public void test_floatValue() { 972 assertEquals(-1F, new Integer(-1).floatValue(), 0F); 973 assertEquals(0F, new Integer(0).floatValue(), 0F); 974 assertEquals(1F, new Integer(1).floatValue(), 0F); 975 } 976 977 /** 978 * java.lang.Integer#intValue() 979 */ 980 public void test_intValue() { 981 assertEquals(-1, new Integer(-1).intValue()); 982 assertEquals(0, new Integer(0).intValue()); 983 assertEquals(1, new Integer(1).intValue()); 984 } 985 986 /** 987 * java.lang.Integer#longValue() 988 */ 989 public void test_longValue() { 990 assertEquals(-1L, new Integer(-1).longValue()); 991 assertEquals(0L, new Integer(0).longValue()); 992 assertEquals(1L, new Integer(1).longValue()); 993 } 994 995 /** 996 * java.lang.Integer#shortValue() 997 */ 998 public void test_shortValue() { 999 assertEquals(-1, new Integer(-1).shortValue()); 1000 assertEquals(0, new Integer(0).shortValue()); 1001 assertEquals(1, new Integer(1).shortValue()); 1002 } 1003 1004 /** 1005 * java.lang.Integer#highestOneBit(int) 1006 */ 1007 public void test_highestOneBitI() { 1008 assertEquals(0x08, Integer.highestOneBit(0x0A)); 1009 assertEquals(0x08, Integer.highestOneBit(0x0B)); 1010 assertEquals(0x08, Integer.highestOneBit(0x0C)); 1011 assertEquals(0x08, Integer.highestOneBit(0x0F)); 1012 assertEquals(0x80, Integer.highestOneBit(0xFF)); 1013 1014 assertEquals(0x080000, Integer.highestOneBit(0x0F1234)); 1015 assertEquals(0x800000, Integer.highestOneBit(0xFF9977)); 1016 1017 assertEquals(0x80000000, Integer.highestOneBit(0xFFFFFFFF)); 1018 1019 assertEquals(0, Integer.highestOneBit(0)); 1020 assertEquals(1, Integer.highestOneBit(1)); 1021 assertEquals(0x80000000, Integer.highestOneBit(-1)); 1022 } 1023 1024 /** 1025 * java.lang.Integer#lowestOneBit(int) 1026 */ 1027 public void test_lowestOneBitI() { 1028 assertEquals(0x10, Integer.lowestOneBit(0xF0)); 1029 1030 assertEquals(0x10, Integer.lowestOneBit(0x90)); 1031 assertEquals(0x10, Integer.lowestOneBit(0xD0)); 1032 1033 assertEquals(0x10, Integer.lowestOneBit(0x123490)); 1034 assertEquals(0x10, Integer.lowestOneBit(0x1234D0)); 1035 1036 assertEquals(0x100000, Integer.lowestOneBit(0x900000)); 1037 assertEquals(0x100000, Integer.lowestOneBit(0xD00000)); 1038 1039 assertEquals(0x40, Integer.lowestOneBit(0x40)); 1040 assertEquals(0x40, Integer.lowestOneBit(0xC0)); 1041 1042 assertEquals(0x4000, Integer.lowestOneBit(0x4000)); 1043 assertEquals(0x4000, Integer.lowestOneBit(0xC000)); 1044 1045 assertEquals(0x4000, Integer.lowestOneBit(0x99994000)); 1046 assertEquals(0x4000, Integer.lowestOneBit(0x9999C000)); 1047 1048 assertEquals(0, Integer.lowestOneBit(0)); 1049 assertEquals(1, Integer.lowestOneBit(1)); 1050 assertEquals(1, Integer.lowestOneBit(-1)); 1051 } 1052 1053 /** 1054 * java.lang.Integer#numberOfLeadingZeros(int) 1055 */ 1056 public void test_numberOfLeadingZerosI() { 1057 assertEquals(32, Integer.numberOfLeadingZeros(0x0)); 1058 assertEquals(31, Integer.numberOfLeadingZeros(0x1)); 1059 assertEquals(30, Integer.numberOfLeadingZeros(0x2)); 1060 assertEquals(30, Integer.numberOfLeadingZeros(0x3)); 1061 assertEquals(29, Integer.numberOfLeadingZeros(0x4)); 1062 assertEquals(29, Integer.numberOfLeadingZeros(0x5)); 1063 assertEquals(29, Integer.numberOfLeadingZeros(0x6)); 1064 assertEquals(29, Integer.numberOfLeadingZeros(0x7)); 1065 assertEquals(28, Integer.numberOfLeadingZeros(0x8)); 1066 assertEquals(28, Integer.numberOfLeadingZeros(0x9)); 1067 assertEquals(28, Integer.numberOfLeadingZeros(0xA)); 1068 assertEquals(28, Integer.numberOfLeadingZeros(0xB)); 1069 assertEquals(28, Integer.numberOfLeadingZeros(0xC)); 1070 assertEquals(28, Integer.numberOfLeadingZeros(0xD)); 1071 assertEquals(28, Integer.numberOfLeadingZeros(0xE)); 1072 assertEquals(28, Integer.numberOfLeadingZeros(0xF)); 1073 assertEquals(27, Integer.numberOfLeadingZeros(0x10)); 1074 assertEquals(24, Integer.numberOfLeadingZeros(0x80)); 1075 assertEquals(24, Integer.numberOfLeadingZeros(0xF0)); 1076 assertEquals(23, Integer.numberOfLeadingZeros(0x100)); 1077 assertEquals(20, Integer.numberOfLeadingZeros(0x800)); 1078 assertEquals(20, Integer.numberOfLeadingZeros(0xF00)); 1079 assertEquals(19, Integer.numberOfLeadingZeros(0x1000)); 1080 assertEquals(16, Integer.numberOfLeadingZeros(0x8000)); 1081 assertEquals(16, Integer.numberOfLeadingZeros(0xF000)); 1082 assertEquals(15, Integer.numberOfLeadingZeros(0x10000)); 1083 assertEquals(12, Integer.numberOfLeadingZeros(0x80000)); 1084 assertEquals(12, Integer.numberOfLeadingZeros(0xF0000)); 1085 assertEquals(11, Integer.numberOfLeadingZeros(0x100000)); 1086 assertEquals(8, Integer.numberOfLeadingZeros(0x800000)); 1087 assertEquals(8, Integer.numberOfLeadingZeros(0xF00000)); 1088 assertEquals(7, Integer.numberOfLeadingZeros(0x1000000)); 1089 assertEquals(4, Integer.numberOfLeadingZeros(0x8000000)); 1090 assertEquals(4, Integer.numberOfLeadingZeros(0xF000000)); 1091 assertEquals(3, Integer.numberOfLeadingZeros(0x10000000)); 1092 assertEquals(0, Integer.numberOfLeadingZeros(0x80000000)); 1093 assertEquals(0, Integer.numberOfLeadingZeros(0xF0000000)); 1094 1095 assertEquals(1, Integer.numberOfLeadingZeros(Integer.MAX_VALUE)); 1096 assertEquals(0, Integer.numberOfLeadingZeros(Integer.MIN_VALUE)); 1097 } 1098 1099 /** 1100 * java.lang.Integer#numberOfTrailingZeros(int) 1101 */ 1102 public void test_numberOfTrailingZerosI() { 1103 assertEquals(32, Integer.numberOfTrailingZeros(0x0)); 1104 assertEquals(31, Integer.numberOfTrailingZeros(Integer.MIN_VALUE)); 1105 assertEquals(0, Integer.numberOfTrailingZeros(Integer.MAX_VALUE)); 1106 1107 assertEquals(0, Integer.numberOfTrailingZeros(0x1)); 1108 assertEquals(3, Integer.numberOfTrailingZeros(0x8)); 1109 assertEquals(0, Integer.numberOfTrailingZeros(0xF)); 1110 1111 assertEquals(4, Integer.numberOfTrailingZeros(0x10)); 1112 assertEquals(7, Integer.numberOfTrailingZeros(0x80)); 1113 assertEquals(4, Integer.numberOfTrailingZeros(0xF0)); 1114 1115 assertEquals(8, Integer.numberOfTrailingZeros(0x100)); 1116 assertEquals(11, Integer.numberOfTrailingZeros(0x800)); 1117 assertEquals(8, Integer.numberOfTrailingZeros(0xF00)); 1118 1119 assertEquals(12, Integer.numberOfTrailingZeros(0x1000)); 1120 assertEquals(15, Integer.numberOfTrailingZeros(0x8000)); 1121 assertEquals(12, Integer.numberOfTrailingZeros(0xF000)); 1122 1123 assertEquals(16, Integer.numberOfTrailingZeros(0x10000)); 1124 assertEquals(19, Integer.numberOfTrailingZeros(0x80000)); 1125 assertEquals(16, Integer.numberOfTrailingZeros(0xF0000)); 1126 1127 assertEquals(20, Integer.numberOfTrailingZeros(0x100000)); 1128 assertEquals(23, Integer.numberOfTrailingZeros(0x800000)); 1129 assertEquals(20, Integer.numberOfTrailingZeros(0xF00000)); 1130 1131 assertEquals(24, Integer.numberOfTrailingZeros(0x1000000)); 1132 assertEquals(27, Integer.numberOfTrailingZeros(0x8000000)); 1133 assertEquals(24, Integer.numberOfTrailingZeros(0xF000000)); 1134 1135 assertEquals(28, Integer.numberOfTrailingZeros(0x10000000)); 1136 assertEquals(31, Integer.numberOfTrailingZeros(0x80000000)); 1137 assertEquals(28, Integer.numberOfTrailingZeros(0xF0000000)); 1138 } 1139 1140 /** 1141 * java.lang.Integer#bitCount(int) 1142 */ 1143 public void test_bitCountI() { 1144 assertEquals(0, Integer.bitCount(0x0)); 1145 assertEquals(1, Integer.bitCount(0x1)); 1146 assertEquals(1, Integer.bitCount(0x2)); 1147 assertEquals(2, Integer.bitCount(0x3)); 1148 assertEquals(1, Integer.bitCount(0x4)); 1149 assertEquals(2, Integer.bitCount(0x5)); 1150 assertEquals(2, Integer.bitCount(0x6)); 1151 assertEquals(3, Integer.bitCount(0x7)); 1152 assertEquals(1, Integer.bitCount(0x8)); 1153 assertEquals(2, Integer.bitCount(0x9)); 1154 assertEquals(2, Integer.bitCount(0xA)); 1155 assertEquals(3, Integer.bitCount(0xB)); 1156 assertEquals(2, Integer.bitCount(0xC)); 1157 assertEquals(3, Integer.bitCount(0xD)); 1158 assertEquals(3, Integer.bitCount(0xE)); 1159 assertEquals(4, Integer.bitCount(0xF)); 1160 1161 assertEquals(8, Integer.bitCount(0xFF)); 1162 assertEquals(12, Integer.bitCount(0xFFF)); 1163 assertEquals(16, Integer.bitCount(0xFFFF)); 1164 assertEquals(20, Integer.bitCount(0xFFFFF)); 1165 assertEquals(24, Integer.bitCount(0xFFFFFF)); 1166 assertEquals(28, Integer.bitCount(0xFFFFFFF)); 1167 assertEquals(32, Integer.bitCount(0xFFFFFFFF)); 1168 } 1169 1170 /** 1171 * java.lang.Integer#rotateLeft(int, int) 1172 */ 1173 public void test_rotateLeftII() { 1174 assertEquals(0xF, Integer.rotateLeft(0xF, 0)); 1175 assertEquals(0xF0, Integer.rotateLeft(0xF, 4)); 1176 assertEquals(0xF00, Integer.rotateLeft(0xF, 8)); 1177 assertEquals(0xF000, Integer.rotateLeft(0xF, 12)); 1178 assertEquals(0xF0000, Integer.rotateLeft(0xF, 16)); 1179 assertEquals(0xF00000, Integer.rotateLeft(0xF, 20)); 1180 assertEquals(0xF000000, Integer.rotateLeft(0xF, 24)); 1181 assertEquals(0xF0000000, Integer.rotateLeft(0xF, 28)); 1182 assertEquals(0xF0000000, Integer.rotateLeft(0xF0000000, 32)); 1183 } 1184 1185 /** 1186 * java.lang.Integer#rotateRight(int, int) 1187 */ 1188 public void test_rotateRightII() { 1189 assertEquals(0xF, Integer.rotateRight(0xF0, 4)); 1190 assertEquals(0xF, Integer.rotateRight(0xF00, 8)); 1191 assertEquals(0xF, Integer.rotateRight(0xF000, 12)); 1192 assertEquals(0xF, Integer.rotateRight(0xF0000, 16)); 1193 assertEquals(0xF, Integer.rotateRight(0xF00000, 20)); 1194 assertEquals(0xF, Integer.rotateRight(0xF000000, 24)); 1195 assertEquals(0xF, Integer.rotateRight(0xF0000000, 28)); 1196 assertEquals(0xF0000000, Integer.rotateRight(0xF0000000, 32)); 1197 assertEquals(0xF0000000, Integer.rotateRight(0xF0000000, 0)); 1198 1199 } 1200 1201 /** 1202 * java.lang.Integer#reverseBytes(int) 1203 */ 1204 public void test_reverseBytesI() { 1205 assertEquals(0xAABBCCDD, Integer.reverseBytes(0xDDCCBBAA)); 1206 assertEquals(0x11223344, Integer.reverseBytes(0x44332211)); 1207 assertEquals(0x00112233, Integer.reverseBytes(0x33221100)); 1208 assertEquals(0x20000002, Integer.reverseBytes(0x02000020)); 1209 } 1210 1211 /** 1212 * java.lang.Integer#reverse(int) 1213 */ 1214 public void test_reverseI() { 1215 assertEquals(-1, Integer.reverse(-1)); 1216 assertEquals(0x80000000, Integer.reverse(1)); 1217 } 1218 1219 /** 1220 * java.lang.Integer#signum(int) 1221 */ 1222 public void test_signumI() { 1223 for (int i = -128; i < 0; i++) { 1224 assertEquals(-1, Integer.signum(i)); 1225 } 1226 assertEquals(0, Integer.signum(0)); 1227 for (int i = 1; i <= 127; i++) { 1228 assertEquals(1, Integer.signum(i)); 1229 } 1230 } 1231 } 1232