Home | History | Annotate | Download | only in lang
      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 
     18 package org.apache.harmony.tests.java.lang;
     19 
     20 public class StringBuffer2Test extends junit.framework.TestCase {
     21 
     22     StringBuffer testBuffer;
     23 
     24     /**
     25      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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();
    356         } catch (NullPointerException expected) {
    357         } catch (StringIndexOutOfBoundsException 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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      * 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