1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* Licensed to the Apache Software Foundation (ASF) under one or more
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements.  See the NOTICE file distributed with
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership.
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License.  You may obtain a copy of the License at
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License.
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
17ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang;
18cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Serializable;
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class StringBufferTest extends TestCase {
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer#setLength(int)
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_setLengthI() {
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-90
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer buffer = new StringBuffer("abcde");
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffer.setLength(-1);
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Assert 0: IndexOutOfBoundsException must be thrown");
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("abcde", buffer.toString());
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(1);
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append('f');
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("af", buffer.toString());
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer = new StringBuffer("abcde");
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("cde", buffer.substring(2));
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(3);
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append('f');
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("abcf", buffer.toString());
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer = new StringBuffer("abcde");
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(2);
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffer.charAt(3);
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IndexOutOfBoundsException");
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer = new StringBuffer();
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("abcdefg");
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(2);
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(5);
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 2; i < 5; i++) {
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, buffer.charAt(i));
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer = new StringBuffer();
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("abcdefg");
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.delete(2, 4);
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(7);
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('a', buffer.charAt(0));
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('b', buffer.charAt(1));
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('e', buffer.charAt(2));
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('f', buffer.charAt(3));
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('g', buffer.charAt(4));
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 5; i < 7; i++) {
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, buffer.charAt(i));
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer = new StringBuffer();
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("abcdefg");
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.replace(2, 5, "z");
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(7);
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 5; i < 7; i++) {
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, buffer.charAt(i));
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer#toString()
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toString() throws Exception {
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer buffer = new StringBuffer();
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("", buffer.toString());
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("abcde");
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("abcde", buffer.toString());
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(1000);
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] bytes = buffer.toString().getBytes("GB18030");
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 5; i < bytes.length; i++) {
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, bytes[i]);
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.setLength(5);
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("fghij");
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("abcdefghij", buffer.toString());
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * StringBuffer.StringBuffer(CharSequence);
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_constructorLjava_lang_CharSequence() {
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new StringBuffer((CharSequence) null);
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Assert 0: NPE must be thrown.");
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Assert 1: must equal 'abc'.", "abc", new StringBuffer((CharSequence) "abc").toString());
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_trimToSize() {
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer buffer = new StringBuffer(25);
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.append("abc");
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int origCapacity = buffer.capacity();
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffer.trimToSize();
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int trimCapacity = buffer.capacity();
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Assert 0: capacity must be smaller.", trimCapacity < origCapacity);
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Assert 1: length must still be 3", 3, buffer.length());
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Assert 2: value must still be 'abc'.", "abc", buffer.toString());
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.append(CharSequence)
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_appendLjava_lang_CharSequence() {
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer();
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "ab"));
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ab", sb.toString());
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "cd"));
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("cd", sb.toString());
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) null));
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null", sb.toString());
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.append(CharSequence, int, int)
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings("cast")
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_appendLjava_lang_CharSequenceII() {
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer();
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "ab", 0, 2));
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ab", sb.toString());
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "cd", 0, 2));
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("cd", sb.toString());
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "abcd", 0, 2));
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ab", sb.toString());
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) "abcd", 2, 4));
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("cd", sb.toString());
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.setLength(0);
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.append((CharSequence) null, 0, 2));
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("nu", sb.toString());
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.append(char[], int, int)
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_append$CII_2() {
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer obj = new StringBuffer();
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            obj.append(new char[0], -1, -1);
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("ArrayIndexOutOfBoundsException expected");
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.append(char[], int, int)
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_append$CII_3() throws Exception {
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer obj = new StringBuffer();
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            obj.append((char[]) null, -1, -1);
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException expected");
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.insert(int, CharSequence)
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_insertILjava_lang_CharSequence() {
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String fixture = "0000";
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer(fixture);
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(0, (CharSequence) "ab"));
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ab0000", sb.toString());
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(2, (CharSequence) "ab"));
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("00ab00", sb.toString());
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(4, (CharSequence) "ab"));
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0000ab", sb.toString());
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(4, (CharSequence) null));
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0000null", sb.toString());
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.length());
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(-1, (CharSequence) "ab");
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, negative index");
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(5, (CharSequence) "ab");
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, index too large index");
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.insert(int, CharSequence, int, int)
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings("cast")
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_insertILjava_lang_CharSequenceII() {
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String fixture = "0000";
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer(fixture);
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(0, (CharSequence) "ab", 0, 2));
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ab0000", sb.toString());
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(0, (CharSequence) "ab", 0, 1));
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("a0000", sb.toString());
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, sb.length());
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(2, (CharSequence) "ab", 0, 2));
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("00ab00", sb.toString());
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(2, (CharSequence) "ab", 0, 1));
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("00a00", sb.toString());
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, sb.length());
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(4, (CharSequence) "ab", 0, 2));
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0000ab", sb.toString());
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(4, (CharSequence) "ab", 0, 1));
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0000a", sb.toString());
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, sb.length());
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer(fixture);
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertSame(sb, sb.insert(4, (CharSequence) null, 0, 2));
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0000nu", sb.toString());
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(6, sb.length());
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(-1, (CharSequence) "ab", 0, 2);
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, negative index");
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(5, (CharSequence) "ab", 0, 2);
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, index too large index");
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(5, (CharSequence) "ab", -1, 2);
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, negative offset");
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(5, new char[] { 'a', 'b' }, 0, -1);
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, negative length");
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb = new StringBuffer(fixture);
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.insert(5, new char[] { 'a', 'b' }, 0, 3);
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("no IOOBE, too long");
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.insert(int, char)
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_insertIC() {
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer obj = new StringBuffer();
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            obj.insert(-1, ' ');
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("ArrayIndexOutOfBoundsException expected");
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.appendCodePoint(int)'
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_appendCodePointI() {
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer();
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.appendCodePoint(0x10000);
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("\uD800\uDC00", sb.toString());
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.append("fixture");
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("\uD800\uDC00fixture", sb.toString());
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb.appendCodePoint(0x00010FFFF);
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("\uD800\uDC00fixture\uDBFF\uDFFF", sb.toString());
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.codePointAt(int)
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_codePointAtI() {
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer("abc");
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('a', sb.codePointAt(0));
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('b', sb.codePointAt(1));
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('c', sb.codePointAt(2));
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer("\uD800\uDC00");
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0x10000, sb.codePointAt(0));
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('\uDC00', sb.codePointAt(1));
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointAt(-1);
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on negative index.");
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointAt(sb.length());
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on index equal to length.");
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointAt(sb.length() + 1);
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on index greater than length.");
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.codePointBefore(int)
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_codePointBeforeI() {
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer("abc");
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('a', sb.codePointBefore(1));
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('b', sb.codePointBefore(2));
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('c', sb.codePointBefore(3));
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        sb = new StringBuffer("\uD800\uDC00");
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0x10000, sb.codePointBefore(2));
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals('\uD800', sb.codePointBefore(1));
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointBefore(0);
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on zero index.");
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointBefore(-1);
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on negative index.");
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointBefore(sb.length() + 1);
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE on index greater than length.");
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.codePointCount(int, int)
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_codePointCountII() {
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, new StringBuffer("\uD800\uDC00").codePointCount(0, 2));
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, new StringBuffer("\uD800\uDC01").codePointCount(0, 2));
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, new StringBuffer("\uD801\uDC01").codePointCount(0, 2));
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, new StringBuffer("\uDBFF\uDFFF").codePointCount(0, 2));
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, new StringBuffer("a\uD800\uDC00b").codePointCount(0, 4));
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, new StringBuffer("a\uD800\uDC00b\uD800").codePointCount(0, 5));
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer("abc");
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointCount(-1, 2);
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for negative begin index.");
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointCount(0, 4);
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for end index that's too large.");
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.codePointCount(3, 2);
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for begin index larger than end index.");
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.getChars(int, int, char[], int)
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getCharsII$CI() {
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer obj = new StringBuffer();
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            obj.getChars(0, 0, new char[0], -1);
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("ArrayIndexOutOfBoundsException expected");
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.lang.StringBuffer.offsetByCodePoints(int, int)'
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_offsetByCodePointsII() {
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int result = new StringBuffer("a\uD800\uDC00b").offsetByCodePoints(0, 2);
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, result);
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("abcd").offsetByCodePoints(3, -1);
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, result);
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("a\uD800\uDC00b").offsetByCodePoints(0, 3);
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, result);
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("a\uD800\uDC00b").offsetByCodePoints(3, -1);
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, result);
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("a\uD800\uDC00b").offsetByCodePoints(3, 0);
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, result);
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("\uD800\uDC00bc").offsetByCodePoints(3, 0);
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, result);
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("a\uDC00bc").offsetByCodePoints(3, -1);
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, result);
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        result = new StringBuffer("a\uD800bc").offsetByCodePoints(3, -1);
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, result);
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer("abc");
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.offsetByCodePoints(-1, 1);
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for negative index.");
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.offsetByCodePoints(0, 4);
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for offset that's too large.");
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.offsetByCodePoints(3, -4);
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for offset that's too small.");
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.offsetByCodePoints(3, 1);
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for index that's too large.");
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.offsetByCodePoints(4, -1);
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("No IOOBE for index that's too large.");
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException e) {
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.lang.StringBuffer#indexOf(String, int)}
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings("nls")
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_IndexOfStringInt() {
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String fixture = "0123456789";
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer(fixture);
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.indexOf("0"));
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.indexOf("012"));
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.indexOf("02"));
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.indexOf("89"));
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.indexOf("0"), 0);
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.indexOf("012"), 0);
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.indexOf("02"), 0);
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.indexOf("89"), 0);
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.indexOf("0"), 5);
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.indexOf("012"), 5);
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.indexOf("02"), 0);
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.indexOf("89"), 5);
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.indexOf(null, 0);
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw a NullPointerExceptionE");
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * {@link java.lang.StringBuffer#lastIndexOf(String, int)}
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings("nls")
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lastIndexOfLjava_lang_StringI() {
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String fixture = "0123456789";
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuffer sb = new StringBuffer(fixture);
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.lastIndexOf("0"));
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.lastIndexOf("012"));
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.lastIndexOf("02"));
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.lastIndexOf("89"));
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.lastIndexOf("0"), 0);
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, sb.lastIndexOf("012"), 0);
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.lastIndexOf("02"), 0);
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.lastIndexOf("89"), 0);
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.lastIndexOf("0"), 5);
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.lastIndexOf("012"), 5);
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, sb.lastIndexOf("02"), 0);
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, sb.lastIndexOf("89"), 5);
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.lastIndexOf(null, 0);
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw a NullPointerException");
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // comparator for StringBuffer objects
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static final SerializableAssert STRING_BUFFER_COMPARATOR = new SerializableAssert() {
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void assertDeserialized(Serializable initial,
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Serializable deserialized) {
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            StringBuffer init = (StringBuffer) initial;
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            StringBuffer desr = (StringBuffer) deserialized;
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // serializable fields are: 'count', 'shared', 'value'
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // serialization of 'shared' is not verified
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // 'count' + 'value' should result in required string
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("toString", init.toString(), desr.toString());
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    };
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization/deserialization.
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void testSerializationSelf() throws Exception {
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifySelf(new StringBuffer("0123456789"),
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                STRING_BUFFER_COMPARATOR);
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization/deserialization compatibility with RI.
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void testSerializationCompatibility() throws Exception {
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifyGolden(this, new StringBuffer("0123456789"),
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                STRING_BUFFER_COMPARATOR);
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
624