String2Test.java revision 2ad60cfc28e14ee8f0bb038720836a4696c478ad
1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package org.apache.harmony.luni.tests.java.lang; 19 20import java.io.UnsupportedEncodingException; 21import java.util.Locale; 22 23public class String2Test extends junit.framework.TestCase { 24 25 String hw1 = "HelloWorld"; 26 27 String hw2 = "HelloWorld"; 28 29 String hwlc = "helloworld"; 30 31 String hwuc = "HELLOWORLD"; 32 33 String hello1 = "Hello"; 34 35 String world1 = "World"; 36 37 String comp11 = "Test String"; 38 39 Object obj = new Object(); 40 41 char[] buf = { 'W', 'o', 'r', 'l', 'd' }; 42 43 char[] rbuf = new char[5]; 44 45 /** 46 * @tests java.lang.String#String() 47 */ 48 public void test_Constructor() { 49 // Test for method java.lang.String() 50 assertTrue("Created incorrect string", new String().equals("")); 51 } 52 53 /** 54 * @tests java.lang.String#String(byte[]) 55 */ 56 public void test_Constructor$B() { 57 // Test for method java.lang.String(byte []) 58 assertTrue("Failed to create string", new String(hw1.getBytes()) 59 .equals(hw1)); 60 } 61 62 /** 63 * @tests java.lang.String#String(byte[], int) 64 */ 65 @SuppressWarnings("deprecation") 66 public void test_Constructor$BI() { 67 // Test for method java.lang.String(byte [], int) 68 String s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0); 69 assertTrue("Incorrect string returned: " + s, s.equals("ABCDE")); 70 s = new String(new byte[] { 65, 66, 67, 68, 69 }, 1); 71 assertTrue("Did not use nonzero hibyte", !s.equals("ABCDE")); 72 } 73 74 /** 75 * @tests java.lang.String#String(byte[], int, int) 76 */ 77 public void test_Constructor$BII() { 78 // Test for method java.lang.String(byte [], int, int) 79 assertTrue("Failed to create string", new String(hw1.getBytes(), 0, hw1 80 .getBytes().length).equals(hw1)); 81 82 boolean exception = false; 83 try { 84 new String(new byte[0], 0, Integer.MAX_VALUE); 85 } catch (IndexOutOfBoundsException e) { 86 exception = true; 87 } 88 assertTrue("Did not throw exception", exception); 89 } 90 91 /** 92 * @tests java.lang.String#String(byte[], int, int, int) 93 */ 94 @SuppressWarnings("deprecation") 95 public void test_Constructor$BIII() { 96 // Test for method java.lang.String(byte [], int, int, int) 97 String s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0, 1, 3); 98 assertTrue("Incorrect string returned: " + s, s.equals("BCD")); 99 s = new String(new byte[] { 65, 66, 67, 68, 69 }, 1, 0, 5); 100 assertTrue("Did not use nonzero hibyte", !s.equals("ABCDE")); 101 } 102 103 /** 104 * @tests java.lang.String#String(byte[], int, int, java.lang.String) 105 */ 106 public void test_Constructor$BIILjava_lang_String() throws Exception { 107 // Test for method java.lang.String(byte [], int, int, java.lang.String) 108 String s = null; 109 try { 110 s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0, 5, "8859_1"); 111 } catch (Exception e) { 112 fail("Threw exception : " + e.getMessage()); 113 } 114 assertTrue("Incorrect string returned: " + s, s.equals("ABCDE")); 115 //Regression for HARMONY-1111 116 assertNotNull(new String(new byte[] {(byte)0xC0}, 0, 1, "UTF-8")); 117 } 118 119 /** 120 * @tests java.lang.String#String(byte[], java.lang.String) 121 */ 122 public void test_Constructor$BLjava_lang_String() { 123 // Test for method java.lang.String(byte [], java.lang.String) 124 String s = null; 125 try { 126 s = new String(new byte[] { 65, 66, 67, 68, 69 }, "8859_1"); 127 } catch (Exception e) { 128 fail("Threw exception : " + e.getMessage()); 129 } 130 assertTrue("Incorrect string returned: " + s, s.equals("ABCDE")); 131 } 132 133 /** 134 * @tests java.lang.String#String(char[]) 135 */ 136 public void test_Constructor$C() { 137 // Test for method java.lang.String(char []) 138 assertEquals("Failed Constructor test", "World", new String(buf)); 139 } 140 141 /** 142 * @tests java.lang.String#String(char[], int, int) 143 */ 144 public void test_Constructor$CII() { 145 // Test for method java.lang.String(char [], int, int) 146 char[] buf = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' }; 147 String s = new String(buf, 0, buf.length); 148 assertTrue("Incorrect string created", hw1.equals(s)); 149 150 boolean exception = false; 151 try { 152 new String(new char[0], 0, Integer.MAX_VALUE); 153 } catch (IndexOutOfBoundsException e) { 154 exception = true; 155 } 156 assertTrue("Did not throw exception", exception); 157 } 158 159 /** 160 * @tests java.lang.String#String(int[], int, int) 161 */ 162 public void test_Constructor$III() { 163 // Test for method java.lang.String(int [], int, int) 164 try { 165 new String(new int[0], 2, Integer.MAX_VALUE); 166 fail("Did not throw exception"); 167 } catch (IndexOutOfBoundsException e) { 168 //expected 169 } 170 } 171 172 /** 173 * @tests java.lang.String#String(java.lang.String) 174 */ 175 public void test_ConstructorLjava_lang_String() { 176 // Test for method java.lang.String(java.lang.String) 177 String s = new String("Hello World"); 178 assertEquals("Failed to construct correct string", "Hello World", s 179 ); 180 } 181 182 /** 183 * @tests java.lang.String#String(java.lang.StringBuffer) 184 */ 185 public void test_ConstructorLjava_lang_StringBuffer() { 186 // Test for method java.lang.String(java.lang.StringBuffer) 187 StringBuffer sb = new StringBuffer(); 188 sb.append("HelloWorld"); 189 assertEquals("Created incorrect string", "HelloWorld", new String(sb) 190 ); 191 } 192 193 /** 194 * @tests java.lang.String#charAt(int) 195 */ 196 public void test_charAtI() { 197 // Test for method char java.lang.String.charAt(int) 198 assertTrue("Incorrect character returned", hw1.charAt(5) == 'W' 199 && (hw1.charAt(1) != 'Z')); 200 } 201 202 /** 203 * @tests java.lang.String#compareTo(java.lang.String) 204 */ 205 public void test_compareToLjava_lang_String() { 206 // Test for method int java.lang.String.compareTo(java.lang.String) 207 assertTrue("Returned incorrect value for first < second", "aaaaab" 208 .compareTo("aaaaac") < 0); 209 assertEquals("Returned incorrect value for first = second", 0, "aaaaac" 210 .compareTo("aaaaac")); 211 assertTrue("Returned incorrect value for first > second", "aaaaac" 212 .compareTo("aaaaab") > 0); 213 assertTrue("Considered case to not be of importance", !("A" 214 .compareTo("a") == 0)); 215 216 try { 217 "fixture".compareTo(null); 218 fail("No NPE"); 219 } catch (NullPointerException e) { 220 } 221 } 222 223 /** 224 * @tests java.lang.String#compareToIgnoreCase(java.lang.String) 225 */ 226 public void test_compareToIgnoreCaseLjava_lang_String() { 227 // Test for method int 228 // java.lang.String.compareToIgnoreCase(java.lang.String) 229 assertTrue("Returned incorrect value for first < second", "aaaaab" 230 .compareToIgnoreCase("aaaaac") < 0); 231 assertEquals("Returned incorrect value for first = second", 0, "aaaaac" 232 .compareToIgnoreCase("aaaaac")); 233 assertTrue("Returned incorrect value for first > second", "aaaaac" 234 .compareToIgnoreCase("aaaaab") > 0); 235 assertEquals("Considered case to not be of importance", 0, "A" 236 .compareToIgnoreCase("a")); 237 238 assertTrue("0xbf should not compare = to 'ss'", "\u00df" 239 .compareToIgnoreCase("ss") != 0); 240 assertEquals("0x130 should compare = to 'i'", 0, "\u0130" 241 .compareToIgnoreCase("i")); 242 assertEquals("0x131 should compare = to 'i'", 0, "\u0131" 243 .compareToIgnoreCase("i")); 244 245 Locale defLocale = Locale.getDefault(); 246 try { 247 Locale.setDefault(new Locale("tr", "")); 248 assertEquals("Locale tr: 0x130 should compare = to 'i'", 0, "\u0130" 249 .compareToIgnoreCase("i")); 250 assertEquals("Locale tr: 0x131 should compare = to 'i'", 0, "\u0131" 251 .compareToIgnoreCase("i")); 252 } finally { 253 Locale.setDefault(defLocale); 254 } 255 256 try { 257 "fixture".compareToIgnoreCase(null); 258 fail("No NPE"); 259 } catch (NullPointerException e) { 260 } 261 } 262 263 /** 264 * @tests java.lang.String#concat(java.lang.String) 265 */ 266 public void test_concatLjava_lang_String() { 267 // Test for method java.lang.String 268 // java.lang.String.concat(java.lang.String) 269 assertTrue("Concatenation failed to produce correct string", hello1 270 .concat(world1).equals(hw1)); 271 boolean exception = false; 272 try { 273 String a = new String("test"); 274 String b = null; 275 a.concat(b); 276 } catch (NullPointerException e) { 277 exception = true; 278 } 279 assertTrue("Concatenation failed to throw NP exception (1)", exception); 280 exception = false; 281 try { 282 String a = new String(""); 283 String b = null; 284 a.concat(b); 285 } catch (NullPointerException e) { 286 exception = true; 287 } 288 assertTrue("Concatenation failed to throw NP exception (2)", exception); 289 290 String s1 = ""; 291 String s2 = "s2"; 292 String s3 = s1.concat(s2); 293 assertEquals(s2, s3); 294 295 s3 = s2.concat(s1); 296 assertSame(s2, s3); 297 } 298 299 /** 300 * @tests java.lang.String#copyValueOf(char[]) 301 */ 302 public void test_copyValueOf$C() { 303 // Test for method java.lang.String java.lang.String.copyValueOf(char 304 // []) 305 char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' }; 306 assertEquals("copyValueOf returned incorrect String", "HelloWorld", String.copyValueOf( 307 t)); 308 } 309 310 /** 311 * @tests java.lang.String#copyValueOf(char[], int, int) 312 */ 313 public void test_copyValueOf$CII() { 314 // Test for method java.lang.String java.lang.String.copyValueOf(char 315 // [], int, int) 316 char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' }; 317 assertEquals("copyValueOf returned incorrect String", "World", String.copyValueOf( 318 t, 5, 5)); 319 } 320 321 /** 322 * @tests java.lang.String#endsWith(java.lang.String) 323 */ 324 public void test_endsWithLjava_lang_String() { 325 // Test for method boolean java.lang.String.endsWith(java.lang.String) 326 assertTrue("Failed to fine ending string", hw1.endsWith("ld")); 327 } 328 329 /** 330 * @tests java.lang.String#equals(java.lang.Object) 331 */ 332 public void test_equalsLjava_lang_Object() { 333 // Test for method boolean java.lang.String.equals(java.lang.Object) 334 assertTrue("String not equal", hw1.equals(hw2) && !(hw1.equals(comp11))); 335 } 336 337 /** 338 * @tests java.lang.String#equalsIgnoreCase(java.lang.String) 339 */ 340 public void test_equalsIgnoreCaseLjava_lang_String() { 341 // Test for method boolean 342 // java.lang.String.equalsIgnoreCase(java.lang.String) 343 assertTrue("lc version returned unequal to uc", hwlc 344 .equalsIgnoreCase(hwuc)); 345 } 346 347 /** 348 * @tests java.lang.String#getBytes() 349 */ 350 public void test_getBytes() { 351 // Test for method byte [] java.lang.String.getBytes() 352 byte[] sbytes = hw1.getBytes(); 353 for (int i = 0; i < hw1.length(); i++) 354 assertTrue("Returned incorrect bytes", sbytes[i] == (byte) hw1 355 .charAt(i)); 356 357 char[] chars = new char[1]; 358 for (int i = 0; i < 65536; i++) { 359 // skip surrogates 360 if (i == 0xd800) 361 i = 0xe000; 362 byte[] result = null; 363 chars[0] = (char) i; 364 String string = new String(chars); 365 try { 366 result = string.getBytes("8859_1"); 367 if (i < 256) { 368 assertEquals((byte)i, result[0]); 369 } else { 370 /* 371 * Substitue character should be 0x1A [1], but may be 372 * '?' character. 373 * [1] http://en.wikipedia.org/wiki/Substitute_character 374 */ 375 assertTrue(result[0] == '?' || result[0] == 0x1a); 376 } 377 } catch (java.io.UnsupportedEncodingException e) { 378 } 379 try { 380 result = string.getBytes("UTF8"); 381 int length = i < 0x80 ? 1 : (i < 0x800 ? 2 : 3); 382 assertTrue("Wrong length UTF8: " + Integer.toHexString(i), 383 result.length == length); 384 assertTrue( 385 "Wrong bytes UTF8: " + Integer.toHexString(i), 386 (i < 0x80 && result[0] == i) 387 || (i >= 0x80 388 && i < 0x800 389 && result[0] == (byte) (0xc0 | ((i & 0x7c0) >> 6)) && result[1] == (byte) (0x80 | (i & 0x3f))) 390 || (i >= 0x800 391 && result[0] == (byte) (0xe0 | (i >> 12)) 392 && result[1] == (byte) (0x80 | ((i & 0xfc0) >> 6)) && result[2] == (byte) (0x80 | (i & 0x3f)))); 393 } catch (java.io.UnsupportedEncodingException e) { 394 } 395 396 String bytes = null; 397 try { 398 bytes = new String(result, "UTF8"); 399 assertTrue("Wrong UTF8 byte length: " + bytes.length() + "(" 400 + i + ")", bytes.length() == 1); 401 assertTrue( 402 "Wrong char UTF8: " 403 + Integer.toHexString(bytes.charAt(0)) + " (" 404 + i + ")", bytes.charAt(0) == i); 405 } catch (java.io.UnsupportedEncodingException e) { 406 } 407 } 408 409 byte[] bytes = new byte[1]; 410 for (int i = 0; i < 256; i++) { 411 bytes[0] = (byte) i; 412 String result = null; 413 try { 414 result = new String(bytes, "8859_1"); 415 assertEquals("Wrong char length", 1, result.length()); 416 assertTrue("Wrong char value", result.charAt(0) == (char) i); 417 } catch (java.io.UnsupportedEncodingException e) { 418 } 419 } 420 } 421 422 /** 423 * @tests java.lang.String#getBytes(int, int, byte[], int) 424 */ 425 @SuppressWarnings("deprecation") 426 public void test_getBytesII$BI() { 427 // Test for method void java.lang.String.getBytes(int, int, byte [], 428 // int) 429 byte[] buf = new byte[5]; 430 "Hello World".getBytes(6, 11, buf, 0); 431 assertEquals("Returned incorrect bytes", "World", new String(buf)); 432 433 try { 434 "Hello World".getBytes(-1, 1, null, 0); 435 fail("Expected StringIndexOutOfBoundsException"); 436 } catch (StringIndexOutOfBoundsException e) { 437 } catch (NullPointerException e) { 438 fail("Threw wrong exception"); 439 } 440 } 441 442 /** 443 * @tests java.lang.String#getBytes(java.lang.String) 444 */ 445 public void test_getBytesLjava_lang_String() throws Exception { 446 // Test for method byte [] java.lang.String.getBytes(java.lang.String) 447 byte[] buf = "Hello World".getBytes(); 448 assertEquals("Returned incorrect bytes", "Hello World", new String(buf)); 449 450 try { 451 "string".getBytes("8849_1"); 452 fail("No UnsupportedEncodingException"); 453 } catch (UnsupportedEncodingException e) { 454 } 455 456 byte[] bytes = "\u3048".getBytes("UTF-8"); 457 byte[] expected = new byte[] {(byte)0xE3, (byte)0x81, (byte)0x88}; 458 assertEquals(expected[0], bytes[0]); 459 assertEquals(expected[1], bytes[1]); 460 assertEquals(expected[2], bytes[2]); 461 462 // Regression for HARMONY-663 463 try { 464 // BEGIN android-changed 465 // (replaced non-ASCII-printable characters with escapes) 466 "string".getBytes( 467 "?Q?D??_??_6ffa?+vG?_??\u00ef\u00bf\u00bd??\u0015"); 468 // END android-changed 469 fail("No UnsupportedEncodingException"); 470 } catch (UnsupportedEncodingException e) { 471 //expected 472 } 473 } 474 475 /** 476 * @tests java.lang.String#getChars(int, int, char[], int) 477 */ 478 public void test_getCharsII$CI() { 479 // Test for method void java.lang.String.getChars(int, int, char [], 480 // int) 481 hw1.getChars(5, hw1.length(), rbuf, 0); 482 483 for (int i = 0; i < rbuf.length; i++) 484 assertTrue("getChars returned incorrect char(s)", rbuf[i] == buf[i]); 485 } 486 487 /** 488 * @tests java.lang.String#hashCode() 489 */ 490 public void test_hashCode() { 491 // Test for method int java.lang.String.hashCode() 492 int hwHashCode = 0; 493 final int hwLength = hw1.length(); 494 int powerOfThirtyOne = 1; 495 for (int counter = hwLength - 1; counter >= 0; counter--) { 496 hwHashCode += hw1.charAt(counter) * powerOfThirtyOne; 497 powerOfThirtyOne *= 31; 498 } 499 assertTrue("String did not hash to correct value--got: " 500 + String.valueOf(hw1.hashCode()) + " but wanted: " 501 + String.valueOf(hwHashCode), hw1.hashCode() == hwHashCode); 502 assertTrue("The empty string \"\" did not hash to zero", 0 == "" 503 .hashCode()); 504 } 505 506 /** 507 * @tests java.lang.String#indexOf(int) 508 */ 509 public void test_indexOfI() { 510 // Test for method int java.lang.String.indexOf(int) 511 assertEquals("Invalid index returned", 1, hw1.indexOf('e')); 512 513 } 514 515 /** 516 * @tests java.lang.String#indexOf(int, int) 517 */ 518 public void test_indexOfII() { 519 // Test for method int java.lang.String.indexOf(int, int) 520 assertEquals("Invalid character index returned", 5, hw1.indexOf('W', 2)); 521 522 } 523 524 /** 525 * @tests java.lang.String#indexOf(java.lang.String) 526 */ 527 public void test_indexOfLjava_lang_String() { 528 // Test for method int java.lang.String.indexOf(java.lang.String) 529 assertTrue("Failed to find string", hw1.indexOf("World") > 0); 530 assertTrue("Failed to find string", !(hw1.indexOf("ZZ") > 0)); 531 } 532 533 /** 534 * @tests java.lang.String#indexOf(java.lang.String, int) 535 */ 536 public void test_indexOfLjava_lang_StringI() { 537 // Test for method int java.lang.String.indexOf(java.lang.String, int) 538 assertTrue("Failed to find string", hw1.indexOf("World", 0) > 0); 539 assertTrue("Found string outside index", !(hw1.indexOf("Hello", 6) > 0)); 540 assertEquals("Did not accept valid negative starting position", 0, hello1 541 .indexOf("", -5)); 542 assertEquals("Reported wrong error code", 5, hello1.indexOf("", 5)); 543 assertEquals("Wrong for empty in empty", 0, "".indexOf("", 0)); 544 } 545 546 /** 547 * @tests java.lang.String#intern() 548 */ 549 public void test_intern() { 550 // Test for method java.lang.String java.lang.String.intern() 551 assertTrue("Intern returned incorrect result", hw1.intern() == hw2 552 .intern()); 553 } 554 555 /** 556 * @tests java.lang.String#lastIndexOf(int) 557 */ 558 public void test_lastIndexOfI() { 559 // Test for method int java.lang.String.lastIndexOf(int) 560 assertEquals("Failed to return correct index", 5, hw1.lastIndexOf('W')); 561 assertEquals("Returned index for non-existent char", 562 -1, hw1.lastIndexOf('Z')); 563 564 } 565 566 /** 567 * @tests java.lang.String#lastIndexOf(int, int) 568 */ 569 public void test_lastIndexOfII() { 570 // Test for method int java.lang.String.lastIndexOf(int, int) 571 assertEquals("Failed to return correct index", 572 5, hw1.lastIndexOf('W', 6)); 573 assertEquals("Returned index for char out of specified range", -1, hw1 574 .lastIndexOf('W', 4)); 575 assertEquals("Returned index for non-existent char", -1, hw1.lastIndexOf('Z', 576 9)); 577 578 } 579 580 /** 581 * @tests java.lang.String#lastIndexOf(java.lang.String) 582 */ 583 public void test_lastIndexOfLjava_lang_String() { 584 // Test for method int java.lang.String.lastIndexOf(java.lang.String) 585 assertEquals("Returned incorrect index", 5, hw1.lastIndexOf("World")); 586 assertEquals("Found String outside of index", -1, hw1 587 .lastIndexOf("HeKKKKKKKK")); 588 } 589 590 /** 591 * @tests java.lang.String#lastIndexOf(java.lang.String, int) 592 */ 593 public void test_lastIndexOfLjava_lang_StringI() { 594 // Test for method int java.lang.String.lastIndexOf(java.lang.String, 595 // int) 596 assertEquals("Returned incorrect index", 5, hw1.lastIndexOf("World", 9)); 597 int result = hw1.lastIndexOf("Hello", 2); 598 assertTrue("Found String outside of index: " + result, result == 0); 599 assertEquals("Reported wrong error code", 600 -1, hello1.lastIndexOf("", -5)); 601 assertEquals("Did not accept valid large starting position", 5, hello1 602 .lastIndexOf("", 5)); 603 } 604 605 /** 606 * @tests java.lang.String#length() 607 */ 608 public void test_length() { 609 // Test for method int java.lang.String.length() 610 assertEquals("Invalid length returned", 11, comp11.length()); 611 } 612 613 /** 614 * @tests java.lang.String#regionMatches(int, java.lang.String, int, int) 615 */ 616 public void test_regionMatchesILjava_lang_StringII() { 617 // Test for method boolean java.lang.String.regionMatches(int, 618 // java.lang.String, int, int) 619 String bogusString = "xxcedkedkleiorem lvvwr e''' 3r3r 23r"; 620 621 assertTrue("identical regions failed comparison", hw1.regionMatches(2, 622 hw2, 2, 5)); 623 assertTrue("Different regions returned true", !hw1.regionMatches(2, 624 bogusString, 2, 5)); 625 } 626 627 /** 628 * @tests java.lang.String#regionMatches(boolean, int, java.lang.String, 629 * int, int) 630 */ 631 public void test_regionMatchesZILjava_lang_StringII() { 632 // Test for method boolean java.lang.String.regionMatches(boolean, int, 633 // java.lang.String, int, int) 634 635 String bogusString = "xxcedkedkleiorem lvvwr e''' 3r3r 23r"; 636 637 assertTrue("identical regions failed comparison", hw1.regionMatches( 638 false, 2, hw2, 2, 5)); 639 assertTrue("identical regions failed comparison with different cases", 640 hw1.regionMatches(true, 2, hw2, 2, 5)); 641 assertTrue("Different regions returned true", !hw1.regionMatches(true, 642 2, bogusString, 2, 5)); 643 assertTrue("identical regions failed comparison with different cases", 644 hw1.regionMatches(false, 2, hw2, 2, 5)); 645 } 646 647 /** 648 * @tests java.lang.String#replace(char, char) 649 */ 650 public void test_replaceCC() { 651 // Test for method java.lang.String java.lang.String.replace(char, char) 652 assertEquals("Failed replace", "HezzoWorzd", hw1.replace('l', 'z')); 653 } 654 655 /** 656 * @tests java.lang.String#replace(CharSequence, CharSequence) 657 */ 658 public void test_replaceLjava_langCharSequenceLjava_langCharSequence() { 659 assertEquals("Failed replace", "aaccdd", "aabbdd".replace( 660 new StringBuffer("bb"), "cc")); 661 assertEquals("Failed replace by bigger seq", "cccbccc", "aba".replace( 662 "a", "ccc")); 663 assertEquals("Failed replace by smaller seq", "$bba^", 664 "$aaaaa^".replace(new StringBuilder("aa"), "b")); 665 } 666 667 /** 668 * @tests java.lang.String#startsWith(java.lang.String) 669 */ 670 public void test_startsWithLjava_lang_String() { 671 // Test for method boolean java.lang.String.startsWith(java.lang.String) 672 assertTrue("Failed to find string", hw1.startsWith("Hello")); 673 assertTrue("Found incorrect string", !hw1.startsWith("T")); 674 } 675 676 /** 677 * @tests java.lang.String#startsWith(java.lang.String, int) 678 */ 679 public void test_startsWithLjava_lang_StringI() { 680 // Test for method boolean java.lang.String.startsWith(java.lang.String, 681 // int) 682 assertTrue("Failed to find string", hw1.startsWith("World", 5)); 683 assertTrue("Found incorrect string", !hw1.startsWith("Hello", 5)); 684 } 685 686 /** 687 * @tests java.lang.String#substring(int) 688 */ 689 public void test_substringI() { 690 // Test for method java.lang.String java.lang.String.substring(int) 691 assertEquals("Incorrect substring returned", 692 "World", hw1.substring(5)); 693 assertTrue("not identical", hw1.substring(0) == hw1); 694 } 695 696 /** 697 * @tests java.lang.String#substring(int, int) 698 */ 699 public void test_substringII() { 700 // Test for method java.lang.String java.lang.String.substring(int, int) 701 assertTrue("Incorrect substring returned", hw1.substring(0, 5).equals( 702 "Hello") 703 && (hw1.substring(5, 10).equals("World"))); 704 assertTrue("not identical", hw1.substring(0, hw1.length()) == hw1); 705 } 706 707 /** 708 * @tests java.lang.String#toCharArray() 709 */ 710 public void test_toCharArray() { 711 // Test for method char [] java.lang.String.toCharArray() 712 713 String s = new String(buf, 0, buf.length); 714 char[] schars = s.toCharArray(); 715 for (int i = 0; i < s.length(); i++) 716 assertTrue("Returned incorrect char aray", buf[i] == schars[i]); 717 } 718 719 /** 720 * @tests java.lang.String#toLowerCase() 721 */ 722 public void test_toLowerCase() { 723 // Test for method java.lang.String java.lang.String.toLowerCase() 724 assertTrue("toLowerCase case conversion did not succeed", hwuc 725 .toLowerCase().equals(hwlc)); 726 727 assertEquals("a) Sigma has same lower case value at end of word with Unicode 3.0", 728 "\u03c3", "\u03a3".toLowerCase()); 729 assertEquals("b) Sigma has same lower case value at end of word with Unicode 3.0", 730 "a \u03c3", "a \u03a3".toLowerCase()); 731 } 732 733 /** 734 * @tests java.lang.String#toLowerCase(java.util.Locale) 735 */ 736 public void test_toLowerCaseLjava_util_Locale() { 737 // Test for method java.lang.String 738 // java.lang.String.toLowerCase(java.util.Locale) 739 assertTrue("toLowerCase case conversion did not succeed", hwuc 740 .toLowerCase(java.util.Locale.getDefault()).equals(hwlc)); 741 assertEquals("Invalid \\u0049 for English", "\u0069", "\u0049".toLowerCase( 742 Locale.ENGLISH)); 743 assertEquals("Invalid \\u0049 for Turkish", "\u0131", "\u0049".toLowerCase( 744 new Locale("tr", ""))); 745 } 746 747 /** 748 * @tests java.lang.String#toString() 749 */ 750 public void test_toString() { 751 // Test for method java.lang.String java.lang.String.toString() 752 assertTrue("Incorrect string returned", hw1.toString().equals(hw1)); 753 } 754 755 /** 756 * @tests java.lang.String#toUpperCase() 757 */ 758 public void test_toUpperCase() { 759 // Test for method java.lang.String java.lang.String.toUpperCase() 760 assertTrue("Returned string is not UpperCase", hwlc.toUpperCase() 761 .equals(hwuc)); 762 763 assertEquals("Wrong conversion", "SS", "\u00df".toUpperCase()); 764 765 String s = "a\u00df\u1f56"; 766 assertTrue("Invalid conversion", !s.toUpperCase().equals(s)); 767 768 } 769 770 /** 771 * @tests java.lang.String#toUpperCase(java.util.Locale) 772 */ 773 public void test_toUpperCaseLjava_util_Locale() { 774 // Test for method java.lang.String 775 // java.lang.String.toUpperCase(java.util.Locale) 776 assertTrue("Returned string is not UpperCase", hwlc.toUpperCase() 777 .equals(hwuc)); 778 assertEquals("Invalid \\u0069 for English", "\u0049", "\u0069".toUpperCase( 779 Locale.ENGLISH)); 780 assertEquals("Invalid \\u0069 for Turkish", "\u0130", "\u0069".toUpperCase( 781 new Locale("tr", ""))); 782 } 783 784 /** 785 * @tests java.lang.String#toUpperCase(java.util.Locale) 786 */ 787 public void test_toUpperCaseLjava_util_Locale_subtest0() { 788 // Test for method java.lang.String 789 // java.lang.String.toUpperCase(java.util.Locale) 790 } 791 792 /** 793 * @tests java.lang.String#trim() 794 */ 795 public void test_trim() { 796 // Test for method java.lang.String java.lang.String.trim() 797 assertTrue("Incorrect string returned", " HelloWorld ".trim().equals( 798 hw1)); 799 } 800 801 /** 802 * @tests java.lang.String#valueOf(char[]) 803 */ 804 public void test_valueOf$C() { 805 // Test for method java.lang.String java.lang.String.valueOf(char []) 806 assertEquals("Returned incorrect String", 807 "World", String.valueOf(buf)); 808 } 809 810 /** 811 * @tests java.lang.String#valueOf(char[], int, int) 812 */ 813 public void test_valueOf$CII() { 814 // Test for method java.lang.String java.lang.String.valueOf(char [], 815 // int, int) 816 char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' }; 817 assertEquals("copyValueOf returned incorrect String", "World", String.valueOf(t, 818 5, 5)); 819 } 820 821 /** 822 * @tests java.lang.String#valueOf(char) 823 */ 824 public void test_valueOfC() { 825 // Test for method java.lang.String java.lang.String.valueOf(char) 826 for (int i = 0; i < 65536; i++) 827 assertTrue("Incorrect valueOf(char) returned: " + i, String 828 .valueOf((char) i).charAt(0) == (char) i); 829 } 830 831 /** 832 * @tests java.lang.String#valueOf(double) 833 */ 834 public void test_valueOfD() { 835 // Test for method java.lang.String java.lang.String.valueOf(double) 836 assertEquals("Incorrect double string returned", "1.7976931348623157E308", String.valueOf( 837 Double.MAX_VALUE)); 838 } 839 840 /** 841 * @tests java.lang.String#valueOf(float) 842 */ 843 public void test_valueOfF() { 844 // Test for method java.lang.String java.lang.String.valueOf(float) 845 assertTrue("incorrect float string returned--got: " 846 + String.valueOf(1.0F) + " wanted: 1.0", String.valueOf(1.0F) 847 .equals("1.0")); 848 assertTrue("incorrect float string returned--got: " 849 + String.valueOf(0.9F) + " wanted: 0.9", String.valueOf(0.9F) 850 .equals("0.9")); 851 assertTrue("incorrect float string returned--got: " 852 + String.valueOf(109.567F) + " wanted: 109.567", String 853 .valueOf(109.567F).equals("109.567")); 854 } 855 856 /** 857 * @tests java.lang.String#valueOf(int) 858 */ 859 public void test_valueOfI() { 860 // Test for method java.lang.String java.lang.String.valueOf(int) 861 assertEquals("returned invalid int string", "1", String.valueOf(1)); 862 } 863 864 /** 865 * @tests java.lang.String#valueOf(long) 866 */ 867 public void test_valueOfJ() { 868 // Test for method java.lang.String java.lang.String.valueOf(long) 869 assertEquals("returned incorrect long string", "927654321098", String.valueOf( 870 927654321098L)); 871 } 872 873 /** 874 * @tests java.lang.String#valueOf(java.lang.Object) 875 */ 876 public void test_valueOfLjava_lang_Object() { 877 // Test for method java.lang.String 878 // java.lang.String.valueOf(java.lang.Object) 879 assertTrue("Incorrect Object string returned", obj.toString().equals( 880 String.valueOf(obj))); 881 } 882 883 /** 884 * @tests java.lang.String#valueOf(boolean) 885 */ 886 public void test_valueOfZ() { 887 // Test for method java.lang.String java.lang.String.valueOf(boolean) 888 assertTrue("Incorrect boolean string returned", String.valueOf(false) 889 .equals("false") 890 && (String.valueOf(true).equals("true"))); 891 } 892 893 /** 894 * @tests java.lang.String#contentEquals(CharSequence cs) 895 */ 896 public void test_contentEqualsLjava_lang_CharSequence() { 897 // Test for method java.lang.String java.lang.String.contentEquals(CharSequence cs) 898 assertFalse("Incorrect result of compare", "qwerty".contentEquals("")); 899 } 900 901 /** 902 * @tests java.lang.String#format(Locale, String, Object[]) 903 */ 904 @SuppressWarnings("boxing") 905 public void test_format() { 906 assertEquals("13% of sum is 0x11", 907 String.format("%d%% of %s is 0x%x", 13, "sum", 17)); 908 assertEquals("empty format", "", String.format("", 123, this)); 909 try { 910 String.format(null); 911 fail("NPE is expected on null format"); 912 } catch (NullPointerException ok){} 913 } 914 915 /** 916 * @tests java.lang.String#format(Locale, String, Object...) 917 */ 918 @SuppressWarnings("boxing") 919 public void test_format_Locale() { 920 Locale l = new Locale("UK"); 921 assertEquals("13% of sum is 0x11", 922 String.format(l, "%d%% of %s is 0x%x", 13, "sum", 17)); 923 assertEquals("empty format", "", String.format("", 123, this)); 924 try { 925 String.format(null); 926 fail("NPE is expected on null format"); 927 } catch (NullPointerException ok){} 928 } 929} 930