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