StringBuffer2Test.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 20public class StringBuffer2Test extends junit.framework.TestCase { 21 22 StringBuffer testBuffer; 23 24 /** 25 * @tests java.lang.StringBuffer#StringBuffer() 26 */ 27 public void test_Constructor() { 28 // Test for method java.lang.StringBuffer() 29 new StringBuffer(); 30 assertTrue("Invalid buffer created", true); 31 } 32 33 /** 34 * @tests java.lang.StringBuffer#StringBuffer(int) 35 */ 36 public void test_ConstructorI() { 37 // Test for method java.lang.StringBuffer(int) 38 StringBuffer sb = new StringBuffer(8); 39 assertEquals("Newly constructed buffer is of incorrect length", 0, sb 40 .length()); 41 } 42 43 /** 44 * @tests java.lang.StringBuffer#StringBuffer(java.lang.String) 45 */ 46 public void test_ConstructorLjava_lang_String() { 47 // Test for method java.lang.StringBuffer(java.lang.String) 48 49 StringBuffer sb = new StringBuffer("HelloWorld"); 50 51 assertTrue("Invalid buffer created", sb.length() == 10 52 && (sb.toString().equals("HelloWorld"))); 53 54 boolean pass = false; 55 try { 56 new StringBuffer(null); 57 } catch (NullPointerException e) { 58 pass = true; 59 } 60 assertTrue("Should throw NullPointerException", pass); 61 } 62 63 /** 64 * @tests java.lang.StringBuffer#append(char[]) 65 */ 66 public void test_append$C() { 67 // Test for method java.lang.StringBuffer 68 // java.lang.StringBuffer.append(char []) 69 char buf[] = new char[4]; 70 "char".getChars(0, 4, buf, 0); 71 testBuffer.append(buf); 72 assertEquals("Append of char[] failed", 73 "This is a test bufferchar", testBuffer.toString()); 74 } 75 76 /** 77 * @tests java.lang.StringBuffer#append(char[], int, int) 78 */ 79 public void test_append$CII() { 80 // Test for method java.lang.StringBuffer 81 // java.lang.StringBuffer.append(char [], int, int) 82 StringBuffer sb = new StringBuffer(); 83 char[] buf1 = { 'H', 'e', 'l', 'l', 'o' }; 84 char[] buf2 = { 'W', 'o', 'r', 'l', 'd' }; 85 sb.append(buf1, 0, buf1.length); 86 assertEquals("Buffer is invalid length after append", 5, sb.length()); 87 sb.append(buf2, 0, buf2.length); 88 assertEquals("Buffer is invalid length after append", 10, sb.length()); 89 assertTrue("Buffer contains invalid chars", (sb.toString() 90 .equals("HelloWorld"))); 91 } 92 93 /** 94 * @tests java.lang.StringBuffer#append(char) 95 */ 96 public void test_appendC() { 97 // Test for method java.lang.StringBuffer 98 // java.lang.StringBuffer.append(char) 99 StringBuffer sb = new StringBuffer(); 100 char buf1 = 'H'; 101 char buf2 = 'W'; 102 sb.append(buf1); 103 assertEquals("Buffer is invalid length after append", 1, sb.length()); 104 sb.append(buf2); 105 assertEquals("Buffer is invalid length after append", 2, sb.length()); 106 assertTrue("Buffer contains invalid chars", 107 (sb.toString().equals("HW"))); 108 } 109 110 /** 111 * @tests java.lang.StringBuffer#append(double) 112 */ 113 public void test_appendD() { 114 // Test for method java.lang.StringBuffer 115 // java.lang.StringBuffer.append(double) 116 StringBuffer sb = new StringBuffer(); 117 sb.append(Double.MAX_VALUE); 118 assertEquals("Buffer is invalid length after append", 22, sb.length()); 119 assertEquals("Buffer contains invalid characters", 120 "1.7976931348623157E308", sb.toString()); 121 } 122 123 /** 124 * @tests java.lang.StringBuffer#append(float) 125 */ 126 public void test_appendF() { 127 // Test for method java.lang.StringBuffer 128 // java.lang.StringBuffer.append(float) 129 StringBuffer sb = new StringBuffer(); 130 final float floatNum = 900.87654F; 131 sb.append(floatNum); 132 assertTrue("Buffer is invalid length after append: " + sb.length(), sb 133 .length() == String.valueOf(floatNum).length()); 134 assertTrue("Buffer contains invalid characters", sb.toString().equals( 135 String.valueOf(floatNum))); 136 } 137 138 /** 139 * @tests java.lang.StringBuffer#append(int) 140 */ 141 public void test_appendI() { 142 // Test for method java.lang.StringBuffer 143 // java.lang.StringBuffer.append(int) 144 StringBuffer sb = new StringBuffer(); 145 sb.append(9000); 146 assertEquals("Buffer is invalid length after append", 4, sb.length()); 147 sb.append(1000); 148 assertEquals("Buffer is invalid length after append", 8, sb.length()); 149 assertEquals("Buffer contains invalid characters", 150 "90001000", sb.toString()); 151 } 152 153 /** 154 * @tests java.lang.StringBuffer#append(long) 155 */ 156 public void test_appendJ() { 157 // Test for method java.lang.StringBuffer 158 // java.lang.StringBuffer.append(long) 159 160 StringBuffer sb = new StringBuffer(); 161 long t = 927654321098L; 162 sb.append(t); 163 assertEquals("Buffer is of invlaid length", 12, sb.length()); 164 assertEquals("Buffer contains invalid characters", 165 "927654321098", sb.toString()); 166 } 167 168 /** 169 * @tests java.lang.StringBuffer#append(java.lang.Object) 170 */ 171 public void test_appendLjava_lang_Object() { 172 // Test for method java.lang.StringBuffer 173 // java.lang.StringBuffer.append(java.lang.Object) 174 StringBuffer sb = new StringBuffer(); 175 Object obj1 = new Object(); 176 Object obj2 = new Object(); 177 sb.append(obj1); 178 sb.append(obj2); 179 assertTrue("Buffer contains invalid characters", sb.toString().equals( 180 obj1.toString() + obj2.toString())); 181 } 182 183 /** 184 * @tests java.lang.StringBuffer#append(java.lang.String) 185 */ 186 public void test_appendLjava_lang_String() { 187 // Test for method java.lang.StringBuffer 188 // java.lang.StringBuffer.append(java.lang.String) 189 StringBuffer sb = new StringBuffer(); 190 String buf1 = "Hello"; 191 String buf2 = "World"; 192 sb.append(buf1); 193 assertEquals("Buffer is invalid length after append", 5, sb.length()); 194 sb.append(buf2); 195 assertEquals("Buffer is invalid length after append", 10, sb.length()); 196 assertTrue("Buffer contains invalid chars", (sb.toString() 197 .equals("HelloWorld"))); 198 } 199 200 /** 201 * @tests java.lang.StringBuffer#append(boolean) 202 */ 203 public void test_appendZ() { 204 // Test for method java.lang.StringBuffer 205 // java.lang.StringBuffer.append(boolean) 206 StringBuffer sb = new StringBuffer(); 207 sb.append(false); 208 assertEquals("Buffer is invalid length after append", 5, sb.length()); 209 sb.append(true); 210 assertEquals("Buffer is invalid length after append", 9, sb.length()); 211 assertTrue("Buffer is invalid length after append", (sb.toString() 212 .equals("falsetrue"))); 213 } 214 215 /** 216 * @tests java.lang.StringBuffer#capacity() 217 */ 218 public void test_capacity() { 219 // Test for method int java.lang.StringBuffer.capacity() 220 StringBuffer sb = new StringBuffer(10); 221 assertEquals("Returned incorrect capacity", 10, sb.capacity()); 222 sb.ensureCapacity(100); 223 assertTrue("Returned incorrect capacity", sb.capacity() >= 100); 224 } 225 226 /** 227 * @tests java.lang.StringBuffer#charAt(int) 228 */ 229 public void test_charAtI() { 230 // Test for method char java.lang.StringBuffer.charAt(int) 231 assertEquals("Returned incorrect char", 's', testBuffer.charAt(3)); 232 233 // Test for StringIndexOutOfBoundsException 234 boolean exception = false; 235 try { 236 testBuffer.charAt(-1); 237 } catch (StringIndexOutOfBoundsException e) { 238 exception = true; 239 } catch (ArrayIndexOutOfBoundsException e) { 240 } 241 assertTrue("Should throw StringIndexOutOfBoundsException", exception); 242 } 243 244 /** 245 * @tests java.lang.StringBuffer#delete(int, int) 246 */ 247 public void test_deleteII() { 248 // Test for method java.lang.StringBuffer 249 // java.lang.StringBuffer.delete(int, int) 250 testBuffer.delete(7, 7); 251 assertEquals("Deleted chars when start == end", "This is a test buffer", testBuffer.toString() 252 ); 253 testBuffer.delete(4, 14); 254 assertEquals("Deleted incorrect chars", 255 "This buffer", testBuffer.toString()); 256 257 testBuffer = new StringBuffer("This is a test buffer"); 258 String sharedStr = testBuffer.toString(); 259 testBuffer.delete(0, testBuffer.length()); 260 assertEquals("Didn't clone shared buffer", "This is a test buffer", sharedStr 261 ); 262 assertTrue("Deleted incorrect chars", testBuffer.toString().equals("")); 263 testBuffer.append("more stuff"); 264 assertEquals("Didn't clone shared buffer 2", "This is a test buffer", sharedStr 265 ); 266 assertEquals("Wrong contents", "more stuff", testBuffer.toString()); 267 try { 268 testBuffer.delete(-5, 2); 269 } catch (IndexOutOfBoundsException e) { 270 } 271 assertEquals("Wrong contents 2", 272 "more stuff", testBuffer.toString()); 273 } 274 275 /** 276 * @tests java.lang.StringBuffer#deleteCharAt(int) 277 */ 278 public void test_deleteCharAtI() { 279 // Test for method java.lang.StringBuffer 280 // java.lang.StringBuffer.deleteCharAt(int) 281 testBuffer.deleteCharAt(3); 282 assertEquals("Deleted incorrect char", 283 "Thi is a test buffer", testBuffer.toString()); 284 } 285 286 /** 287 * @tests java.lang.StringBuffer#ensureCapacity(int) 288 */ 289 public void test_ensureCapacityI() { 290 // Test for method void java.lang.StringBuffer.ensureCapacity(int) 291 StringBuffer sb = new StringBuffer(10); 292 293 sb.ensureCapacity(100); 294 assertTrue("Failed to increase capacity", sb.capacity() >= 100); 295 } 296 297 /** 298 * @tests java.lang.StringBuffer#getChars(int, int, char[], int) 299 */ 300 public void test_getCharsII$CI() { 301 // Test for method void java.lang.StringBuffer.getChars(int, int, char 302 // [], int) 303 304 char[] buf = new char[10]; 305 testBuffer.getChars(4, 8, buf, 2); 306 assertTrue("Returned incorrect chars", new String(buf, 2, 4) 307 .equals(testBuffer.toString().substring(4, 8))); 308 309 boolean exception = false; 310 try { 311 StringBuffer buf2 = new StringBuffer(""); 312 buf2.getChars(0, 0, new char[5], 2); 313 } catch (IndexOutOfBoundsException e) { 314 exception = true; 315 } 316 assertTrue("did not expect IndexOutOfBoundsException", !exception); 317 } 318 319 /** 320 * @tests java.lang.StringBuffer#insert(int, char[]) 321 */ 322 public void test_insertI$C() { 323 // Test for method java.lang.StringBuffer 324 // java.lang.StringBuffer.insert(int, char []) 325 char buf[] = new char[4]; 326 "char".getChars(0, 4, buf, 0); 327 testBuffer.insert(15, buf); 328 assertEquals("Insert test failed", 329 "This is a test charbuffer", testBuffer.toString()); 330 331 boolean exception = false; 332 StringBuffer buf1 = new StringBuffer("abcd"); 333 try { 334 buf1.insert(-1, (char[]) null); 335 } catch (StringIndexOutOfBoundsException e) { 336 exception = true; 337 } catch (NullPointerException e) { 338 } 339 assertTrue("Should throw StringIndexOutOfBoundsException", exception); 340 } 341 342 /** 343 * @tests java.lang.StringBuffer#insert(int, char[], int, int) 344 */ 345 public void test_insertI$CII() { 346 // Test for method java.lang.StringBuffer 347 // java.lang.StringBuffer.insert(int, char [], int, int) 348 char[] c = new char[] { 'n', 'o', 't', ' ' }; 349 testBuffer.insert(8, c, 0, 4); 350 assertEquals("This is not a test buffer", testBuffer.toString()); 351 352 StringBuffer buf1 = new StringBuffer("abcd"); 353 try { 354 buf1.insert(-1, (char[]) null, 0, 0); 355 fail("Should throw StringIndexOutOfBoundsException"); 356 } catch (StringIndexOutOfBoundsException e) { 357 //expected 358 } 359 360 try { 361 testBuffer.insert(testBuffer.length() - 1, c, -1, 1); 362 } catch (StringIndexOutOfBoundsException e) { 363 //expected 364 } 365 366 } 367 368 /** 369 * @tests java.lang.StringBuffer#insert(int, char) 370 */ 371 public void test_insertIC() { 372 // Test for method java.lang.StringBuffer 373 // java.lang.StringBuffer.insert(int, char) 374 testBuffer.insert(15, 'T'); 375 assertEquals("Insert test failed", 376 "This is a test Tbuffer", testBuffer.toString()); 377 } 378 379 /** 380 * @tests java.lang.StringBuffer#insert(int, double) 381 */ 382 public void test_insertID() { 383 // Test for method java.lang.StringBuffer 384 // java.lang.StringBuffer.insert(int, double) 385 testBuffer.insert(15, Double.MAX_VALUE); 386 assertTrue("Insert test failed", testBuffer.toString().equals( 387 "This is a test " + Double.MAX_VALUE + "buffer")); 388 } 389 390 /** 391 * @tests java.lang.StringBuffer#insert(int, float) 392 */ 393 public void test_insertIF() { 394 // Test for method java.lang.StringBuffer 395 // java.lang.StringBuffer.insert(int, float) 396 testBuffer.insert(15, Float.MAX_VALUE); 397 String testBufferString = testBuffer.toString(); 398 String expectedResult = "This is a test " 399 + String.valueOf(Float.MAX_VALUE) + "buffer"; 400 assertTrue("Insert test failed, got: " + "\'" + testBufferString + "\'" 401 + " but wanted: " + "\'" + expectedResult + "\'", 402 testBufferString.equals(expectedResult)); 403 } 404 405 /** 406 * @tests java.lang.StringBuffer#insert(int, int) 407 */ 408 public void test_insertII() { 409 // Test for method java.lang.StringBuffer 410 // java.lang.StringBuffer.insert(int, int) 411 testBuffer.insert(15, 100); 412 assertEquals("Insert test failed", 413 "This is a test 100buffer", testBuffer.toString()); 414 } 415 416 /** 417 * @tests java.lang.StringBuffer#insert(int, long) 418 */ 419 public void test_insertIJ() { 420 // Test for method java.lang.StringBuffer 421 // java.lang.StringBuffer.insert(int, long) 422 testBuffer.insert(15, 88888888888888888L); 423 assertEquals("Insert test failed", 424 "This is a test 88888888888888888buffer", testBuffer.toString()); 425 } 426 427 /** 428 * @tests java.lang.StringBuffer#insert(int, java.lang.Object) 429 */ 430 public void test_insertILjava_lang_Object() { 431 // Test for method java.lang.StringBuffer 432 // java.lang.StringBuffer.insert(int, java.lang.Object) 433 Object obj1 = new Object(); 434 testBuffer.insert(15, obj1); 435 assertTrue("Insert test failed", testBuffer.toString().equals( 436 "This is a test " + obj1.toString() + "buffer")); 437 } 438 439 /** 440 * @tests java.lang.StringBuffer#insert(int, java.lang.String) 441 */ 442 public void test_insertILjava_lang_String() { 443 // Test for method java.lang.StringBuffer 444 // java.lang.StringBuffer.insert(int, java.lang.String) 445 446 testBuffer.insert(15, "STRING "); 447 assertEquals("Insert test failed", 448 "This is a test STRING buffer", testBuffer.toString()); 449 } 450 451 /** 452 * @tests java.lang.StringBuffer#insert(int, boolean) 453 */ 454 public void test_insertIZ() { 455 // Test for method java.lang.StringBuffer 456 // java.lang.StringBuffer.insert(int, boolean) 457 testBuffer.insert(15, true); 458 assertEquals("Insert test failed", 459 "This is a test truebuffer", testBuffer.toString()); 460 } 461 462 /** 463 * @tests java.lang.StringBuffer#length() 464 */ 465 public void test_length() { 466 // Test for method int java.lang.StringBuffer.length() 467 assertEquals("Incorrect length returned", 21, testBuffer.length()); 468 } 469 470 /** 471 * @tests java.lang.StringBuffer#replace(int, int, java.lang.String) 472 */ 473 public void test_replaceIILjava_lang_String() { 474 // Test for method java.lang.StringBuffer 475 // java.lang.StringBuffer.replace(int, int, java.lang.String) 476 testBuffer.replace(5, 9, "is a replaced"); 477 assertTrue("Replace failed, wanted: " + "\'" 478 + "This is a replaced test buffer" + "\'" + " but got: " + "\'" 479 + testBuffer.toString() + "\'", testBuffer.toString().equals( 480 "This is a replaced test buffer")); 481 assertEquals("insert1", "text", new StringBuffer().replace(0, 0, "text") 482 .toString()); 483 assertEquals("insert2", "123text", new StringBuffer("123").replace(3, 3, "text") 484 .toString()); 485 assertEquals("insert2", "1text23", new StringBuffer("123").replace(1, 1, "text") 486 .toString()); 487 } 488 489 private String writeString(String in) { 490 StringBuffer result = new StringBuffer(); 491 result.append("\""); 492 for (int i = 0; i < in.length(); i++) { 493 result.append(" 0x" + Integer.toHexString(in.charAt(i))); 494 } 495 result.append("\""); 496 return result.toString(); 497 } 498 499 private void reverseTest(String id, String org, String rev, String back) { 500 // create non-shared StringBuffer 501 StringBuffer sb = new StringBuffer(org); 502 sb.reverse(); 503 String reversed = sb.toString(); 504 assertTrue("reversed surrogate " + id + ": " + writeString(reversed), 505 reversed.equals(rev)); 506 // create non-shared StringBuffer 507 sb = new StringBuffer(reversed); 508 sb.reverse(); 509 reversed = sb.toString(); 510 assertTrue("reversed surrogate " + id + "a: " + writeString(reversed), 511 reversed.equals(back)); 512 513 // test algorithm when StringBuffer is shared 514 sb = new StringBuffer(org); 515 String copy = sb.toString(); 516 assertEquals(org, copy); 517 sb.reverse(); 518 reversed = sb.toString(); 519 assertTrue("reversed surrogate " + id + ": " + writeString(reversed), 520 reversed.equals(rev)); 521 sb = new StringBuffer(reversed); 522 copy = sb.toString(); 523 assertEquals(rev, copy); 524 sb.reverse(); 525 reversed = sb.toString(); 526 assertTrue("reversed surrogate " + id + "a: " + writeString(reversed), 527 reversed.equals(back)); 528 529 } 530 531 /** 532 * @tests java.lang.StringBuffer#reverse() 533 */ 534 public void test_reverse() { 535 // Test for method java.lang.StringBuffer 536 // java.lang.StringBuffer.reverse() 537 String org; 538 org = "a"; 539 reverseTest("0", org, org, org); 540 541 org = "ab"; 542 reverseTest("1", org, "ba", org); 543 544 org = "abcdef"; 545 reverseTest("2", org, "fedcba", org); 546 547 org = "abcdefg"; 548 reverseTest("3", org, "gfedcba", org); 549 550 } 551 552 /** 553 * @tests java.lang.StringBuffer#setCharAt(int, char) 554 */ 555 public void test_setCharAtIC() { 556 // Test for method void java.lang.StringBuffer.setCharAt(int, char) 557 StringBuffer s = new StringBuffer("HelloWorld"); 558 s.setCharAt(4, 'Z'); 559 assertEquals("Returned incorrect char", 'Z', s.charAt(4)); 560 } 561 562 /** 563 * @tests java.lang.StringBuffer#setLength(int) 564 */ 565 public void test_setLengthI() { 566 // Test for method void java.lang.StringBuffer.setLength(int) 567 testBuffer.setLength(1000); 568 assertEquals("Failed to increase length", 1000, testBuffer.length()); 569 assertTrue("Increase in length trashed buffer", testBuffer.toString() 570 .startsWith("This is a test buffer")); 571 testBuffer.setLength(2); 572 assertEquals("Failed to decrease length", 2, testBuffer.length()); 573 assertEquals("Decrease in length failed", 574 "Th", testBuffer.toString()); 575 } 576 577 /** 578 * @tests java.lang.StringBuffer#substring(int) 579 */ 580 public void test_substringI() { 581 // Test for method java.lang.String 582 // java.lang.StringBuffer.substring(int) 583 assertEquals("Returned incorrect substring", "is a test buffer", testBuffer.substring(5) 584 ); 585 } 586 587 /** 588 * @tests java.lang.StringBuffer#substring(int, int) 589 */ 590 public void test_substringII() { 591 // Test for method java.lang.String 592 // java.lang.StringBuffer.substring(int, int) 593 assertEquals("Returned incorrect substring", "is", testBuffer.substring(5, 7) 594 ); 595 } 596 597 /** 598 * @tests java.lang.StringBuffer#toString() 599 */ 600 public void test_toString() { 601 // Test for method java.lang.String java.lang.StringBuffer.toString() 602 assertEquals("Incorrect string value returned", "This is a test buffer", testBuffer.toString() 603 ); 604 } 605 606 @Override 607 protected void setUp() { 608 testBuffer = new StringBuffer("This is a test buffer"); 609 } 610} 611