CharacterTest.java revision cc05ad238516f1303687aba4a978e24e57c0c07a
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 17package org.apache.harmony.luni.tests.java.lang; 18 19import dalvik.annotation.TestTargets; 20import dalvik.annotation.TestLevel; 21import dalvik.annotation.TestTargetNew; 22import dalvik.annotation.TestTargetClass; 23 24import junit.framework.TestCase; 25 26import java.io.FileOutputStream; 27import java.io.PrintWriter; 28import java.util.Arrays; 29 30@TestTargetClass(Character.class) 31public class CharacterTest extends TestCase { 32 33 @TestTargetNew( 34 level = TestLevel.COMPLETE, 35 notes = "", 36 method = "valueOf", 37 args = {char.class} 38 ) 39 public void test_valueOfC() { 40 // test the cache range 41 for (char c = '\u0000'; c < 512; c++) { 42 Character e = new Character(c); 43 Character a = Character.valueOf(c); 44 assertEquals(e, a); 45 } 46 // test the rest of the chars 47 for (int c = 512; c <= Character.MAX_VALUE; c++) { 48 assertEquals(new Character((char) c), Character.valueOf((char) c)); 49 } 50 } 51 @TestTargetNew( 52 level = TestLevel.COMPLETE, 53 notes = "", 54 method = "isValidCodePoint", 55 args = {int.class} 56 ) 57 public void test_isValidCodePointI() { 58 assertFalse(Character.isValidCodePoint(-1)); 59 assertTrue(Character.isValidCodePoint(0)); 60 assertTrue(Character.isValidCodePoint(1)); 61 assertFalse(Character.isValidCodePoint(Integer.MAX_VALUE)); 62 63 for (int c = '\u0000'; c <= 0x10FFFF; c++) { 64 assertTrue(Character.isValidCodePoint(c)); 65 } 66 67 assertFalse(Character.isValidCodePoint(0x10FFFF + 1)); 68 } 69 @TestTargetNew( 70 level = TestLevel.COMPLETE, 71 notes = "", 72 method = "isSupplementaryCodePoint", 73 args = {int.class} 74 ) 75 public void test_isSupplementaryCodePointI() { 76 assertFalse(Character.isSupplementaryCodePoint(-1)); 77 78 for (int c = '\u0000'; c <= '\uFFFF'; c++) { 79 assertFalse(Character.isSupplementaryCodePoint(c)); 80 } 81 82 for (int c = 0xFFFF + 1; c <= 0x10FFFF; c++) { 83 assertTrue(Character.isSupplementaryCodePoint(c)); 84 } 85 86 assertFalse(Character.isSupplementaryCodePoint(0x10FFFF + 1)); 87 } 88 @TestTargetNew( 89 level = TestLevel.COMPLETE, 90 notes = "", 91 method = "isHighSurrogate", 92 args = {char.class} 93 ) 94 public void test_isHighSurrogateC() { 95 // (\uD800-\uDBFF) 96 assertFalse(Character.isHighSurrogate((char) ('\uD800' - 1))); 97 for (int c = '\uD800'; c <= '\uDBFF'; c++) { 98 assertTrue(Character.isHighSurrogate((char) c)); 99 } 100 assertFalse(Character.isHighSurrogate((char) ('\uDBFF' + 1))); 101 assertFalse(Character.isHighSurrogate('\uFFFF')); 102 } 103 @TestTargetNew( 104 level = TestLevel.COMPLETE, 105 notes = "", 106 method = "isLowSurrogate", 107 args = {char.class} 108 ) 109 public void test_isLowSurrogateC() { 110 // (\uDC00-\uDFFF) 111 assertFalse(Character.isLowSurrogate((char) ('\uDC00' - 1))); 112 for (int c = '\uDC00'; c <= '\uDFFF'; c++) { 113 assertTrue(Character.isLowSurrogate((char) c)); 114 } 115 assertFalse(Character.isLowSurrogate((char) ('\uDFFF' + 1))); 116 } 117 @TestTargetNew( 118 level = TestLevel.COMPLETE, 119 notes = "", 120 method = "isSurrogatePair", 121 args = {char.class, char.class} 122 ) 123 public void test_isSurrogatePairCC() { 124 assertFalse(Character.isSurrogatePair('\u0000', '\u0000')); 125 assertFalse(Character.isSurrogatePair('\u0000', '\uDC00')); 126 127 assertTrue(Character.isSurrogatePair('\uD800', '\uDC00')); 128 assertTrue(Character.isSurrogatePair('\uD800', '\uDFFF')); 129 assertTrue(Character.isSurrogatePair('\uDBFF', '\uDFFF')); 130 131 assertFalse(Character.isSurrogatePair('\uDBFF', '\uF000')); 132 } 133 @TestTargetNew( 134 level = TestLevel.COMPLETE, 135 notes = "", 136 method = "charCount", 137 args = {int.class} 138 ) 139 public void test_charCountI() { 140 141 for (int c = '\u0000'; c <= '\uFFFF'; c++) { 142 assertEquals(1, Character.charCount(c)); 143 } 144 145 for (int c = 0xFFFF + 1; c <= 0x10FFFF; c++) { 146 assertEquals(2, Character.charCount(c)); 147 } 148 149 // invalid code points work in this method 150 assertEquals(2, Character.charCount(Integer.MAX_VALUE)); 151 } 152 @TestTargetNew( 153 level = TestLevel.COMPLETE, 154 notes = "", 155 method = "toCodePoint", 156 args = {char.class, char.class} 157 ) 158 public void test_toCodePointCC() { 159 int result = Character.toCodePoint('\uD800', '\uDC00'); 160 assertEquals(0x00010000, result); 161 162 result = Character.toCodePoint('\uD800', '\uDC01'); 163 assertEquals(0x00010001, result); 164 165 result = Character.toCodePoint('\uD801', '\uDC01'); 166 assertEquals(0x00010401, result); 167 168 result = Character.toCodePoint('\uDBFF', '\uDFFF'); 169 assertEquals(0x00010FFFF, result); 170 } 171 172 @SuppressWarnings("cast") 173 @TestTargetNew( 174 level = TestLevel.COMPLETE, 175 notes = "", 176 method = "codePointAt", 177 args = {java.lang.CharSequence.class, int.class} 178 ) 179 public void test_codePointAtLjava_lang_CharSequenceI() { 180 181 assertEquals('a', Character.codePointAt((CharSequence) "abc", 0)); 182 assertEquals('b', Character.codePointAt((CharSequence) "abc", 1)); 183 assertEquals('c', Character.codePointAt((CharSequence) "abc", 2)); 184 assertEquals(0x10000, Character.codePointAt( 185 (CharSequence) "\uD800\uDC00", 0)); 186 assertEquals('\uDC00', Character.codePointAt( 187 (CharSequence) "\uD800\uDC00", 1)); 188 189 try { 190 Character.codePointAt((CharSequence) null, 0); 191 fail("No NPE."); 192 } catch (NullPointerException e) { 193 } 194 195 try { 196 Character.codePointAt((CharSequence) "abc", -1); 197 fail("No IOOBE, negative index."); 198 } catch (IndexOutOfBoundsException e) { 199 } 200 201 try { 202 Character.codePointAt((CharSequence) "abc", 4); 203 fail("No IOOBE, index too large."); 204 } catch (IndexOutOfBoundsException e) { 205 } 206 } 207 @TestTargetNew( 208 level = TestLevel.COMPLETE, 209 notes = "", 210 method = "codePointAt", 211 args = {char[].class, int.class} 212 ) 213 public void test_codePointAt$CI() { 214 215 assertEquals('a', Character.codePointAt("abc".toCharArray(), 0)); 216 assertEquals('b', Character.codePointAt("abc".toCharArray(), 1)); 217 assertEquals('c', Character.codePointAt("abc".toCharArray(), 2)); 218 assertEquals(0x10000, Character.codePointAt("\uD800\uDC00" 219 .toCharArray(), 0)); 220 assertEquals('\uDC00', Character.codePointAt("\uD800\uDC00" 221 .toCharArray(), 1)); 222 223 try { 224 Character.codePointAt((char[]) null, 0); 225 fail("No NPE."); 226 } catch (NullPointerException e) { 227 } 228 229 try { 230 Character.codePointAt("abc".toCharArray(), -1); 231 fail("No IOOBE, negative index."); 232 } catch (IndexOutOfBoundsException e) { 233 } 234 235 try { 236 Character.codePointAt("abc".toCharArray(), 4); 237 fail("No IOOBE, index too large."); 238 } catch (IndexOutOfBoundsException e) { 239 } 240 } 241 @TestTargetNew( 242 level = TestLevel.COMPLETE, 243 notes = "", 244 method = "codePointAt", 245 args = {char[].class, int.class, int.class} 246 ) 247 public void test_codePointAt$CII() { 248 249 assertEquals('a', Character.codePointAt("abc".toCharArray(), 0, 3)); 250 assertEquals('b', Character.codePointAt("abc".toCharArray(), 1, 3)); 251 assertEquals('c', Character.codePointAt("abc".toCharArray(), 2, 3)); 252 assertEquals(0x10000, Character.codePointAt("\uD800\uDC00" 253 .toCharArray(), 0, 2)); 254 assertEquals('\uDC00', Character.codePointAt("\uD800\uDC00" 255 .toCharArray(), 1, 2)); 256 assertEquals('\uD800', Character.codePointAt("\uD800\uDC00" 257 .toCharArray(), 0, 1)); 258 259 try { 260 Character.codePointAt((char[]) null, 0, 1); 261 fail("No NPE."); 262 } catch (NullPointerException e) { 263 } 264 265 try { 266 Character.codePointAt("abc".toCharArray(), -1, 3); 267 fail("No IOOBE, negative index."); 268 } catch (IndexOutOfBoundsException e) { 269 } 270 271 try { 272 Character.codePointAt("abc".toCharArray(), 4, 3); 273 fail("No IOOBE, index too large."); 274 } catch (IndexOutOfBoundsException e) { 275 } 276 277 try { 278 Character.codePointAt("abc".toCharArray(), 2, 1); 279 fail("No IOOBE, index larger than limit."); 280 } catch (IndexOutOfBoundsException e) { 281 } 282 283 try { 284 Character.codePointAt("abc".toCharArray(), 2, -1); 285 fail("No IOOBE, limit is negative."); 286 } catch (IndexOutOfBoundsException e) { 287 } 288 } 289 @TestTargetNew( 290 level = TestLevel.COMPLETE, 291 notes = "", 292 method = "codePointBefore", 293 args = {java.lang.CharSequence.class, int.class} 294 ) 295 @SuppressWarnings("cast") 296 public void test_codePointBeforeLjava_lang_CharSequenceI() { 297 298 assertEquals('a', Character.codePointBefore((CharSequence) "abc", 1)); 299 assertEquals('b', Character.codePointBefore((CharSequence) "abc", 2)); 300 assertEquals('c', Character.codePointBefore((CharSequence) "abc", 3)); 301 assertEquals(0x10000, Character.codePointBefore( 302 (CharSequence) "\uD800\uDC00", 2)); 303 assertEquals('\uD800', Character.codePointBefore( 304 (CharSequence) "\uD800\uDC00", 1)); 305 306 try { 307 Character.codePointBefore((CharSequence) null, 0); 308 fail("No NPE."); 309 } catch (NullPointerException e) { 310 } 311 312 try { 313 Character.codePointBefore((CharSequence) "abc", 0); 314 fail("No IOOBE, index below one."); 315 } catch (IndexOutOfBoundsException e) { 316 } 317 318 try { 319 Character.codePointBefore((CharSequence) "abc", 4); 320 fail("No IOOBE, index too large."); 321 } catch (IndexOutOfBoundsException e) { 322 } 323 } 324 @TestTargetNew( 325 level = TestLevel.COMPLETE, 326 notes = "", 327 method = "codePointBefore", 328 args = {char[].class, int.class} 329 ) 330 public void test_codePointBefore$CI() { 331 332 assertEquals('a', Character.codePointBefore("abc".toCharArray(), 1)); 333 assertEquals('b', Character.codePointBefore("abc".toCharArray(), 2)); 334 assertEquals('c', Character.codePointBefore("abc".toCharArray(), 3)); 335 assertEquals(0x10000, Character.codePointBefore("\uD800\uDC00" 336 .toCharArray(), 2)); 337 assertEquals('\uD800', Character.codePointBefore("\uD800\uDC00" 338 .toCharArray(), 1)); 339 340 try { 341 Character.codePointBefore((char[]) null, 0); 342 fail("No NPE."); 343 } catch (NullPointerException e) { 344 } 345 346 try { 347 Character.codePointBefore("abc".toCharArray(), -1); 348 fail("No IOOBE, negative index."); 349 } catch (IndexOutOfBoundsException e) { 350 } 351 352 try { 353 Character.codePointBefore("abc".toCharArray(), 4); 354 fail("No IOOBE, index too large."); 355 } catch (IndexOutOfBoundsException e) { 356 } 357 } 358 @TestTargetNew( 359 level = TestLevel.COMPLETE, 360 notes = "", 361 method = "codePointBefore", 362 args = {char[].class, int.class, int.class} 363 ) 364 public void test_codePointBefore$CII() { 365 366 assertEquals('a', Character.codePointBefore("abc".toCharArray(), 1, 0)); 367 assertEquals('b', Character.codePointBefore("abc".toCharArray(), 2, 0)); 368 assertEquals('c', Character.codePointBefore("abc".toCharArray(), 3, 0)); 369 assertEquals(0x10000, Character.codePointBefore("\uD800\uDC00" 370 .toCharArray(), 2, 0)); 371 assertEquals('\uDC00', Character.codePointBefore("\uD800\uDC00" 372 .toCharArray(), 2, 1)); 373 assertEquals('\uD800', Character.codePointBefore("\uD800\uDC00" 374 .toCharArray(), 1, 0)); 375 376 try { 377 Character.codePointBefore((char[]) null, 1, 0); 378 fail("No NPE."); 379 } catch (NullPointerException e) { 380 } 381 382 try { 383 Character.codePointBefore("abc".toCharArray(), 0, 1); 384 fail("No IOOBE, index less than start."); 385 } catch (IndexOutOfBoundsException e) { 386 } 387 388 try { 389 Character.codePointBefore("abc".toCharArray(), 4, 0); 390 fail("No IOOBE, index larger than length."); 391 } catch (IndexOutOfBoundsException e) { 392 } 393 394 try { 395 Character.codePointBefore("abc".toCharArray(), 2, -1); 396 fail("No IOOBE, start is negative."); 397 } catch (IndexOutOfBoundsException e) { 398 } 399 400 try { 401 Character.codePointBefore("abc".toCharArray(), 2, 4); 402 fail("No IOOBE, start larger than length."); 403 } catch (IndexOutOfBoundsException e) { 404 } 405 } 406 @TestTargetNew( 407 level = TestLevel.COMPLETE, 408 notes = "", 409 method = "toChars", 410 args = {int.class, char[].class, int.class} 411 ) 412 public void test_toCharsI$CI() { 413 char[] dst = new char[2]; 414 int result = Character.toChars(0x10000, dst, 0); 415 assertEquals(2, result); 416 assertTrue(Arrays.equals(new char[] { '\uD800', '\uDC00' }, dst)); 417 418 result = Character.toChars(0x10001, dst, 0); 419 assertEquals(2, result); 420 assertTrue(Arrays.equals(new char[] { '\uD800', '\uDC01' }, dst)); 421 422 result = Character.toChars(0x10401, dst, 0); 423 assertEquals(2, result); 424 assertTrue(Arrays.equals(new char[] { '\uD801', '\uDC01' }, dst)); 425 426 result = Character.toChars(0x10FFFF, dst, 0); 427 assertEquals(2, result); 428 assertTrue(Arrays.equals(new char[] { '\uDBFF', '\uDFFF' }, dst)); 429 430 try { 431 Character.toChars(Integer.MAX_VALUE, new char[2], 0); 432 fail("No IAE, invalid code point."); 433 } catch (IllegalArgumentException e) { 434 } 435 436 try { 437 Character.toChars('a', null, 0); 438 fail("No NPE, null char[]."); 439 } catch (NullPointerException e) { 440 } 441 442 try { 443 Character.toChars('a', new char[1], -1); 444 fail("No IOOBE, negative index."); 445 } catch (IndexOutOfBoundsException e) { 446 } 447 448 try { 449 Character.toChars('a', new char[1], 1); 450 fail("No IOOBE, index equal to length."); 451 } catch (IndexOutOfBoundsException e) { 452 } 453 } 454 @TestTargetNew( 455 level = TestLevel.COMPLETE, 456 notes = "", 457 method = "toChars", 458 args = {int.class} 459 ) 460 public void test_toCharsI() { 461 assertTrue(Arrays.equals(new char[] { '\uD800', '\uDC00' }, Character 462 .toChars(0x10000))); 463 assertTrue(Arrays.equals(new char[] { '\uD800', '\uDC01' }, Character 464 .toChars(0x10001))); 465 assertTrue(Arrays.equals(new char[] { '\uD801', '\uDC01' }, Character 466 .toChars(0x10401))); 467 assertTrue(Arrays.equals(new char[] { '\uDBFF', '\uDFFF' }, Character 468 .toChars(0x10FFFF))); 469 470 try { 471 Character.toChars(Integer.MAX_VALUE); 472 fail("No IAE, invalid code point."); 473 } catch (IllegalArgumentException e) { 474 } 475 } 476 @TestTargetNew( 477 level = TestLevel.COMPLETE, 478 notes = "", 479 method = "codePointCount", 480 args = {java.lang.CharSequence.class, int.class, int.class} 481 ) 482 public void test_codePointCountLjava_lang_CharSequenceII() { 483 assertEquals(1, Character.codePointCount("\uD800\uDC00", 0, 2)); 484 assertEquals(1, Character.codePointCount("\uD800\uDC01", 0, 2)); 485 assertEquals(1, Character.codePointCount("\uD801\uDC01", 0, 2)); 486 assertEquals(1, Character.codePointCount("\uDBFF\uDFFF", 0, 2)); 487 488 assertEquals(3, Character.codePointCount("a\uD800\uDC00b", 0, 4)); 489 assertEquals(4, Character.codePointCount("a\uD800\uDC00b\uD800", 0, 5)); 490 491 try { 492 Character.codePointCount((CharSequence) null, 0, 1); 493 fail("No NPE, null char sequence."); 494 } catch (NullPointerException e) { 495 } 496 497 try { 498 Character.codePointCount("abc", -1, 1); 499 fail("No IOOBE, negative start."); 500 } catch (IndexOutOfBoundsException e) { 501 } 502 503 try { 504 Character.codePointCount("abc", 0, 4); 505 fail("No IOOBE, end greater than length."); 506 } catch (IndexOutOfBoundsException e) { 507 } 508 509 try { 510 Character.codePointCount("abc", 2, 1); 511 fail("No IOOBE, end greater than start."); 512 } catch (IndexOutOfBoundsException e) { 513 } 514 } 515 516 @TestTargetNew( 517 level = TestLevel.COMPLETE, 518 notes = "", 519 method = "codePointCount", 520 args = {char[].class, int.class, int.class} 521 ) 522 public void test_codePointCountLjava_lang_CharArrayII() { 523 524 assertEquals(1, Character.codePointCount("\uD800\uDC00".toCharArray(), 525 0, 2)); 526 assertEquals(3, Character.codePointCount("a\uD800\uDC00b".toCharArray(), 527 0, 4)); 528 assertEquals(4, Character.codePointCount("a\uD800\uDC00b\uD800".toCharArray(), 529 0, 5)); 530 assertEquals(4, Character.codePointCount("ab\uD800\uDC00b\uD800".toCharArray(), 531 1, 5)); 532 533 try { 534 Character.codePointCount((char[]) null, 0, 1); 535 fail("No NPE, null char sequence."); 536 } catch (NullPointerException e) { 537 } 538 539 try { 540 Character.codePointCount("abc".toCharArray(), -1, 1); 541 fail("No IOOBE, negative start."); 542 } catch (IndexOutOfBoundsException e) { 543 } 544 545 try { 546 Character.codePointCount("abc".toCharArray(), 0, 4); 547 fail("No IOOBE, end greater than length."); 548 } catch (IndexOutOfBoundsException e) { 549 } 550 551 try { 552 Character.codePointCount("abc".toCharArray(), 1, 3); 553 fail("No IOOBE, end greater than start."); 554 } catch (IndexOutOfBoundsException e) { 555 } 556 } 557 558 @TestTargetNew( 559 level = TestLevel.COMPLETE, 560 notes = "", 561 method = "getDirectionality", 562 args = {char.class} 563 ) 564 public void test_getDirectionality() throws Exception { 565 566 byte[] directionalities = { 567 Character.DIRECTIONALITY_UNDEFINED, 568 Character.DIRECTIONALITY_LEFT_TO_RIGHT, 569 Character.DIRECTIONALITY_RIGHT_TO_LEFT, 570 Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC, 571 Character.DIRECTIONALITY_EUROPEAN_NUMBER, 572 // Character.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR, 573 Character.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR, 574 Character.DIRECTIONALITY_ARABIC_NUMBER, 575 Character.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR, 576 Character.DIRECTIONALITY_NONSPACING_MARK, 577 Character.DIRECTIONALITY_BOUNDARY_NEUTRAL, 578 Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR, 579 Character.DIRECTIONALITY_SEGMENT_SEPARATOR, 580 Character.DIRECTIONALITY_WHITESPACE, 581 Character.DIRECTIONALITY_OTHER_NEUTRALS, 582 Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING, 583 Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE, 584 Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING, 585 Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE, 586 Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT 587 }; 588 589 char[] characters = { 590 '\u0370', // -1 591 '\u00B5', // 0 592 '\u05BE', // 1 593 '\u0600', // 2 594 '\u00B2', // 3 595 // '', // No common char in this group on android and java. 596 '\u00B1', // 5 597 '\u0660', // 6 598 '\u00A0', // 7 599 '\u0300', // 8 600 '\u009F', // 9 601 '\u0085', // 10 602 '\u001F', // 11 603 '\u0020', // 12 604 '\u00AB', // 13 605 '\u202A', // 14 606 '\u202D', // 15 607 '\u202B', // 16 608 '\u202E', // 17 609 '\u202C' // 18 610 }; 611 612 for(int i = 0; i < directionalities.length; i++) { 613 assertEquals(directionalities[i], 614 Character.getDirectionality(characters[i])); 615 } 616 617 618 } 619 620 @TestTargetNew( 621 level = TestLevel.COMPLETE, 622 notes = "", 623 method = "offsetByCodePoints", 624 args = {java.lang.CharSequence.class, int.class, int.class} 625 ) 626 public void test_offsetByCodePointsLjava_lang_CharSequenceII() { 627 int result = Character.offsetByCodePoints("a\uD800\uDC00b", 0, 2); 628 assertEquals(3, result); 629 630 result = Character.offsetByCodePoints("abcd", 3, -1); 631 assertEquals(2, result); 632 633 result = Character.offsetByCodePoints("a\uD800\uDC00b", 0, 3); 634 assertEquals(4, result); 635 636 result = Character.offsetByCodePoints("a\uD800\uDC00b", 3, -1); 637 assertEquals(1, result); 638 639 result = Character.offsetByCodePoints("a\uD800\uDC00b", 3, 0); 640 assertEquals(3, result); 641 642 result = Character.offsetByCodePoints("\uD800\uDC00bc", 3, 0); 643 assertEquals(3, result); 644 645 result = Character.offsetByCodePoints("a\uDC00bc", 3, -1); 646 assertEquals(2, result); 647 648 result = Character.offsetByCodePoints("a\uD800bc", 3, -1); 649 assertEquals(2, result); 650 651 try { 652 Character.offsetByCodePoints((CharSequence) null, 0, 1); 653 fail(); 654 } catch (NullPointerException e) { 655 } 656 657 try { 658 Character.offsetByCodePoints("abc", -1, 1); 659 fail(); 660 } catch (IndexOutOfBoundsException e) { 661 } 662 663 try { 664 Character.offsetByCodePoints("abc", 4, 1); 665 fail(); 666 } catch (IndexOutOfBoundsException e) { 667 } 668 669 try { 670 Character.offsetByCodePoints("abc", 1, 3); 671 fail(); 672 } catch (IndexOutOfBoundsException e) { 673 } 674 675 try { 676 Character.offsetByCodePoints("abc", 1, -2); 677 fail(); 678 } catch (IndexOutOfBoundsException e) { 679 } 680 } 681 @TestTargetNew( 682 level = TestLevel.COMPLETE, 683 notes = "", 684 method = "offsetByCodePoints", 685 args = {char[].class, int.class, int.class, int.class, int.class} 686 ) 687 public void test_offsetByCodePoints$CIIII() { 688 int result = Character.offsetByCodePoints("a\uD800\uDC00b" 689 .toCharArray(), 0, 4, 0, 2); 690 assertEquals(3, result); 691 692 result = Character.offsetByCodePoints("a\uD800\uDC00b".toCharArray(), 693 0, 4, 0, 3); 694 assertEquals(4, result); 695 696 result = Character.offsetByCodePoints("a\uD800\uDC00b\uD800c" 697 .toCharArray(), 0, 5, 0, 3); 698 assertEquals(4, result); 699 700 result = Character 701 .offsetByCodePoints("abcd".toCharArray(), 0, 4, 3, -1); 702 assertEquals(2, result); 703 704 result = Character 705 .offsetByCodePoints("abcd".toCharArray(), 1, 2, 3, -2); 706 assertEquals(1, result); 707 708 result = Character.offsetByCodePoints("a\uD800\uDC00b".toCharArray(), 709 0, 4, 3, -1); 710 assertEquals(1, result); 711 712 result = Character.offsetByCodePoints("a\uD800\uDC00b".toCharArray(), 713 0, 2, 2, -1); 714 assertEquals(1, result); 715 716 result = Character.offsetByCodePoints("a\uD800\uDC00b".toCharArray(), 717 0, 4, 3, 0); 718 assertEquals(3, result); 719 720 result = Character.offsetByCodePoints("\uD800\uDC00bc".toCharArray(), 721 0, 4, 3, 0); 722 assertEquals(3, result); 723 724 result = Character.offsetByCodePoints("a\uDC00bc".toCharArray(), 0, 4, 725 3, -1); 726 assertEquals(2, result); 727 728 result = Character.offsetByCodePoints("a\uD800bc".toCharArray(), 0, 4, 729 3, -1); 730 assertEquals(2, result); 731 732 try { 733 Character.offsetByCodePoints(null, 0, 4, 1, 1); 734 fail(); 735 } catch (NullPointerException e) { 736 } 737 738 try { 739 Character.offsetByCodePoints("abcd".toCharArray(), -1, 4, 1, 1); 740 fail(); 741 } catch (IndexOutOfBoundsException e) { 742 } 743 744 try { 745 Character.offsetByCodePoints("abcd".toCharArray(), 0, -1, 1, 1); 746 fail(); 747 } catch (IndexOutOfBoundsException e) { 748 } 749 750 try { 751 Character.offsetByCodePoints("abcd".toCharArray(), 2, 4, 1, 1); 752 fail(); 753 } catch (IndexOutOfBoundsException e) { 754 } 755 756 try { 757 Character.offsetByCodePoints("abcd".toCharArray(), 1, 3, 0, 1); 758 fail(); 759 } catch (IndexOutOfBoundsException e) { 760 } 761 762 try { 763 Character.offsetByCodePoints("abcd".toCharArray(), 1, 1, 3, 1); 764 fail(); 765 } catch (IndexOutOfBoundsException e) { 766 } 767 768 try { 769 Character.offsetByCodePoints("abc".toCharArray(), 0, 3, 1, 3); 770 fail(); 771 } catch (IndexOutOfBoundsException e) { 772 } 773 774 try { 775 Character.offsetByCodePoints("abc".toCharArray(), 0, 2, 1, 2); 776 fail(); 777 } catch (IndexOutOfBoundsException e) { 778 } 779 780 try { 781 Character.offsetByCodePoints("abc".toCharArray(), 1, 3, 1, -2); 782 fail(); 783 } catch (IndexOutOfBoundsException e) { 784 } 785 } 786 787 /** 788 * @tests java.lang.Character#compareTo(Character) 789 */ 790 @TestTargetNew( 791 level = TestLevel.COMPLETE, 792 notes = "", 793 method = "compareTo", 794 args = {java.lang.Character.class} 795 ) 796 public void test_compareToLjava_lang_Byte() { 797 final Character min = new Character(Character.MIN_VALUE); 798 final Character mid = new Character((char)(Character.MAX_VALUE/2)); 799 final Character max = new Character(Character.MAX_VALUE); 800 801 assertTrue(max.compareTo(max) == 0); 802 assertTrue(min.compareTo(min) == 0); 803 assertTrue(mid.compareTo(mid) == 0); 804 805 assertTrue(max.compareTo(mid) > 0); 806 assertTrue(max.compareTo(min) > 0); 807 808 assertTrue(mid.compareTo(max) < 0); 809 assertTrue(mid.compareTo(min) > 0); 810 811 assertTrue(min.compareTo(mid) < 0); 812 assertTrue(min.compareTo(max) < 0); 813 814 try { 815 min.compareTo(null); 816 fail("No NPE"); 817 } catch (NullPointerException e) { 818 } 819 } 820 @TestTargetNew( 821 level = TestLevel.PARTIAL, 822 notes = "Checks exceptions.", 823 method = "codePointAt", 824 args = {char[].class, int.class, int.class} 825 ) 826 public void test_codePointAt_Invalid() { 827 828 try { 829 Character.codePointAt(null, 6, 4); 830 fail("Expected IndexOutOfBoundsException"); 831 } catch (IndexOutOfBoundsException e) { 832 // expected 833 } catch (Exception e) { 834 fail("Expected IndexOutOfBoundsException"); 835 } 836 837 try { 838 Character.codePointAt(null, 4, 6); 839 fail("Expected NullPointerException"); 840 } catch (NullPointerException e) { 841 // expected 842 } catch (Exception e) { 843 fail("Expected NullPointerException"); 844 } 845 846 try { 847 Character.codePointAt(null, 0, 0); 848 fail("Expected IndexOutOfBoundsException"); 849 } catch (IndexOutOfBoundsException e) { 850 // expected 851 } catch (Exception e) { 852 fail("Expected IndexOutOfBoundsException"); 853 } 854 } 855 856 /** 857 * @tests java.lang.Character#Character(char) 858 */ 859 @TestTargetNew( 860 level = TestLevel.COMPLETE, 861 notes = "", 862 method = "Character", 863 args = {char.class} 864 ) 865 public void test_ConstructorC() { 866 assertEquals("Constructor failed", 'T', new Character('T').charValue()); 867 } 868 869 /** 870 * @tests java.lang.Character#charValue() 871 */ 872 @TestTargetNew( 873 level = TestLevel.COMPLETE, 874 notes = "", 875 method = "charValue", 876 args = {} 877 ) 878 public void test_charValue() { 879 assertEquals("Incorrect char value returned", 'T', new Character('T') 880 .charValue()); 881 } 882 883 /** 884 * @tests java.lang.Character#compareTo(java.lang.Character) 885 */ 886 @TestTargetNew( 887 level = TestLevel.COMPLETE, 888 notes = "", 889 method = "compareTo", 890 args = {java.lang.Character.class} 891 ) 892 public void test_compareToLjava_lang_Character() { 893 Character c = new Character('c'); 894 Character x = new Character('c'); 895 Character y = new Character('b'); 896 Character z = new Character('d'); 897 898 assertEquals("Returned false for same Character", 0, c.compareTo(c)); 899 assertEquals("Returned false for identical Character", 900 0, c.compareTo(x)); 901 assertTrue("Returned other than less than for lesser char", c 902 .compareTo(y) > 0); 903 assertTrue("Returned other than greater than for greater char", c 904 .compareTo(z) < 0); 905 } 906 907 /** 908 * @tests java.lang.Character#digit(char, int) 909 */ 910 @TestTargetNew( 911 level = TestLevel.COMPLETE, 912 notes = "", 913 method = "digit", 914 args = {char.class, int.class} 915 ) 916 public void test_digitCI() { 917 assertEquals("Returned incorrect digit", 1, Character.digit('1', 10)); 918 assertEquals("Returned incorrect digit", 15, Character.digit('F', 16)); 919 assertEquals(-1, Character.digit('\uFFFF', 1)); 920 } 921 922 /** 923 * @tests java.lang.Character#digit(int, int) 924 */ 925 @TestTargetNew( 926 level = TestLevel.COMPLETE, 927 notes = "", 928 method = "digit", 929 args = {int.class, int.class} 930 ) 931 public void test_digit_II() { 932 assertEquals(1, Character.digit((int)'1', 10)); 933 assertEquals(15, Character.digit((int)'F', 16)); 934 935 assertEquals(-1, Character.digit(0x0000, 37)); 936 assertEquals(-1, Character.digit(0x0045, 10)); 937 938 assertEquals(10, Character.digit(0x0041, 20)); 939 assertEquals(10, Character.digit(0x0061, 20)); 940 941 assertEquals(-1, Character.digit(0x110000, 20)); 942 } 943 944 /** 945 * @tests java.lang.Character#equals(java.lang.Object) 946 */ 947 @TestTargetNew( 948 level = TestLevel.COMPLETE, 949 notes = "", 950 method = "equals", 951 args = {java.lang.Object.class} 952 ) 953 public void test_equalsLjava_lang_Object() { 954 // Test for method boolean java.lang.Character.equals(java.lang.Object) 955 assertTrue("Equality test failed", new Character('A') 956 .equals(new Character('A'))); 957 assertTrue("Equality test failed", !(new Character('A') 958 .equals(new Character('a')))); 959 } 960 961 /** 962 * @tests java.lang.Character#forDigit(int, int) 963 */ 964 @TestTargetNew( 965 level = TestLevel.COMPLETE, 966 notes = "", 967 method = "forDigit", 968 args = {int.class, int.class} 969 ) 970 public void test_forDigitII() { 971 char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 972 'a', 'b', 'c', 'd', 'e', 'f' }; 973 for (int i = 0; i < hexChars.length; i++) { 974 assertTrue("Returned incorrect char for " + Integer.toString(i), 975 Character.forDigit(i, hexChars.length) == hexChars[i]); 976 } 977 978 char decimalChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', 979 '9' }; 980 for (int i = 0; i < decimalChars.length; i++) { 981 assertTrue( 982 "Returned incorrect char for " + Integer.toString(i), 983 Character.forDigit(i, decimalChars.length) == decimalChars[i]); 984 } 985 986 } 987 988 /** 989 * @tests java.lang.Character#getNumericValue(char) 990 */ 991 @TestTargetNew( 992 level = TestLevel.COMPLETE, 993 notes = "", 994 method = "getNumericValue", 995 args = {char.class} 996 ) 997 public void test_getNumericValueC() { 998 assertEquals("Returned incorrect numeric value 1", 1, Character 999 .getNumericValue('1')); 1000 assertEquals("Returned incorrect numeric value 2", 15, Character 1001 .getNumericValue('F')); 1002 assertEquals("Returned incorrect numeric value 3", -1, Character 1003 .getNumericValue('\u221e')); 1004 assertEquals("Returned incorrect numeric value 4", -2, Character 1005 .getNumericValue('\u00be')); 1006 assertEquals("Returned incorrect numeric value 5", 10000, Character 1007 .getNumericValue('\u2182')); 1008 assertEquals("Returned incorrect numeric value 6", 2, Character 1009 .getNumericValue('\uff12')); 1010 } 1011 1012 /** 1013 * @tests java.lang.Character#getNumericValue(int) 1014 */ 1015 @TestTargetNew( 1016 level = TestLevel.COMPLETE, 1017 notes = "", 1018 method = "getNumericValue", 1019 args = {int.class} 1020 ) 1021 public void test_getNumericValue_I() { 1022 assertEquals(1, Character.getNumericValue((int)'1')); 1023 assertEquals(15, Character.getNumericValue((int)'F')); 1024 assertEquals(-1, Character.getNumericValue((int)'\u221e')); 1025 assertEquals(-2, Character.getNumericValue((int)'\u00be')); 1026 assertEquals(10000, Character.getNumericValue((int)'\u2182')); 1027 assertEquals(2, Character.getNumericValue((int)'\uff12')); 1028 assertEquals(-1, Character.getNumericValue(0xFFFF)); 1029 1030 assertEquals(-1, Character.getNumericValue(0xFFFF)); 1031 assertEquals(0, Character.getNumericValue(0x1D7CE)); 1032 assertEquals(0, Character.getNumericValue(0x1D7D8)); 1033 assertEquals(-1, Character.getNumericValue(0x2F800)); 1034 assertEquals(-1, Character.getNumericValue(0x10FFFD)); 1035 assertEquals(-1, Character.getNumericValue(0x110000)); 1036 1037 assertEquals(50, Character.getNumericValue(0x216C)); 1038 1039 assertEquals(10, Character.getNumericValue(0x0041)); 1040 assertEquals(35, Character.getNumericValue(0x005A)); 1041 assertEquals(10, Character.getNumericValue(0x0061)); 1042 assertEquals(35, Character.getNumericValue(0x007A)); 1043 assertEquals(10, Character.getNumericValue(0xFF21)); 1044 1045 //FIXME depends on ICU4J 1046 //assertEquals(35, Character.getNumericValue(0xFF3A)); 1047 1048 assertEquals(10, Character.getNumericValue(0xFF41)); 1049 assertEquals(35, Character.getNumericValue(0xFF5A)); 1050 } 1051 1052 /** 1053 * @tests java.lang.Character#getType(char) 1054 */ 1055 @TestTargetNew( 1056 level = TestLevel.COMPLETE, 1057 notes = "", 1058 method = "getType", 1059 args = {char.class} 1060 ) 1061 public void test_getTypeC() { 1062 assertTrue("Returned incorrect type for: \n", 1063 Character.getType('\n') == Character.CONTROL); 1064 assertTrue("Returned incorrect type for: 1", 1065 Character.getType('1') == Character.DECIMAL_DIGIT_NUMBER); 1066 assertTrue("Returned incorrect type for: ' '", 1067 Character.getType(' ') == Character.SPACE_SEPARATOR); 1068 assertTrue("Returned incorrect type for: a", 1069 Character.getType('a') == Character.LOWERCASE_LETTER); 1070 assertTrue("Returned incorrect type for: A", 1071 Character.getType('A') == Character.UPPERCASE_LETTER); 1072 assertTrue("Returned incorrect type for: <", 1073 Character.getType('<') == Character.MATH_SYMBOL); 1074 assertTrue("Returned incorrect type for: ;", 1075 Character.getType(';') == Character.OTHER_PUNCTUATION); 1076 assertTrue("Returned incorrect type for: _", 1077 Character.getType('_') == Character.CONNECTOR_PUNCTUATION); 1078 assertTrue("Returned incorrect type for: $", 1079 Character.getType('$') == Character.CURRENCY_SYMBOL); 1080 assertTrue("Returned incorrect type for: \u2029", Character 1081 .getType('\u2029') == Character.PARAGRAPH_SEPARATOR); 1082 1083 assertEquals("Wrong constant for FORMAT", 16, Character.FORMAT); 1084 assertEquals("Wrong constant for PRIVATE_USE", 1085 18, Character.PRIVATE_USE); 1086 } 1087 1088 /** 1089 * @tests java.lang.Character#getType(int) 1090 */ 1091 @TestTargetNew( 1092 level = TestLevel.COMPLETE, 1093 notes = "", 1094 method = "getType", 1095 args = {int.class} 1096 ) 1097 public void test_getType_I() { 1098 assertTrue(Character.getType((int) '\n') == Character.CONTROL); 1099 assertTrue(Character.getType((int) '1') == Character.DECIMAL_DIGIT_NUMBER); 1100 assertTrue(Character.getType((int) ' ') == Character.SPACE_SEPARATOR); 1101 assertTrue(Character.getType((int) 'a') == Character.LOWERCASE_LETTER); 1102 assertTrue(Character.getType((int) 'A') == Character.UPPERCASE_LETTER); 1103 assertTrue(Character.getType((int) '<') == Character.MATH_SYMBOL); 1104 assertTrue(Character.getType((int) ';') == Character.OTHER_PUNCTUATION); 1105 assertTrue(Character.getType((int) '_') == Character.CONNECTOR_PUNCTUATION); 1106 assertTrue(Character.getType((int) '$') == Character.CURRENCY_SYMBOL); 1107 assertTrue(Character.getType((int) '\u2029') == Character.PARAGRAPH_SEPARATOR); 1108 1109 assertTrue(Character.getType(0x9FFF) == Character.UNASSIGNED); 1110 assertTrue(Character.getType(0x30000) == Character.UNASSIGNED); 1111 assertTrue(Character.getType(0x110000) == Character.UNASSIGNED); 1112 1113 assertTrue(Character.getType(0x0041) == Character.UPPERCASE_LETTER); 1114 assertTrue(Character.getType(0x10400) == Character.UPPERCASE_LETTER); 1115 1116 assertTrue(Character.getType(0x0061) == Character.LOWERCASE_LETTER); 1117 assertTrue(Character.getType(0x10428) == Character.LOWERCASE_LETTER); 1118 1119 assertTrue(Character.getType(0x01C5) == Character.TITLECASE_LETTER); 1120 assertTrue(Character.getType(0x1FFC) == Character.TITLECASE_LETTER); 1121 1122 assertTrue(Character.getType(0x02B0) == Character.MODIFIER_LETTER); 1123 assertTrue(Character.getType(0xFF9F) == Character.MODIFIER_LETTER); 1124 1125 assertTrue(Character.getType(0x01BB) == Character.OTHER_LETTER); 1126 assertTrue(Character.getType(0x2F888) == Character.OTHER_LETTER); 1127 1128 assertTrue(Character.getType(0x0F82) == Character.NON_SPACING_MARK); 1129 assertTrue(Character.getType(0x1D180) == Character.NON_SPACING_MARK); 1130 1131 assertTrue(Character.getType(0x0488) == Character.ENCLOSING_MARK); 1132 assertTrue(Character.getType(0x20DE) == Character.ENCLOSING_MARK); 1133 1134 assertTrue(Character.getType(0x1938) == Character.COMBINING_SPACING_MARK); 1135 assertTrue(Character.getType(0x1D165) == Character.COMBINING_SPACING_MARK); 1136 1137 assertTrue(Character.getType(0x194D) == Character.DECIMAL_DIGIT_NUMBER); 1138 assertTrue(Character.getType(0x1D7CE) == Character.DECIMAL_DIGIT_NUMBER); 1139 1140 assertTrue(Character.getType(0x2160) == Character.LETTER_NUMBER); 1141 assertTrue(Character.getType(0x1034A) == Character.LETTER_NUMBER); 1142 1143 assertTrue(Character.getType(0x00B2) == Character.OTHER_NUMBER); 1144 assertTrue(Character.getType(0x10120) == Character.OTHER_NUMBER); 1145 1146 assertTrue(Character.getType(0x0020) == Character.SPACE_SEPARATOR); 1147 assertTrue(Character.getType(0x3000) == Character.SPACE_SEPARATOR); 1148 1149 assertTrue(Character.getType(0x2028) == Character.LINE_SEPARATOR); 1150 1151 assertTrue(Character.getType(0x2029) == Character.PARAGRAPH_SEPARATOR); 1152 1153 assertTrue(Character.getType(0x0000) == Character.CONTROL); 1154 assertTrue(Character.getType(0x009F) == Character.CONTROL); 1155 1156 assertTrue(Character.getType(0x00AD) == Character.FORMAT); 1157 assertTrue(Character.getType(0xE007F) == Character.FORMAT); 1158 1159 assertTrue(Character.getType(0xE000) == Character.PRIVATE_USE); 1160 assertTrue(Character.getType(0x10FFFD) == Character.PRIVATE_USE); 1161 1162 assertTrue(Character.getType(0xD800) == Character.SURROGATE); 1163 assertTrue(Character.getType(0xDFFF) == Character.SURROGATE); 1164 1165 assertTrue(Character.getType(0xFE31) == Character.DASH_PUNCTUATION); 1166 assertTrue(Character.getType(0xFF0D) == Character.DASH_PUNCTUATION); 1167 1168 assertTrue(Character.getType(0x0028) == Character.START_PUNCTUATION); 1169 assertTrue(Character.getType(0xFF62) == Character.START_PUNCTUATION); 1170 1171 assertTrue(Character.getType(0x0029) == Character.END_PUNCTUATION); 1172 assertTrue(Character.getType(0xFF63) == Character.END_PUNCTUATION); 1173 1174 assertTrue(Character.getType(0x005F) == Character.CONNECTOR_PUNCTUATION); 1175 assertTrue(Character.getType(0xFF3F) == Character.CONNECTOR_PUNCTUATION); 1176 1177 assertTrue(Character.getType(0x2034) == Character.OTHER_PUNCTUATION); 1178 assertTrue(Character.getType(0x1039F) == Character.OTHER_PUNCTUATION); 1179 1180 assertTrue(Character.getType(0x002B) == Character.MATH_SYMBOL); 1181 assertTrue(Character.getType(0x1D6C1) == Character.MATH_SYMBOL); 1182 1183 assertTrue(Character.getType(0x0024) == Character.CURRENCY_SYMBOL); 1184 assertTrue(Character.getType(0xFFE6) == Character.CURRENCY_SYMBOL); 1185 1186 assertTrue(Character.getType(0x005E) == Character.MODIFIER_SYMBOL); 1187 assertTrue(Character.getType(0xFFE3) == Character.MODIFIER_SYMBOL); 1188 1189 assertTrue(Character.getType(0x00A6) == Character.OTHER_SYMBOL); 1190 assertTrue(Character.getType(0x1D356) == Character.OTHER_SYMBOL); 1191 1192 assertTrue(Character.getType(0x00AB) == Character.INITIAL_QUOTE_PUNCTUATION); 1193 assertTrue(Character.getType(0x2039) == Character.INITIAL_QUOTE_PUNCTUATION); 1194 1195 assertTrue(Character.getType(0x00BB) == Character.FINAL_QUOTE_PUNCTUATION); 1196 assertTrue(Character.getType(0x203A) == Character.FINAL_QUOTE_PUNCTUATION); 1197 } 1198 1199 /** 1200 * @tests java.lang.Character#hashCode() 1201 */ 1202 @TestTargetNew( 1203 level = TestLevel.COMPLETE, 1204 notes = "", 1205 method = "hashCode", 1206 args = {} 1207 ) 1208 public void test_hashCode() { 1209 assertEquals("Incorrect hash returned", 1210 89, new Character('Y').hashCode()); 1211 } 1212 1213 /** 1214 * @tests java.lang.Character#isDefined(char) 1215 */ 1216 @TestTargetNew( 1217 level = TestLevel.COMPLETE, 1218 notes = "", 1219 method = "isDefined", 1220 args = {char.class} 1221 ) 1222 public void test_isDefinedC() { 1223 assertTrue("Defined character returned false", Character.isDefined('v')); 1224 assertTrue("Defined character returned false", Character 1225 .isDefined('\u6039')); 1226 } 1227 1228 /** 1229 * @tests java.lang.Character#isDefined(int) 1230 */ 1231 @TestTargetNew( 1232 level = TestLevel.COMPLETE, 1233 notes = "", 1234 method = "isDefined", 1235 args = {int.class} 1236 ) 1237 public void test_isDefined_I(){ 1238 assertTrue(Character.isDefined((int)'v')); 1239 assertTrue(Character.isDefined((int)'\u6039')); 1240 assertTrue(Character.isDefined(0x10300)); 1241 1242 assertFalse(Character.isDefined(0x30000)); 1243 assertFalse(Character.isDefined(0x3FFFF)); 1244 assertFalse(Character.isDefined(0x110000)); 1245 } 1246 1247 /** 1248 * @tests java.lang.Character#isDigit(char) 1249 */ 1250 @TestTargetNew( 1251 level = TestLevel.COMPLETE, 1252 notes = "", 1253 method = "isDigit", 1254 args = {char.class} 1255 ) 1256 public void test_isDigitC() { 1257 assertTrue("Digit returned false", Character.isDigit('1')); 1258 assertTrue("Non-Digit returned false", !Character.isDigit('A')); 1259 } 1260 1261 /** 1262 * @tests java.lang.Character#isDigit(int) 1263 */ 1264 @TestTargetNew( 1265 level = TestLevel.COMPLETE, 1266 notes = "", 1267 method = "isDigit", 1268 args = {int.class} 1269 ) 1270 public void test_isDigit_I() { 1271 assertTrue(Character.isDigit((int) '1')); 1272 assertFalse(Character.isDigit((int) 'A')); 1273 1274 assertTrue(Character.isDigit(0x0030)); 1275 assertTrue(Character.isDigit(0x0035)); 1276 assertTrue(Character.isDigit(0x0039)); 1277 1278 assertTrue(Character.isDigit(0x0660)); 1279 assertTrue(Character.isDigit(0x0665)); 1280 assertTrue(Character.isDigit(0x0669)); 1281 1282 assertTrue(Character.isDigit(0x06F0)); 1283 assertTrue(Character.isDigit(0x06F5)); 1284 assertTrue(Character.isDigit(0x06F9)); 1285 1286 assertTrue(Character.isDigit(0x0966)); 1287 assertTrue(Character.isDigit(0x096A)); 1288 assertTrue(Character.isDigit(0x096F)); 1289 1290 assertTrue(Character.isDigit(0xFF10)); 1291 assertTrue(Character.isDigit(0xFF15)); 1292 assertTrue(Character.isDigit(0xFF19)); 1293 1294 assertTrue(Character.isDigit(0x1D7CE)); 1295 assertTrue(Character.isDigit(0x1D7D8)); 1296 1297 assertFalse(Character.isDigit(0x2F800)); 1298 assertFalse(Character.isDigit(0x10FFFD)); 1299 assertFalse(Character.isDigit(0x110000)); 1300 } 1301 1302 /** 1303 * @tests java.lang.Character#isIdentifierIgnorable(char) 1304 */ 1305 @TestTargetNew( 1306 level = TestLevel.COMPLETE, 1307 notes = "", 1308 method = "isIdentifierIgnorable", 1309 args = {char.class} 1310 ) 1311 public void test_isIdentifierIgnorableC() { 1312 assertTrue("Ignorable whitespace returned false", Character 1313 .isIdentifierIgnorable('\u0007')); 1314 assertTrue("Ignorable non - whitespace control returned false", 1315 Character.isIdentifierIgnorable('\u000f')); 1316 assertTrue("Ignorable join control returned false", Character 1317 .isIdentifierIgnorable('\u200e')); 1318 1319 // the spec is wrong, and our implementation is correct 1320 assertTrue("Ignorable bidi control returned false", Character 1321 .isIdentifierIgnorable('\u202b')); 1322 1323 assertTrue("Ignorable format control returned false", Character 1324 .isIdentifierIgnorable('\u206c')); 1325 assertTrue("Ignorable zero-width no-break returned false", Character 1326 .isIdentifierIgnorable('\ufeff')); 1327 1328 assertTrue("Non-Ignorable returned true", !Character 1329 .isIdentifierIgnorable('\u0065')); 1330 } 1331 1332 /** 1333 * @tests java.lang.Character#isIdentifierIgnorable(int) 1334 */ 1335 @TestTargetNew( 1336 level = TestLevel.COMPLETE, 1337 notes = "", 1338 method = "isIdentifierIgnorable", 1339 args = {int.class} 1340 ) 1341 public void test_isIdentifierIgnorable_I() { 1342 assertTrue(Character.isIdentifierIgnorable(0x0000)); 1343 assertTrue(Character.isIdentifierIgnorable(0x0004)); 1344 assertTrue(Character.isIdentifierIgnorable(0x0008)); 1345 1346 assertTrue(Character.isIdentifierIgnorable(0x000E)); 1347 assertTrue(Character.isIdentifierIgnorable(0x0013)); 1348 assertTrue(Character.isIdentifierIgnorable(0x001B)); 1349 1350 assertTrue(Character.isIdentifierIgnorable(0x007F)); 1351 assertTrue(Character.isIdentifierIgnorable(0x008F)); 1352 assertTrue(Character.isIdentifierIgnorable(0x009F)); 1353 1354 assertTrue(Character.isIdentifierIgnorable(0x202b)); 1355 assertTrue(Character.isIdentifierIgnorable(0x206c)); 1356 assertTrue(Character.isIdentifierIgnorable(0xfeff)); 1357 assertFalse(Character.isIdentifierIgnorable(0x0065)); 1358 1359 assertTrue(Character.isIdentifierIgnorable(0x1D173)); 1360 1361 assertFalse(Character.isIdentifierIgnorable(0x10FFFD)); 1362 assertFalse(Character.isIdentifierIgnorable(0x110000)); 1363 } 1364 1365 /** 1366 * @tests java.lang.Character#isMirrored(char) 1367 */ 1368 @TestTargetNew( 1369 level = TestLevel.COMPLETE, 1370 notes = "", 1371 method = "isMirrored", 1372 args = {char.class} 1373 ) 1374 public void test_isMirrored_C() { 1375 assertTrue(Character.isMirrored('\u0028')); 1376 assertFalse(Character.isMirrored('\uFFFF')); 1377 } 1378 1379 /** 1380 * @tests java.lang.Character#isMirrored(int) 1381 */ 1382 @TestTargetNew( 1383 level = TestLevel.COMPLETE, 1384 notes = "", 1385 method = "isMirrored", 1386 args = {int.class} 1387 ) 1388 public void test_isMirrored_I() { 1389 assertTrue(Character.isMirrored(0x0028)); 1390 assertFalse(Character.isMirrored(0xFFFF)); 1391 assertFalse(Character.isMirrored(0x110000)); 1392 } 1393 1394 /** 1395 * @tests java.lang.Character#isISOControl(char) 1396 */ 1397 @TestTargetNew( 1398 level = TestLevel.COMPLETE, 1399 notes = "", 1400 method = "isISOControl", 1401 args = {char.class} 1402 ) 1403 public void test_isISOControlC() { 1404 // Test for method boolean java.lang.Character.isISOControl(char) 1405 for (int i = 0; i < 32; i++) 1406 assertTrue("ISOConstrol char returned false", Character 1407 .isISOControl((char) i)); 1408 1409 for (int i = 127; i < 160; i++) 1410 assertTrue("ISOConstrol char returned false", Character 1411 .isISOControl((char) i)); 1412 1413 for (int i = 160; i < 260; i++) 1414 assertFalse("Not ISOConstrol char returned true", Character 1415 .isISOControl((char) i)); 1416 } 1417 1418 /** 1419 * @tests java.lang.Character#isISOControl(int) 1420 */ 1421 @TestTargetNew( 1422 level = TestLevel.COMPLETE, 1423 notes = "", 1424 method = "isISOControl", 1425 args = {int.class} 1426 ) 1427 public void test_isISOControlI() { 1428 // Test for method boolean java.lang.Character.isISOControl(char) 1429 for (int i = 0; i < 32; i++) 1430 assertTrue("ISOConstrol char returned false", Character 1431 .isISOControl(i)); 1432 1433 for (int i = 127; i < 160; i++) 1434 assertTrue("ISOConstrol char returned false", Character 1435 .isISOControl(i)); 1436 1437 for (int i = 160; i < 260; i++) 1438 assertFalse("Not ISOConstrol char returned true", Character 1439 .isISOControl(i)); 1440 1441 } 1442 1443 1444 /** 1445 * @tests java.lang.Character#isJavaIdentifierPart(char) 1446 */ 1447 @TestTargetNew( 1448 level = TestLevel.COMPLETE, 1449 notes = "", 1450 method = "isJavaIdentifierPart", 1451 args = {char.class} 1452 ) 1453 public void test_isJavaIdentifierPartC() { 1454 assertTrue("letter returned false", Character.isJavaIdentifierPart('l')); 1455 assertTrue("currency returned false", Character 1456 .isJavaIdentifierPart('$')); 1457 assertTrue("digit returned false", Character.isJavaIdentifierPart('9')); 1458 assertTrue("connecting char returned false", Character 1459 .isJavaIdentifierPart('_')); 1460 assertTrue("ignorable control returned false", Character 1461 .isJavaIdentifierPart('\u200c')); 1462 assertTrue("semi returned true", !Character.isJavaIdentifierPart(';')); 1463 } 1464 1465 /** 1466 * @tests java.lang.Character#isJavaIdentifierPart(int) 1467 */ 1468 @TestTargetNew( 1469 level = TestLevel.COMPLETE, 1470 notes = "", 1471 method = "isJavaIdentifierPart", 1472 args = {int.class} 1473 ) 1474 public void test_isJavaIdentifierPart_I() { 1475 assertTrue(Character.isJavaIdentifierPart((int)'l')); 1476 assertTrue(Character.isJavaIdentifierPart((int)'$')); 1477 assertTrue(Character.isJavaIdentifierPart((int)'9')); 1478 assertTrue(Character.isJavaIdentifierPart((int)'_')); 1479 assertFalse(Character.isJavaIdentifierPart((int)';')); 1480 1481 assertTrue(Character.isJavaIdentifierPart(0x0041)); 1482 assertTrue(Character.isJavaIdentifierPart(0x10400)); 1483 assertTrue(Character.isJavaIdentifierPart(0x0061)); 1484 assertTrue(Character.isJavaIdentifierPart(0x10428)); 1485 assertTrue(Character.isJavaIdentifierPart(0x01C5)); 1486 assertTrue(Character.isJavaIdentifierPart(0x1FFC)); 1487 assertTrue(Character.isJavaIdentifierPart(0x02B0)); 1488 assertTrue(Character.isJavaIdentifierPart(0xFF9F)); 1489 assertTrue(Character.isJavaIdentifierPart(0x01BB)); 1490 assertTrue(Character.isJavaIdentifierPart(0x2F888)); 1491 1492 assertTrue(Character.isJavaIdentifierPart(0x0024)); 1493 assertTrue(Character.isJavaIdentifierPart(0xFFE6)); 1494 1495 assertTrue(Character.isJavaIdentifierPart(0x005F)); 1496 assertTrue(Character.isJavaIdentifierPart(0xFF3F)); 1497 1498 assertTrue(Character.isJavaIdentifierPart(0x194D)); 1499 assertTrue(Character.isJavaIdentifierPart(0x1D7CE)); 1500 assertTrue(Character.isJavaIdentifierPart(0x2160)); 1501 assertTrue(Character.isJavaIdentifierPart(0x1034A)); 1502 1503 assertTrue(Character.isJavaIdentifierPart(0x0F82)); 1504 assertTrue(Character.isJavaIdentifierPart(0x1D180)); 1505 1506 assertTrue(Character.isJavaIdentifierPart(0x0000)); 1507 assertTrue(Character.isJavaIdentifierPart(0x0008)); 1508 assertTrue(Character.isJavaIdentifierPart(0x000E)); 1509 assertTrue(Character.isJavaIdentifierPart(0x001B)); 1510 assertTrue(Character.isJavaIdentifierPart(0x007F)); 1511 assertTrue(Character.isJavaIdentifierPart(0x009F)); 1512 assertTrue(Character.isJavaIdentifierPart(0x00AD)); 1513 assertTrue(Character.isJavaIdentifierPart(0xE007F)); 1514 1515 assertTrue(Character.isJavaIdentifierPart(0x200C)); 1516 } 1517 1518 /** 1519 * @tests java.lang.Character#isJavaIdentifierStart(char) 1520 */ 1521 @TestTargetNew( 1522 level = TestLevel.COMPLETE, 1523 notes = "", 1524 method = "isJavaIdentifierStart", 1525 args = {char.class} 1526 ) 1527 public void test_isJavaIdentifierStartC() { 1528 assertTrue("letter returned false", Character 1529 .isJavaIdentifierStart('l')); 1530 assertTrue("currency returned false", Character 1531 .isJavaIdentifierStart('$')); 1532 assertTrue("connecting char returned false", Character 1533 .isJavaIdentifierStart('_')); 1534 assertTrue("digit returned true", !Character.isJavaIdentifierStart('9')); 1535 assertTrue("ignorable control returned true", !Character 1536 .isJavaIdentifierStart('\u200b')); 1537 assertTrue("semi returned true", !Character.isJavaIdentifierStart(';')); 1538 } 1539 1540 /** 1541 * @tests java.lang.Character#isJavaIdentifierStart(int) 1542 */ 1543 @TestTargetNew( 1544 level = TestLevel.COMPLETE, 1545 notes = "", 1546 method = "isJavaIdentifierStart", 1547 args = {int.class} 1548 ) 1549 public void test_isJavaIdentifierStart_I() { 1550 assertTrue(Character.isJavaIdentifierStart((int)'l')); 1551 assertTrue(Character.isJavaIdentifierStart((int)'$')); 1552 assertTrue(Character.isJavaIdentifierStart((int)'_')); 1553 assertFalse(Character.isJavaIdentifierStart((int)'9')); 1554 assertFalse(Character.isJavaIdentifierStart((int)'\u200b')); 1555 assertFalse(Character.isJavaIdentifierStart((int)';')); 1556 1557 assertTrue(Character.isJavaIdentifierStart(0x0041)); 1558 assertTrue(Character.isJavaIdentifierStart(0x10400)); 1559 assertTrue(Character.isJavaIdentifierStart(0x0061)); 1560 assertTrue(Character.isJavaIdentifierStart(0x10428)); 1561 assertTrue(Character.isJavaIdentifierStart(0x01C5)); 1562 assertTrue(Character.isJavaIdentifierStart(0x1FFC)); 1563 assertTrue(Character.isJavaIdentifierStart(0x02B0)); 1564 assertTrue(Character.isJavaIdentifierStart(0xFF9F)); 1565 assertTrue(Character.isJavaIdentifierStart(0x01BB)); 1566 assertTrue(Character.isJavaIdentifierStart(0x2F888)); 1567 1568 assertTrue(Character.isJavaIdentifierPart(0x0024)); 1569 assertTrue(Character.isJavaIdentifierPart(0xFFE6)); 1570 1571 assertTrue(Character.isJavaIdentifierPart(0x005F)); 1572 assertTrue(Character.isJavaIdentifierPart(0xFF3F)); 1573 1574 assertTrue(Character.isJavaIdentifierPart(0x2160)); 1575 assertTrue(Character.isJavaIdentifierPart(0x1034A)); 1576 1577 assertFalse(Character.isJavaIdentifierPart(0x110000)); 1578 } 1579 1580 /** 1581 * @tests java.lang.Character#isJavaLetter(char) 1582 */ 1583 @TestTargetNew( 1584 level = TestLevel.COMPLETE, 1585 notes = "", 1586 method = "isJavaLetter", 1587 args = {char.class} 1588 ) 1589 @SuppressWarnings("deprecation") 1590 public void test_isJavaLetterC() { 1591 assertTrue("letter returned false", Character.isJavaLetter('l')); 1592 assertTrue("currency returned false", Character.isJavaLetter('$')); 1593 assertTrue("connecting char returned false", Character 1594 .isJavaLetter('_')); 1595 1596 assertTrue("digit returned true", !Character.isJavaLetter('9')); 1597 assertTrue("ignored control returned true", !Character 1598 .isJavaLetter('\u200b')); 1599 assertTrue("semi returned true", !Character.isJavaLetter(';')); 1600 } 1601 1602 /** 1603 * @tests java.lang.Character#isJavaLetterOrDigit(char) 1604 */ 1605 @TestTargetNew( 1606 level = TestLevel.COMPLETE, 1607 notes = "", 1608 method = "isJavaLetterOrDigit", 1609 args = {char.class} 1610 ) 1611 @SuppressWarnings("deprecation") 1612 public void test_isJavaLetterOrDigitC() { 1613 assertTrue("letter returned false", Character.isJavaLetterOrDigit('l')); 1614 assertTrue("currency returned false", Character 1615 .isJavaLetterOrDigit('$')); 1616 assertTrue("digit returned false", Character.isJavaLetterOrDigit('9')); 1617 assertTrue("connecting char returned false", Character 1618 .isJavaLetterOrDigit('_')); 1619 assertTrue("semi returned true", !Character.isJavaLetterOrDigit(';')); 1620 } 1621 1622 /** 1623 * @tests java.lang.Character#isLetter(char) 1624 */ 1625 @TestTargetNew( 1626 level = TestLevel.COMPLETE, 1627 notes = "", 1628 method = "isLetter", 1629 args = {char.class} 1630 ) 1631 public void test_isLetterC() { 1632 assertTrue("Letter returned false", Character.isLetter('L')); 1633 assertTrue("Non-Letter returned true", !Character.isLetter('9')); 1634 } 1635 1636 /** 1637 * @tests java.lang.Character#isLetter(int) 1638 */ 1639 @TestTargetNew( 1640 level = TestLevel.COMPLETE, 1641 notes = "", 1642 method = "isLetter", 1643 args = {int.class} 1644 ) 1645 public void test_isLetter_I() { 1646 assertTrue(Character.isLetter((int)'L')); 1647 assertFalse(Character.isLetter((int)'9')); 1648 1649 assertTrue(Character.isLetter(0x1FA9)); 1650 assertTrue(Character.isLetter(0x1D400)); 1651 assertTrue(Character.isLetter(0x1D622)); 1652 assertTrue(Character.isLetter(0x10000)); 1653 1654 assertFalse(Character.isLetter(0x1012C)); 1655 assertFalse(Character.isLetter(0x110000)); 1656 } 1657 1658 /** 1659 * @tests java.lang.Character#isLetterOrDigit(char) 1660 */ 1661 @TestTargetNew( 1662 level = TestLevel.COMPLETE, 1663 notes = "", 1664 method = "isLetterOrDigit", 1665 args = {char.class} 1666 ) 1667 public void test_isLetterOrDigitC() { 1668 assertTrue("Digit returned false", Character.isLetterOrDigit('9')); 1669 assertTrue("Letter returned false", Character.isLetterOrDigit('K')); 1670 assertTrue("Control returned true", !Character.isLetterOrDigit('\n')); 1671 assertTrue("Punctuation returned true", !Character.isLetterOrDigit('?')); 1672 } 1673 1674 /** 1675 * @tests java.lang.Character#isLetterOrDigit(int) 1676 */ 1677 @TestTargetNew( 1678 level = TestLevel.COMPLETE, 1679 notes = "", 1680 method = "isLetterOrDigit", 1681 args = {int.class} 1682 ) 1683 public void test_isLetterOrDigit_I() { 1684 assertTrue(Character.isLetterOrDigit((int)'9')); 1685 assertTrue(Character.isLetterOrDigit((int)'K')); 1686 assertFalse(Character.isLetterOrDigit((int)'\n')); 1687 assertFalse(Character.isLetterOrDigit((int)'?')); 1688 1689 assertTrue(Character.isLetterOrDigit(0x1FA9)); 1690 assertTrue(Character.isLetterOrDigit(0x1D400)); 1691 assertTrue(Character.isLetterOrDigit(0x1D622)); 1692 assertTrue(Character.isLetterOrDigit(0x10000)); 1693 1694 assertTrue(Character.isLetterOrDigit(0x1D7CE)); 1695 assertTrue(Character.isLetterOrDigit(0x1D7D8)); 1696 1697 assertFalse(Character.isLetterOrDigit(0x10FFFD)); 1698 assertFalse(Character.isLetterOrDigit(0x1012C)); 1699 assertFalse(Character.isLetterOrDigit(0x110000)); 1700 } 1701 1702 /** 1703 * @tests java.lang.Character#isLowerCase(char) 1704 */ 1705 @TestTargetNew( 1706 level = TestLevel.COMPLETE, 1707 notes = "", 1708 method = "isLowerCase", 1709 args = {char.class} 1710 ) 1711 public void test_isLowerCaseC() { 1712 assertTrue("lower returned false", Character.isLowerCase('a')); 1713 assertTrue("upper returned true", !Character.isLowerCase('T')); 1714 } 1715 1716 /** 1717 * @tests java.lang.Character#isLowerCase(int) 1718 */ 1719 @TestTargetNew( 1720 level = TestLevel.COMPLETE, 1721 notes = "", 1722 method = "isLowerCase", 1723 args = {int.class} 1724 ) 1725 public void test_isLowerCase_I() { 1726 assertTrue(Character.isLowerCase((int)'a')); 1727 assertFalse(Character.isLowerCase((int)'T')); 1728 1729 assertTrue(Character.isLowerCase(0x10428)); 1730 assertTrue(Character.isLowerCase(0x1D4EA)); 1731 1732 assertFalse(Character.isLowerCase(0x1D504)); 1733 assertFalse(Character.isLowerCase(0x30000)); 1734 assertFalse(Character.isLowerCase(0x110000)); 1735 } 1736 1737 /** 1738 * @tests java.lang.Character#isSpace(char) 1739 */ 1740 @TestTargetNew( 1741 level = TestLevel.COMPLETE, 1742 notes = "", 1743 method = "isSpace", 1744 args = {char.class} 1745 ) 1746 @SuppressWarnings("deprecation") 1747 public void test_isSpaceC() { 1748 // Test for method boolean java.lang.Character.isSpace(char) 1749 assertTrue("space returned false", Character.isSpace('\n')); 1750 assertTrue("non-space returned true", !Character.isSpace('T')); 1751 } 1752 1753 /** 1754 * @tests java.lang.Character#isSpaceChar(char) 1755 */ 1756 @TestTargetNew( 1757 level = TestLevel.COMPLETE, 1758 notes = "", 1759 method = "isSpaceChar", 1760 args = {char.class} 1761 ) 1762 public void test_isSpaceCharC() { 1763 assertTrue("space returned false", Character.isSpaceChar('\u0020')); 1764 assertTrue("non-space returned true", !Character.isSpaceChar('\n')); 1765 } 1766 1767 /** 1768 * @tests java.lang.Character#isSpaceChar(int) 1769 */ 1770 @TestTargetNew( 1771 level = TestLevel.COMPLETE, 1772 notes = "", 1773 method = "isSpaceChar", 1774 args = {int.class} 1775 ) 1776 public void test_isSpaceChar_I() { 1777 assertTrue(Character.isSpaceChar((int)'\u0020')); 1778 assertFalse(Character.isSpaceChar((int)'\n')); 1779 1780 assertTrue(Character.isSpaceChar(0x2000)); 1781 assertTrue(Character.isSpaceChar(0x200A)); 1782 1783 assertTrue(Character.isSpaceChar(0x2028)); 1784 assertTrue(Character.isSpaceChar(0x2029)); 1785 1786 assertFalse(Character.isSpaceChar(0x110000)); 1787 } 1788 1789 /** 1790 * @tests java.lang.Character#isTitleCase(char) 1791 */ 1792 @TestTargetNew( 1793 level = TestLevel.COMPLETE, 1794 notes = "", 1795 method = "isTitleCase", 1796 args = {char.class} 1797 ) 1798 public void test_isTitleCaseC() { 1799 char[] tChars = { (char) 0x01c5, (char) 0x01c8, (char) 0x01cb, 1800 (char) 0x01f2, (char) 0x1f88, (char) 0x1f89, (char) 0x1f8a, 1801 (char) 0x1f8b, (char) 0x1f8c, (char) 0x1f8d, (char) 0x1f8e, 1802 (char) 0x1f8f, (char) 0x1f98, (char) 0x1f99, (char) 0x1f9a, 1803 (char) 0x1f9b, (char) 0x1f9c, (char) 0x1f9d, (char) 0x1f9e, 1804 (char) 0x1f9f, (char) 0x1fa8, (char) 0x1fa9, (char) 0x1faa, 1805 (char) 0x1fab, (char) 0x1fac, (char) 0x1fad, (char) 0x1fae, 1806 (char) 0x1faf, (char) 0x1fbc, (char) 0x1fcc, (char) 0x1ffc }; 1807 byte tnum = 0; 1808 for (char c = 0; c < 65535; c++) { 1809 if (Character.isTitleCase(c)) { 1810 tnum++; 1811 int i; 1812 for (i = 0; i < tChars.length; i++) 1813 if (tChars[i] == c) 1814 i = tChars.length + 1; 1815 if (i < tChars.length) { 1816 fail("Non Title Case char returned true"); 1817 } 1818 } 1819 } 1820 assertTrue("Failed to find all Title Case chars", tnum == tChars.length); 1821 } 1822 1823 /** 1824 * @tests java.lang.Character#isTitleCase(int) 1825 */ 1826 @TestTargetNew( 1827 level = TestLevel.COMPLETE, 1828 notes = "", 1829 method = "isTitleCase", 1830 args = {int.class} 1831 ) 1832 public void test_isTitleCase_I() { 1833 //all the titlecase characters 1834 int[] titleCaseCharacters = { 0x01c5, 0x01c8, 0x01cb, 0x01f2, 0x1f88, 1835 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 1836 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 1837 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fbc, 1838 0x1fcc, 0x1ffc }; 1839 1840 for (int i = 0; i < titleCaseCharacters.length; i++) { 1841 assertTrue(Character.isTitleCase(titleCaseCharacters[i])); 1842 } 1843 1844 assertFalse(Character.isTitleCase(0x110000)); 1845 } 1846 1847 /** 1848 * @tests java.lang.Character#isUnicodeIdentifierPart(char) 1849 */ 1850 @TestTargetNew( 1851 level = TestLevel.COMPLETE, 1852 notes = "", 1853 method = "isUnicodeIdentifierPart", 1854 args = {char.class} 1855 ) 1856 public void test_isUnicodeIdentifierPartC() { 1857 assertTrue("'a' returned false", Character.isUnicodeIdentifierPart('a')); 1858 assertTrue("'2' returned false", Character.isUnicodeIdentifierPart('2')); 1859 assertTrue("'+' returned true", !Character.isUnicodeIdentifierPart('+')); 1860 } 1861 1862 /** 1863 * @tests java.lang.Character#isUnicodeIdentifierPart(int) 1864 */ 1865 @TestTargetNew( 1866 level = TestLevel.COMPLETE, 1867 notes = "", 1868 method = "isUnicodeIdentifierPart", 1869 args = {int.class} 1870 ) 1871 public void test_isUnicodeIdentifierPart_I() { 1872 assertTrue(Character.isUnicodeIdentifierPart((int)'a')); 1873 assertTrue(Character.isUnicodeIdentifierPart((int)'2')); 1874 assertFalse(Character.isUnicodeIdentifierPart((int)'+')); 1875 1876 assertTrue(Character.isUnicodeIdentifierPart(0x1FA9)); 1877 assertTrue(Character.isUnicodeIdentifierPart(0x1D400)); 1878 assertTrue(Character.isUnicodeIdentifierPart(0x1D622)); 1879 assertTrue(Character.isUnicodeIdentifierPart(0x10000)); 1880 1881 assertTrue(Character.isUnicodeIdentifierPart(0x0030)); 1882 assertTrue(Character.isUnicodeIdentifierPart(0x0035)); 1883 assertTrue(Character.isUnicodeIdentifierPart(0x0039)); 1884 1885 assertTrue(Character.isUnicodeIdentifierPart(0x0660)); 1886 assertTrue(Character.isUnicodeIdentifierPart(0x0665)); 1887 assertTrue(Character.isUnicodeIdentifierPart(0x0669)); 1888 1889 assertTrue(Character.isUnicodeIdentifierPart(0x06F0)); 1890 assertTrue(Character.isUnicodeIdentifierPart(0x06F5)); 1891 assertTrue(Character.isUnicodeIdentifierPart(0x06F9)); 1892 1893 assertTrue(Character.isUnicodeIdentifierPart(0x0966)); 1894 assertTrue(Character.isUnicodeIdentifierPart(0x096A)); 1895 assertTrue(Character.isUnicodeIdentifierPart(0x096F)); 1896 1897 assertTrue(Character.isUnicodeIdentifierPart(0xFF10)); 1898 assertTrue(Character.isUnicodeIdentifierPart(0xFF15)); 1899 assertTrue(Character.isUnicodeIdentifierPart(0xFF19)); 1900 1901 assertTrue(Character.isUnicodeIdentifierPart(0x1D7CE)); 1902 assertTrue(Character.isUnicodeIdentifierPart(0x1D7D8)); 1903 1904 assertTrue(Character.isUnicodeIdentifierPart(0x16EE)); 1905 assertTrue(Character.isUnicodeIdentifierPart(0xFE33)); 1906 assertTrue(Character.isUnicodeIdentifierPart(0xFF10)); 1907 assertTrue(Character.isUnicodeIdentifierPart(0x1D165)); 1908 assertTrue(Character.isUnicodeIdentifierPart(0x1D167)); 1909 assertTrue(Character.isUnicodeIdentifierPart(0x1D173)); 1910 1911 assertFalse(Character.isUnicodeIdentifierPart(0x10FFFF)); 1912 assertFalse(Character.isUnicodeIdentifierPart(0x110000)); 1913 } 1914 1915 /** 1916 * @tests java.lang.Character#isUnicodeIdentifierStart(char) 1917 */ 1918 @TestTargetNew( 1919 level = TestLevel.COMPLETE, 1920 notes = "", 1921 method = "isUnicodeIdentifierStart", 1922 args = {char.class} 1923 ) 1924 public void test_isUnicodeIdentifierStartC() { 1925 assertTrue("'a' returned false", Character 1926 .isUnicodeIdentifierStart('a')); 1927 assertTrue("'2' returned true", !Character 1928 .isUnicodeIdentifierStart('2')); 1929 assertTrue("'+' returned true", !Character 1930 .isUnicodeIdentifierStart('+')); 1931 } 1932 1933 /** 1934 * @tests java.lang.Character#isUnicodeIdentifierStart(int) 1935 */ 1936 @TestTargetNew( 1937 level = TestLevel.COMPLETE, 1938 notes = "", 1939 method = "isUnicodeIdentifierStart", 1940 args = {int.class} 1941 ) 1942 public void test_isUnicodeIdentifierStart_I() { 1943 1944 assertTrue(Character.isUnicodeIdentifierStart((int) 'a')); 1945 assertFalse(Character.isUnicodeIdentifierStart((int) '2')); 1946 assertFalse(Character.isUnicodeIdentifierStart((int) '+')); 1947 1948 assertTrue(Character.isUnicodeIdentifierStart(0x1FA9)); 1949 assertTrue(Character.isUnicodeIdentifierStart(0x1D400)); 1950 assertTrue(Character.isUnicodeIdentifierStart(0x1D622)); 1951 assertTrue(Character.isUnicodeIdentifierStart(0x10000)); 1952 1953 assertTrue(Character.isUnicodeIdentifierStart(0x16EE)); 1954 1955 // number is not a valid start of a Unicode identifier 1956 assertFalse(Character.isUnicodeIdentifierStart(0x0030)); 1957 assertFalse(Character.isUnicodeIdentifierStart(0x0039)); 1958 assertFalse(Character.isUnicodeIdentifierStart(0x0660)); 1959 assertFalse(Character.isUnicodeIdentifierStart(0x0669)); 1960 assertFalse(Character.isUnicodeIdentifierStart(0x06F0)); 1961 assertFalse(Character.isUnicodeIdentifierStart(0x06F9)); 1962 1963 assertFalse(Character.isUnicodeIdentifierPart(0x10FFFF)); 1964 assertFalse(Character.isUnicodeIdentifierPart(0x110000)); 1965 } 1966 1967 /** 1968 * @tests java.lang.Character#isUpperCase(char) 1969 */ 1970 @TestTargetNew( 1971 level = TestLevel.COMPLETE, 1972 notes = "", 1973 method = "isUpperCase", 1974 args = {char.class} 1975 ) 1976 public void test_isUpperCaseC() { 1977 assertTrue("Incorrect case value", !Character.isUpperCase('t')); 1978 assertTrue("Incorrect case value", Character.isUpperCase('T')); 1979 assertFalse("Incorrect case value", Character.isUpperCase('1')); 1980 assertFalse("Incorrect case value", Character.isUpperCase('?')); 1981 } 1982 1983 /** 1984 * @tests java.lang.Character#isUpperCase(int) 1985 */ 1986 @TestTargetNew( 1987 level = TestLevel.COMPLETE, 1988 notes = "", 1989 method = "isUpperCase", 1990 args = {int.class} 1991 ) 1992 public void test_isUpperCase_I() { 1993 assertFalse(Character.isUpperCase((int)'t')); 1994 assertTrue(Character.isUpperCase((int)'T')); 1995 1996 assertTrue(Character.isUpperCase(0x1D504)); 1997 assertTrue(Character.isUpperCase(0x1D608)); 1998 1999 assertFalse(Character.isUpperCase(0x1D656)); 2000 assertFalse(Character.isUpperCase(0x10FFFD)); 2001 assertFalse(Character.isUpperCase(0x110000)); 2002 } 2003 2004 /** 2005 * @tests java.lang.Character#isWhitespace(char) 2006 */ 2007 @TestTargetNew( 2008 level = TestLevel.COMPLETE, 2009 notes = "", 2010 method = "isWhitespace", 2011 args = {char.class} 2012 ) 2013 public void test_isWhitespaceC() { 2014 assertTrue("space returned false", Character.isWhitespace('\n')); 2015 assertTrue("non-space returned true", !Character.isWhitespace('T')); 2016 } 2017 2018 /** 2019 * @tests java.lang.Character#isWhitespace(int) 2020 */ 2021 @TestTargetNew( 2022 level = TestLevel.COMPLETE, 2023 notes = "", 2024 method = "isWhitespace", 2025 args = {int.class} 2026 ) 2027 public void test_isWhitespace_I() { 2028 assertTrue(Character.isWhitespace((int)'\n')); 2029 assertFalse(Character.isWhitespace((int)'T')); 2030 2031 assertTrue(Character.isWhitespace(0x0009)); 2032 assertTrue(Character.isWhitespace(0x000A)); 2033 assertTrue(Character.isWhitespace(0x000B)); 2034 assertTrue(Character.isWhitespace(0x000C)); 2035 assertTrue(Character.isWhitespace(0x000D)); 2036 assertTrue(Character.isWhitespace(0x001C)); 2037 assertTrue(Character.isWhitespace(0x001D)); 2038 assertTrue(Character.isWhitespace(0x001F)); 2039 assertTrue(Character.isWhitespace(0x001E)); 2040 2041 assertTrue(Character.isWhitespace(0x2000)); 2042 assertTrue(Character.isWhitespace(0x200A)); 2043 2044 assertTrue(Character.isWhitespace(0x2028)); 2045 assertTrue(Character.isWhitespace(0x2029)); 2046 2047 assertFalse(Character.isWhitespace(0x00A0)); 2048 assertFalse(Character.isWhitespace(0x202F)); 2049 assertFalse(Character.isWhitespace(0x110000)); 2050 2051 assertFalse(Character.isWhitespace(0xFEFF)); 2052 2053 //FIXME depend on ICU4J 2054 //assertFalse(Character.isWhitespace(0x2007)); 2055 2056 } 2057 2058 /** 2059 * @tests java.lang.Character#reverseBytes(char) 2060 */ 2061 @TestTargetNew( 2062 level = TestLevel.COMPLETE, 2063 notes = "", 2064 method = "reverseBytes", 2065 args = {char.class} 2066 ) 2067 public void test_reverseBytesC() { 2068 char original[] = new char[]{0x0000, 0x0010, 0x00AA, 0xB000, 0xCC00, 0xABCD, 0xFFAA}; 2069 char reversed[] = new char[]{0x0000, 0x1000, 0xAA00, 0x00B0, 0x00CC, 0xCDAB, 0xAAFF}; 2070 assertTrue("Test self check", original.length==reversed.length); 2071 2072 for (int i=0; i<original.length; i++) { 2073 char origChar = original[i]; 2074 char reversedChar = reversed[i]; 2075 char origReversed= Character.reverseBytes(origChar); 2076 2077 assertTrue("java.lang.Character.reverseBytes failed: orig char=" 2078 +Integer.toHexString(origChar)+", reversed char=" 2079 +Integer.toHexString(origReversed), reversedChar==origReversed); 2080 } 2081 } 2082 2083 /** 2084 * @tests java.lang.Character#toLowerCase(char) 2085 */ 2086 @TestTargetNew( 2087 level = TestLevel.COMPLETE, 2088 notes = "", 2089 method = "toLowerCase", 2090 args = {char.class} 2091 ) 2092 public void test_toLowerCaseC() { 2093 assertEquals("Failed to change case", 't', Character.toLowerCase('T')); 2094 assertEquals("Failed to change case", 't', Character.toLowerCase('t')); 2095 assertEquals("Failed to change case", '1', Character.toLowerCase('1')); 2096 } 2097 2098 /** 2099 * @tests java.lang.Character#toLowerCase(int) 2100 */ 2101 @TestTargetNew( 2102 level = TestLevel.COMPLETE, 2103 notes = "", 2104 method = "toLowerCase", 2105 args = {int.class} 2106 ) 2107 public void test_toLowerCase_I() { 2108 assertEquals('t', Character.toLowerCase((int)'T')); 2109 2110 assertEquals(0x10428, Character.toLowerCase(0x10400)); 2111 assertEquals(0x10428, Character.toLowerCase(0x10428)); 2112 2113 assertEquals(0x1D504, Character.toLowerCase(0x1D504)); 2114 assertEquals(0x10FFFD, Character.toLowerCase(0x10FFFD)); 2115 assertEquals(0x110000, Character.toLowerCase(0x110000)); 2116 } 2117 2118 /** 2119 * @tests java.lang.Character#toString() 2120 */ 2121 @TestTargetNew( 2122 level = TestLevel.COMPLETE, 2123 notes = "", 2124 method = "toString", 2125 args = {} 2126 ) 2127 public void test_toString() { 2128 assertEquals("Incorrect String returned", "T", new Character('T').toString()); 2129 assertEquals("Incorrect String returned", "1", new Character('1').toString()); 2130 assertEquals("Incorrect String returned", "$", new Character('$').toString()); 2131 } 2132 2133 /** 2134 * @tests java.lang.Character#toString(char) 2135 */ 2136 @TestTargetNew( 2137 level = TestLevel.COMPLETE, 2138 notes = "", 2139 method = "toString", 2140 args = {char.class} 2141 ) 2142 public void test_toString_char() { 2143 assertEquals("Incorrect String returned", "T", Character.toString('T')); 2144 } 2145 2146 /** 2147 * @tests java.lang.Character#toTitleCase(char) 2148 */ 2149 @TestTargetNew( 2150 level = TestLevel.COMPLETE, 2151 notes = "", 2152 method = "toTitleCase", 2153 args = {char.class} 2154 ) 2155 public void test_toTitleCaseC() { 2156 assertEquals("Incorrect title case for a", 2157 'A', Character.toTitleCase('a')); 2158 assertEquals("Incorrect title case for A", 2159 'A', Character.toTitleCase('A')); 2160 assertEquals("Incorrect title case for 1", 2161 '1', Character.toTitleCase('1')); 2162 } 2163 2164 /** 2165 * @tests java.lang.Character#toTitleCase(int) 2166 */ 2167 @TestTargetNew( 2168 level = TestLevel.COMPLETE, 2169 notes = "", 2170 method = "toTitleCase", 2171 args = {int.class} 2172 ) 2173 public void test_toTitleCase_I() { 2174 assertEquals('A', Character.toTitleCase((int)'a')); 2175 assertEquals('A', Character.toTitleCase((int)'A')); 2176 assertEquals('1', Character.toTitleCase((int)'1')); 2177 2178 assertEquals(0x10400, Character.toTitleCase(0x10428)); 2179 assertEquals(0x10400, Character.toTitleCase(0x10400)); 2180 2181 assertEquals(0x10FFFF, Character.toTitleCase(0x10FFFF)); 2182 assertEquals(0x110000, Character.toTitleCase(0x110000)); 2183 } 2184 2185 /** 2186 * @tests java.lang.Character#toUpperCase(char) 2187 */ 2188 @TestTargetNew( 2189 level = TestLevel.COMPLETE, 2190 notes = "", 2191 method = "toUpperCase", 2192 args = {char.class} 2193 ) 2194 public void test_toUpperCaseC() { 2195 // Test for method char java.lang.Character.toUpperCase(char) 2196 assertEquals("Incorrect upper case for a", 2197 'A', Character.toUpperCase('a')); 2198 assertEquals("Incorrect upper case for A", 2199 'A', Character.toUpperCase('A')); 2200 assertEquals("Incorrect upper case for 1", 2201 '1', Character.toUpperCase('1')); 2202 } 2203 2204 /** 2205 * @tests java.lang.Character#toUpperCase(int) 2206 */ 2207 @TestTargetNew( 2208 level = TestLevel.COMPLETE, 2209 notes = "", 2210 method = "toUpperCase", 2211 args = {int.class} 2212 ) 2213 public void test_toUpperCase_I() { 2214 assertEquals('A', Character.toUpperCase((int)'a')); 2215 assertEquals('A', Character.toUpperCase((int)'A')); 2216 assertEquals('1', Character.toUpperCase((int)'1')); 2217 2218 assertEquals(0x10400, Character.toUpperCase(0x10428)); 2219 assertEquals(0x10400, Character.toUpperCase(0x10400)); 2220 2221 assertEquals(0x10FFFF, Character.toUpperCase(0x10FFFF)); 2222 assertEquals(0x110000, Character.toUpperCase(0x110000)); 2223 } 2224 2225 /** 2226 * @tests java.lang.Character#getDirectionality(int) 2227 */ 2228 @TestTargetNew( 2229 level = TestLevel.COMPLETE, 2230 notes = "", 2231 method = "getDirectionality", 2232 args = {int.class} 2233 ) 2234 public void test_isDirectionaliy_I(){ 2235 assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character 2236 .getDirectionality(0xFFFE)); 2237 assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character 2238 .getDirectionality(0x30000)); 2239 assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character 2240 .getDirectionality(0x110000)); 2241 assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character 2242 .getDirectionality(-1)); 2243 2244 assertEquals(Character.DIRECTIONALITY_LEFT_TO_RIGHT, Character 2245 .getDirectionality(0x0041)); 2246 assertEquals(Character.DIRECTIONALITY_LEFT_TO_RIGHT, Character 2247 .getDirectionality(0x10000)); 2248 assertEquals(Character.DIRECTIONALITY_LEFT_TO_RIGHT, Character 2249 .getDirectionality(0x104A9)); 2250 2251 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT, Character 2252 .getDirectionality(0xFB4F)); 2253 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT, Character 2254 .getDirectionality(0x10838)); 2255 2256 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC, Character 2257 .getDirectionality(0x0600)); 2258 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC, Character 2259 .getDirectionality(0xFEFC)); 2260 2261 assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER, Character 2262 .getDirectionality(0x2070)); 2263 assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER, Character 2264 .getDirectionality(0x1D7FF)); 2265 2266 // No common char in this group on android and java. 2267 // assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR, Character 2268 // .getDirectionality(0x002B)); 2269 // assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR, Character 2270 // .getDirectionality(0xFF0B)); 2271 2272 assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR, Character 2273 .getDirectionality(0x0023)); 2274 assertEquals(Character.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR, Character 2275 .getDirectionality(0x17DB)); 2276 2277 assertEquals(Character.DIRECTIONALITY_ARABIC_NUMBER, Character 2278 .getDirectionality(0x0660)); 2279 assertEquals(Character.DIRECTIONALITY_ARABIC_NUMBER, Character 2280 .getDirectionality(0x066C)); 2281 2282 assertEquals(Character.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR, Character 2283 .getDirectionality(0x002C)); 2284 assertEquals(Character.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR, Character 2285 .getDirectionality(0xFF1A)); 2286 2287 assertEquals(Character.DIRECTIONALITY_NONSPACING_MARK, Character 2288 .getDirectionality(0x17CE)); 2289 assertEquals(Character.DIRECTIONALITY_NONSPACING_MARK, Character 2290 .getDirectionality(0xE01DB)); 2291 2292 assertEquals(Character.DIRECTIONALITY_BOUNDARY_NEUTRAL, Character 2293 .getDirectionality(0x0000)); 2294 assertEquals(Character.DIRECTIONALITY_BOUNDARY_NEUTRAL, Character 2295 .getDirectionality(0xE007F)); 2296 2297 assertEquals(Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR, Character 2298 .getDirectionality(0x000A)); 2299 assertEquals(Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR, Character 2300 .getDirectionality(0x2029)); 2301 2302 assertEquals(Character.DIRECTIONALITY_SEGMENT_SEPARATOR, Character 2303 .getDirectionality(0x0009)); 2304 assertEquals(Character.DIRECTIONALITY_SEGMENT_SEPARATOR, Character 2305 .getDirectionality(0x001F)); 2306 2307 assertEquals(Character.DIRECTIONALITY_WHITESPACE, Character 2308 .getDirectionality(0x0020)); 2309 assertEquals(Character.DIRECTIONALITY_WHITESPACE, Character 2310 .getDirectionality(0x3000)); 2311 2312 assertEquals(Character.DIRECTIONALITY_OTHER_NEUTRALS, Character 2313 .getDirectionality(0x2FF0)); 2314 assertEquals(Character.DIRECTIONALITY_OTHER_NEUTRALS, Character 2315 .getDirectionality(0x1D356)); 2316 2317 assertEquals(Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING, Character 2318 .getDirectionality(0x202A)); 2319 2320 assertEquals(Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE, Character 2321 .getDirectionality(0x202D)); 2322 2323 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING, Character 2324 .getDirectionality(0x202B)); 2325 2326 assertEquals(Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE, Character 2327 .getDirectionality(0x202E)); 2328 2329 assertEquals(Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT, Character 2330 .getDirectionality(0x202C)); 2331 } 2332} 2333