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