1dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes/* 2dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * contributor license agreements. See the NOTICE file distributed with 4dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * this work for additional information regarding copyright ownership. 5dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * (the "License"); you may not use this file except in compliance with 7dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * the License. You may obtain a copy of the License at 8dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * 9dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * 11dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Unless required by applicable law or agreed to in writing, software 12dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * See the License for the specific language governing permissions and 15dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * limitations under the License. 16dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 17dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 18e5fea3d504609d22337a5311d3ce0e72314bceeeNarayan Kamathpackage org.apache.harmony.tests.java.nio; 19dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 20dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.io.IOException; 21dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.BufferOverflowException; 22dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.BufferUnderflowException; 23dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.ByteOrder; 24dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.CharBuffer; 25dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.InvalidMarkException; 26dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.ReadOnlyBufferException; 27dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 28dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes/** 29dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Tests java.nio.CharBuffer 30dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * 31dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 32dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughespublic class CharBufferTest extends AbstractBufferTest { 33dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected static final int SMALL_TEST_LENGTH = 5; 34dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 35dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected static final int BUFFER_LENGTH = 20; 36dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 37dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected CharBuffer buf; 38dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 39dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes private static char[] chars = "123456789a".toCharArray(); 40dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 41dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected void setUp() throws Exception{ 42dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char[] charscopy = new char[chars.length]; 43dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes System.arraycopy(chars, 0, charscopy, 0, chars.length); 44dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf = CharBuffer.wrap(charscopy); 45dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf = buf; 46dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 47dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 48dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected void tearDown() throws Exception{ 49dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf = null; 50dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf = null; 51dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 52dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 53dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testArray() { 54dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = buf.array(); 55dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 56dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 57dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(array, buf.arrayOffset(), buf.capacity()); 58dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 59dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 60dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(array, buf.arrayOffset(), buf.capacity()); 61dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 62dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 63dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(buf); 64dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 65dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 66dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(buf); 67dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 68dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 69dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 70dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testArrayOffset() { 71dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = buf.array(); 72dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 73dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 74dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(array, buf.arrayOffset(), buf.capacity()); 75dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 76dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 77dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(array, buf.arrayOffset(), buf.capacity()); 78dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 79dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 80dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(buf); 81dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 82dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 83dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(buf); 84dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity()); 85dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 86dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 87dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAsReadOnlyBuffer() { 88dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 89dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 90dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(buf.limit()); 91dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 92dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // readonly's contents should be the same as buf 93dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer readonly = buf.asReadOnlyBuffer(); 94dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertNotSame(buf, readonly); 95dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(readonly.isReadOnly()); 96dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), readonly.position()); 97dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), readonly.limit()); 98dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isDirect(), readonly.isDirect()); 99dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.order(), readonly.order()); 100dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.capacity(), readonly.capacity()); 101dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, readonly); 102dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 103dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // readonly's position, mark, and limit should be independent to buf 104dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly.reset(); 105dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(readonly.position(), 0); 106dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly.clear(); 107dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.limit()); 108dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 109dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 110dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 111dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 112dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int originalPosition = (buf.position() + buf.limit()) / 2; 113dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(originalPosition); 114dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 115dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(buf.limit()); 116dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 117dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // readonly's contents should be the same as buf 118dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly = buf.asReadOnlyBuffer(); 119dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertNotSame(buf, readonly); 120dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(readonly.isReadOnly()); 121dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), readonly.position()); 122dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), readonly.limit()); 123dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isDirect(), readonly.isDirect()); 124dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.order(), readonly.order()); 125dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.capacity(), readonly.capacity()); 126dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, readonly); 127dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 128dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // readonly's position, mark, and limit should be independent to buf 129dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly.reset(); 130dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(readonly.position(), originalPosition); 131dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly.clear(); 132dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.limit()); 133dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 134dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), originalPosition); 135dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 136dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 137dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testCompact() { 138dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // case: buffer is full 139dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 140dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 141dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(buf); 142dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.compact(); 143dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 144dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.capacity()); 145dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), buf.capacity()); 146dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentLikeTestData1(buf, 0, (char) 0, buf.capacity()); 147dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 148dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 149dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 150dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 151dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 152dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 153dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 154dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // case: buffer is empty 155dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(0); 156dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.limit(0); 157dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 158dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes ret = buf.compact(); 159dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 160dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 161dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), buf.capacity()); 162dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentLikeTestData1(buf, 0, (char) 0, buf.capacity()); 163dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 164dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 165dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 166dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 167dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 168dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 169dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 170dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // case: normal 171dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.capacity() > 5); 172dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(1); 173dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.limit(5); 174dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 175dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes ret = buf.compact(); 176dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 177dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 4); 178dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), buf.capacity()); 179dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentLikeTestData1(buf, 0, (char) 1, 4); 180dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 181dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 182dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 183dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 184dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 185dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 186dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 187dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 188dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testCompareTo() { 189dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // compare to self 190dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(0, buf.compareTo(buf)); 191dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 192dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.capacity() > SMALL_TEST_LENGTH); 193dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 194dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer other = CharBuffer.allocate(buf.capacity()); 195dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes other.put(buf); 196dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes other.clear(); 197dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 198dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(0, buf.compareTo(other)); 199dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(0, other.compareTo(buf)); 200dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(1); 201dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.compareTo(other) > 0); 202dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(other.compareTo(buf) < 0); 203dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes other.position(2); 204dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.compareTo(other) < 0); 205dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(other.compareTo(buf) > 0); 206dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(2); 207dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.compareTo(other) == 0); 208dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(other.compareTo(buf) == 0); 209dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes other.limit(SMALL_TEST_LENGTH); 210dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.compareTo(other) > 0); 211dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(other.compareTo(buf) < 0); 212dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 213dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 214dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testDuplicate() { 215dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // mark the position 0 216dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 217dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 218dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(buf.limit()); 219dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 220dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // duplicate's contents should be the same as buf 221dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer duplicate = buf.duplicate(); 222dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertNotSame(buf, duplicate); 223dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), duplicate.position()); 224dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), duplicate.limit()); 225dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isReadOnly(), duplicate.isReadOnly()); 226dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isDirect(), duplicate.isDirect()); 227dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.order(), duplicate.order()); 228dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.capacity(), duplicate.capacity()); 229dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, duplicate); 230dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 231dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // duplicate's position, mark, and limit should be independent to 232dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // buf 233dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.reset(); 234dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(duplicate.position(), 0); 235dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.clear(); 236dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.limit()); 237dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 238dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 239dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 240dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // mark another position 241dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 242dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int originalPosition = (buf.position() + buf.limit()) / 2; 243dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(originalPosition); 244dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.mark(); 245dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(buf.limit()); 246dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 247dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // duplicate's contents should be the same as buf 248dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate = buf.duplicate(); 249dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertNotSame(buf, duplicate); 250dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), duplicate.position()); 251dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.limit(), duplicate.limit()); 252dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isReadOnly(), duplicate.isReadOnly()); 253dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isDirect(), duplicate.isDirect()); 254dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.order(), duplicate.order()); 255dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.capacity(), duplicate.capacity()); 256dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, duplicate); 257dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 258dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // duplicate's position, mark, and limit should be independent to 259dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // buf 260dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.reset(); 261dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(duplicate.position(), originalPosition); 262dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.clear(); 263dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.limit()); 264dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.reset(); 265dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), originalPosition); 266dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 267dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // duplicate share the same content with buf 268dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes if (!duplicate.isReadOnly()) { 269dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(buf); 270dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, duplicate); 271dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(duplicate); 272dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, duplicate); 273dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 274dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 275dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 276dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testEquals() { 277dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // equal to self 278dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.equals(buf)); 279dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer readonly = buf.asReadOnlyBuffer(); 280dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.equals(readonly)); 281dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer duplicate = buf.duplicate(); 282dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.equals(duplicate)); 283dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 284dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // always false, if type mismatch 285dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(buf.equals(Boolean.TRUE)); 286dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 287dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.capacity() > 5); 288dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 289dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.limit(buf.capacity()).position(0); 290dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes readonly.limit(readonly.capacity()).position(1); 291dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(buf.equals(readonly)); 292dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 293dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.limit(buf.capacity() - 1).position(0); 294dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.limit(duplicate.capacity()).position(0); 295dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(buf.equals(duplicate)); 296dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 297dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 298dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 299dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for char get() 300dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 301dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testGet() { 302dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 303dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 304dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 305dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(), buf.get(i)); 306dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 307dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 308dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(); 309dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 310dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferUnderflowException e) { 311dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 312dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 313dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 314dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 315dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 316dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer get(char[]) 317dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 318dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testGetcharArray() { 319dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = new char[1]; 320dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 321dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 322dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 323dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.get(array); 324dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(array[0], buf.get(i)); 325dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 326dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 327dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 328dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array); 329dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 330dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferUnderflowException e) { 331dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 332dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 333dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 334dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 335dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 336dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer get(char[], int, int) 337dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 338dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testGetcharArrayintint() { 339dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 340dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = new char[buf.capacity()]; 341dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 342dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 343dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(new char[buf.capacity() + 1], 0, buf.capacity() + 1); 344dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 345dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferUnderflowException e) { 346dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 347dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 348dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 349dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 350dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, -1, array.length); 351dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 352dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 353dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 354dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 355dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, array.length, 0); 356dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 357dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, array.length + 1, 1); 358dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 359dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 360dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 361dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 362dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 363dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 364dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, 2, -1); 365dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 366dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 367dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 368dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 369dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 370dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get((char[])null, 2, -1); 371dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 372dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 373dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 374dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 375dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 376dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, 2, array.length); 377dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 378dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 379dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 380dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 381dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 382dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, 1, Integer.MAX_VALUE); 383dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 384dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferUnderflowException expected) { 385dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException expected) { 386dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 387dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 388dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(array, Integer.MAX_VALUE, 1); 389dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 390dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 391dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 392dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 393dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 394dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 395dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 396dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.get(array, 0, array.length); 397dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.capacity()); 398dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, 0, array.length); 399dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 400dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 401dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 402dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 403dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for char get(int) 404dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 405dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testGetint() { 406dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 407dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 408dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 409dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(), buf.get(i)); 410dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 411dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 412dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(-1); 413dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 414dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 415dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 416dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 417dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 418dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.get(buf.limit()); 419dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 420dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 421dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 422dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 423dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 424dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 425dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testHashCode() { 426dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 427dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(buf); 428dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer readonly = buf.asReadOnlyBuffer(); 429dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer duplicate = buf.duplicate(); 430dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.hashCode() == readonly.hashCode()); 431dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.capacity() > SMALL_TEST_LENGTH); 432dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes duplicate.position(buf.capacity() / 2); 433dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.hashCode() != duplicate.hashCode()); 434dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 435dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 436dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 437dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer put(char) 438dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 439dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutchar() { 440dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 441dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 442dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 443dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put((char) i); 444dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), (char) i); 445dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 446dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 447dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 448dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((char) 0); 449dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 450dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 451dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 452dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 453dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 454dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 455dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 456dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer put(char[]) 457dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 458dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutcharArray() { 459dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = new char[1]; 460dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 461dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 462dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 463dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 464dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes array[0] = (char) i; 465dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(array); 466dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), (char) i); 467dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 468dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 469dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 470dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array); 471dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 472dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 473dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 474dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 475dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 476dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((char[]) null); 477dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 478dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 479dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 480dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 481dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 482dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 483dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 484dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer put(char[], int, int) 485dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 486dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutcharArrayintint() { 487dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 488dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = new char[buf.capacity()]; 489dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 490dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((char[]) null, 0, 1); 491dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw NullPointerException"); //$NON-NLS-1$ 492dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 493dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 494dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 495dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 496dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(new char[buf.capacity() + 1], 0, buf.capacity() + 1); 497dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 498dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 499dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 500dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 501dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 502dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 503dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, -1, array.length); 504dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 505dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 506dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 507dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 508dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 509dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, array.length + 1, 0); 510dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 511dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 512dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 513dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 514dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, array.length, 0); 515dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 516dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 517dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, 0, -1); 518dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 519dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 520dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 521dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 522dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 523dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((char[])null, 0, -1); 524dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 525dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 526dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 527dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 528dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 529dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, 2, array.length); 530dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 531dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 532dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 533dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 534dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 535dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, Integer.MAX_VALUE, 1); 536dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 537dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 538dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 539dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 540dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 541dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(array, 1, Integer.MAX_VALUE); 542dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 543dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException expected) { 544dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException expected) { 545dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 546dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 547dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 548dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(array, 0, array.length); 549dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(array, 0, array.length); 550dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.capacity()); 551dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, array, 0, array.length); 552dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 553dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 554dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 555dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 556dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer put(java.nio.CharBuffer) 557dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 558dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutCharBuffer() { 559dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer other = CharBuffer.allocate(buf.capacity()); 560dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 561dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 562dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((CharBuffer) null); 563dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 564dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 565dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 566dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 567dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 568dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(buf); 569dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 570dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 571dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 572dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 573dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 574dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(CharBuffer.allocate(buf.capacity() + 1)); 575dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 576dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 577dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 578dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 579dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 580dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.flip(); 581dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((CharBuffer)null); 582dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 583dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 584dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 585dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 586dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 587dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(other); 588dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes other.clear(); 589dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 590dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(other); 591dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(other.position(), other.capacity()); 592dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.capacity()); 593dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(other, buf); 594dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 595dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 596dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 597dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 598dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for java.nio.CharBuffer put(int, char) 599dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 600dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutintchar() { 601dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 602dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 603dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 604dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(i, (char) i); 605dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), (char) i); 606dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 607dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 608dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 609dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(-1, (char) 0); 610dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 611dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 612dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 613dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 614dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 615dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(buf.limit(), (char) 0); 616dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 617dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 618dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 619dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 620dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 621dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 622dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testSlice() { 623dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.capacity() > 5); 624dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.position(1); 625dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.limit(buf.capacity() - 1); 626dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 627dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer slice = buf.slice(); 628dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isReadOnly(), slice.isReadOnly()); 629dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.isDirect(), slice.isDirect()); 630dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.order(), slice.order()); 631dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(slice.position(), 0); 632dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(slice.limit(), buf.remaining()); 633dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(slice.capacity(), buf.remaining()); 634dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 635dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes slice.reset(); 636dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 637dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 638dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 639dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 640dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 641dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // slice share the same content with buf 642dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes if (!slice.isReadOnly()) { 643dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData1(slice); 644dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentLikeTestData1(buf, 1, (char) 0, slice.capacity()); 645dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(2, (char) 500); 646dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(slice.get(1), 500); 647dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 648dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 649dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 650dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testToString() { 651dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes String expected = ""; 652dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = buf.position(); i < buf.limit(); i++) { 653dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes expected += buf.get(i); 654dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 655dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes String str = buf.toString(); 656dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(expected, str); 657dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 658dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 659dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testCharAt() { 660dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.remaining(); i++) { 661dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(buf.position() + i), buf.charAt(i)); 662dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 663dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 664dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.charAt(-1); 665dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 666dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 667dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 668dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 669dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 670dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.charAt(buf.remaining()); 671dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 672dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 673dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 674dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 675dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 676dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 677dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testLength() { 678dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.length(), buf.remaining()); 679dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 680dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 681dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testSubSequence() { 682dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 683dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.subSequence(-1, buf.length()); 684dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 685dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 686dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 687dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 688dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 689dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.subSequence(buf.length() + 1, buf.length() + 1); 690dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 691dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 692dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 693dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 694dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.subSequence(buf.length(), buf.length()).length(), 0); 695dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 696dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.subSequence(1, 0); 697dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 698dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 699dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 700dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 701dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 702dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.subSequence(1, buf.length() + 1); 703dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 704dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 705dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 706dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 707dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 708dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.subSequence(0, buf.length()).toString(), buf 709dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes .toString()); 710dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 711dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes if (buf.length() >= 2) { 712dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.subSequence(1, buf.length() - 1).toString(), buf 713dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes .toString().substring(1, buf.length() - 1)); 714dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 715dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 716dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 717dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutString() { 718dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes String str = " "; 719dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 720dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 721dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 722dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), i); 723dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes str = "" + (char) i; 724dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(str); 725dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), (char) i); 726dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 727dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 728dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 729dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str); 730dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 731dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 732dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 733dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 734dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 735dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((String) null); 736dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 737dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 738dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 739dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 740dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 741dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 742dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPutStringintint() { 743dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 744dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes String str = String.valueOf(new char[buf.capacity()]); 745dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 746dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // Throw a BufferOverflowException and no character is transfered to 747dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // CharBuffer 748dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 749dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(String.valueOf(new char[buf.capacity() + 1]), 0, buf 750dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes .capacity() + 1); 751dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 752dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException e) { 753dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 754dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 755dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 756dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((String) null, 0, buf.capacity() + 1); 757dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 758dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 759dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 760dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 761dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(0, buf.position()); 762dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 763dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 764dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 765dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str, -1, str.length()); 766dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 767dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 768dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 769dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 770dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 771dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str, str.length() + 1, str.length() + 2); 772dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 773dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 774dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 775dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 776dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 777dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put((String) null, -1, 0); 778dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 779dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException e) { 780dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 781dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 782dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str, str.length(), str.length()); 783dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 784dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 785dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str, 2, 1); 786dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 787dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 788dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 789dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 790dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 791dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(str, 2, str.length() + 1); 792dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 793dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException e) { 794dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 795dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 796dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), 0); 797dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 798dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char array[] = new char[buf.capacity()]; 799dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes loadTestData2(array, 0, array.length); 800dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes str = String.valueOf(array); 801dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 802dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer ret = buf.put(str, 0, str.length()); 803dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.position(), buf.capacity()); 804dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertContentEquals(buf, str.toCharArray(), 0, str.length()); 805dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, buf); 806dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 807dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 808dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes void loadTestData1(char array[], int offset, int length) { 809dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < length; i++) { 810dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes array[offset + i] = (char) i; 811dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 812dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 813dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 814dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes void loadTestData2(char array[], int offset, int length) { 815dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < length; i++) { 816dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes array[offset + i] = (char) (length - i); 817dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 818dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 819dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 820dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes void loadTestData1(CharBuffer buf) { 821dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 822dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 823dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(i, (char) i); 824dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 825dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 826dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 827dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes void loadTestData2(CharBuffer buf) { 828dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.clear(); 829dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 830dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes buf.put(i, (char) (buf.capacity() - i)); 831dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 832dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 833dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 834dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes private void assertContentEquals(CharBuffer buf, char array[], int offset, 835dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int length) { 836dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < length; i++) { 837dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), array[offset + i]); 838dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 839dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 840dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 841dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes private void assertContentEquals(CharBuffer buf, CharBuffer other) { 842dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.capacity(), other.capacity()); 843dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < buf.capacity(); i++) { 844dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(i), other.get(i)); 845dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 846dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 847dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 848dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes private void assertContentLikeTestData1(CharBuffer buf, int startIndex, 849dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char startValue, int length) { 850dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char value = startValue; 851dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes for (int i = 0; i < length; i++) { 852dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(buf.get(startIndex + i), value); 853dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes value = (char) (value + 1); 854dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 855dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 856dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 857dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendSelf() throws Exception { 858dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(10); 859dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb2 = cb.duplicate(); 860dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cb); 861dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(10, cb.position()); 862dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.clear(); 863dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(cb2, cb); 864dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 865dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put("abc"); 866dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb2 = cb.duplicate(); 867dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cb); 868dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(10, cb.position()); 869dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.clear(); 870dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb2.clear(); 871dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(cb2, cb); 872dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 873dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put("edfg"); 874dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.clear(); 875dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb2 = cb.duplicate(); 876dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cb); 877dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(10, cb.position()); 878dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.clear(); 879dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb2.clear(); 880dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(cb, cb2); 881dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 882dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 883dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendOverFlow() throws IOException { 884dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(1); 885dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharSequence cs = "String"; 886dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put('A'); 887dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 888dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append('C'); 889dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw BufferOverflowException."); 890dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException ex) { 891dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 892dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 893dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 894dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cs); 895dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw BufferOverflowException."); 896dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException ex) { 897dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 898dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 899dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 900dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cs, 1, 2); 901dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw BufferOverflowException."); 902dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (BufferOverflowException ex) { 903dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 904dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 905dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 906dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 907dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReadOnlyMap() throws IOException { 908dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.wrap("ABCDE").asReadOnlyBuffer(); 909dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharSequence cs = "String"; 910dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 911dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append('A'); 912dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw ReadOnlyBufferException."); 913dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (ReadOnlyBufferException ex) { 914dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 915dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 916dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 917dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cs); 918dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw ReadOnlyBufferException."); 919dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (ReadOnlyBufferException ex) { 920dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 921dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 922dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 923dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cs, 1, 2); 924dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw ReadOnlyBufferException."); 925dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (ReadOnlyBufferException ex) { 926dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 927dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 928dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(cs, 1, 1); 929dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 930dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 931dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendCNormal() throws IOException { 932dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(2); 933dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put('A'); 934dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(cb, cb.append('B')); 935dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals('B', cb.get(1)); 936dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 937dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 938dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendCharSequenceNormal() throws IOException { 939dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(10); 940dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put('A'); 941dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(cb, cb.append("String")); 942dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("AString", cb.flip().toString()); 943dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(null); 944dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("null", cb.flip().toString()); 945dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 946dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 947dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendCharSequenceIINormal() throws IOException { 948dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(10); 949dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.put('A'); 950dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(cb, cb.append("String", 1, 3)); 951dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("Atr", cb.flip().toString()); 952dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 953dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append(null, 0, 1); 954dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("n", cb.flip().toString()); 955dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 956dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 957dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testAppendCharSequenceII_IllegalArgument() throws IOException { 958dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer cb = CharBuffer.allocate(10); 959dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", 0, 0); 960dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", 2, 2); 961dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 962dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", -1, 1); 963dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IndexOutOfBoundsException."); 964dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException ex) { 965dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 966dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 967dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 968dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", -1, -1); 969dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IndexOutOfBoundsException."); 970dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException ex) { 971dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 972dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 973dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 974dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", 3, 2); 975dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IndexOutOfBoundsException."); 976dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException ex) { 977dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 978dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 979dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 980dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", 3, 0); 981dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IndexOutOfBoundsException."); 982dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException ex) { 983dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 984dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 985dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 986dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes cb.append("String", 3, 110); 987dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IndexOutOfBoundsException."); 988dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IndexOutOfBoundsException ex) { 989dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 990dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 991dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 992dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 993dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReadCharBuffer() throws IOException { 994dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer source = CharBuffer.wrap("String"); 995dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer target = CharBuffer.allocate(10); 996dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(6, source.read(target)); 997dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("String", target.flip().toString()); 998dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // return -1 when nothing to read 999dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(-1, source.read(target)); 1000dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // NullPointerException 1001dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 1002dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(-1, source.read(null)); 1003dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw NullPointerException."); 1004dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (NullPointerException ex) { 1005dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 1006dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1007dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1008dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1009dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1010dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReadReadOnly() throws IOException { 1011dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer source = CharBuffer.wrap("String"); 1012dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer target = CharBuffer.allocate(10).asReadOnlyBuffer(); 1013dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 1014dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes source.read(target); 1015dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw ReadOnlyBufferException."); 1016dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (ReadOnlyBufferException ex) { 1017dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected; 1018dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1019dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // if target has no remaining, needn't to check the isReadOnly 1020dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes target.flip(); 1021dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(0, source.read(target)); 1022dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1023dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1024dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReadOverflow() throws IOException { 1025dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer source = CharBuffer.wrap("String"); 1026dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer target = CharBuffer.allocate(1); 1027dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(1, source.read(target)); 1028dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals("S", target.flip().toString()); 1029dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(1, source.position()); 1030dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1031dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1032dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReadSelf() throws Exception { 1033dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer source = CharBuffer.wrap("abuffer"); 1034dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 1035dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes source.read(source); 1036dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IAE."); 1037dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 1038dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes //expected 1039dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1040dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1041dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1042dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testRead_scenario1() throws Exception { 1043dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes char[] charArray = new char[] { 'a', 'b' }; 1044dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer charBuffer = CharBuffer.wrap(charArray); 1045dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 1046dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes charBuffer.read(charBuffer); 1047dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("should throw IllegalArgumentException"); 1048dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 1049dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 1050dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1051dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes charBuffer.put(charArray); 1052dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(-1, charBuffer.read(charBuffer)); 1053dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1054dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1055dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testRead_scenario2() throws Exception { 1056dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer charBufferA = CharBuffer.allocate(0); 1057dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer allocateBuffer = CharBuffer.allocate(1); 1058dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes CharBuffer charBufferB = CharBuffer.wrap(allocateBuffer); 1059dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(-1, charBufferA.read(charBufferB)); 1060dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1061dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes allocateBuffer.append(allocateBuffer); 1062dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes charBufferB = CharBuffer.wrap(allocateBuffer); 1063dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(-1, charBufferA.read(charBufferB)); 1064dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1065dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1066dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testIsDirect() { 1067dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(buf.isDirect()); 1068dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1069dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1070dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testHasArray() { 1071dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(buf.hasArray()); 1072dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1073dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1074dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testOrder() { 1075dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(ByteOrder.nativeOrder(), buf.order()); 1076dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1077dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 1078dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testIsReadOnly() { 1079dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(buf.isReadOnly()); 1080dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 1081dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes} 1082