1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.nio.tests.java.nio;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.BufferOverflowException;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.BufferUnderflowException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.ByteOrder;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.CharBuffer;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.InvalidMarkException;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.ReadOnlyBufferException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests java.nio.CharBuffer
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class CharBufferTest extends AbstractBufferTest {
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected static final int SMALL_TEST_LENGTH = 5;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected static final int BUFFER_LENGTH = 20;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected CharBuffer buf;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private static char[] chars = "123456789a".toCharArray();
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void setUp() throws Exception{
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char[] charscopy = new char[chars.length];
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		System.arraycopy(chars, 0, charscopy, 0, chars.length);
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf = CharBuffer.wrap(charscopy);
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		baseBuf = buf;
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void tearDown() throws Exception{
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf = null;
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		baseBuf = null;
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testArray() {
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = buf.array();
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(array, buf.arrayOffset(), buf.capacity());
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(array, buf.arrayOffset(), buf.capacity());
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(buf);
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(buf);
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testArrayOffset() {
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = buf.array();
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(array, buf.arrayOffset(), buf.capacity());
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(array, buf.arrayOffset(), buf.capacity());
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(buf);
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(buf);
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAsReadOnlyBuffer() {
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(buf.limit());
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// readonly's contents should be the same as buf
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer readonly = buf.asReadOnlyBuffer();
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNotSame(buf, readonly);
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(readonly.isReadOnly());
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), readonly.position());
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), readonly.limit());
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isDirect(), readonly.isDirect());
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.order(), readonly.order());
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.capacity(), readonly.capacity());
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, readonly);
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// readonly's position, mark, and limit should be independent to buf
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly.reset();
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(readonly.position(), 0);
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly.clear();
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.limit());
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.reset();
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int originalPosition = (buf.position() + buf.limit()) / 2;
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(originalPosition);
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(buf.limit());
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// readonly's contents should be the same as buf
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly = buf.asReadOnlyBuffer();
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNotSame(buf, readonly);
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(readonly.isReadOnly());
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), readonly.position());
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), readonly.limit());
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isDirect(), readonly.isDirect());
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.order(), readonly.order());
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.capacity(), readonly.capacity());
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, readonly);
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// readonly's position, mark, and limit should be independent to buf
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly.reset();
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(readonly.position(), originalPosition);
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly.clear();
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.limit());
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.reset();
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), originalPosition);
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testCompact() {
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// case: buffer is full
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(buf);
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer ret = buf.compact();
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.capacity());
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), buf.capacity());
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentLikeTestData1(buf, 0, (char) 0, buf.capacity());
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.reset();
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InvalidMarkException e) {
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// case: buffer is empty
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(0);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.limit(0);
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ret = buf.compact();
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), buf.capacity());
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentLikeTestData1(buf, 0, (char) 0, buf.capacity());
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.reset();
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InvalidMarkException e) {
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// case: normal
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.capacity() > 5);
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(1);
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.limit(5);
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ret = buf.compact();
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 4);
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), buf.capacity());
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentLikeTestData1(buf, 0, (char) 1, 4);
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.reset();
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InvalidMarkException e) {
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testCompareTo() {
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// compare to self
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(0, buf.compareTo(buf));
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer other = CharBuffer.allocate(buf.capacity());
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		other.put(buf);
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		other.clear();
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(0, buf.compareTo(other));
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(0, other.compareTo(buf));
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(1);
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.compareTo(other) > 0);
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(other.compareTo(buf) < 0);
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		other.position(2);
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.compareTo(other) < 0);
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(other.compareTo(buf) > 0);
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(2);
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.compareTo(other) == 0);
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(other.compareTo(buf) == 0);
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		other.limit(SMALL_TEST_LENGTH);
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.compareTo(other) > 0);
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(other.compareTo(buf) < 0);
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testDuplicate() {
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// mark the position 0
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(buf.limit());
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate's contents should be the same as buf
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer duplicate = buf.duplicate();
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNotSame(buf, duplicate);
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), duplicate.position());
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), duplicate.limit());
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isReadOnly(), duplicate.isReadOnly());
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isDirect(), duplicate.isDirect());
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.order(), duplicate.order());
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.capacity(), duplicate.capacity());
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, duplicate);
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate's position, mark, and limit should be independent to
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// buf
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.reset();
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(duplicate.position(), 0);
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.clear();
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.limit());
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.reset();
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// mark another position
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int originalPosition = (buf.position() + buf.limit()) / 2;
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(originalPosition);
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.mark();
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(buf.limit());
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate's contents should be the same as buf
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate = buf.duplicate();
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNotSame(buf, duplicate);
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), duplicate.position());
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.limit(), duplicate.limit());
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isReadOnly(), duplicate.isReadOnly());
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isDirect(), duplicate.isDirect());
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.order(), duplicate.order());
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.capacity(), duplicate.capacity());
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, duplicate);
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate's position, mark, and limit should be independent to
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// buf
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.reset();
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(duplicate.position(), originalPosition);
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.clear();
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.limit());
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.reset();
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), originalPosition);
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate share the same content with buf
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!duplicate.isReadOnly()) {
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			loadTestData1(buf);
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertContentEquals(buf, duplicate);
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			loadTestData2(duplicate);
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertContentEquals(buf, duplicate);
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testEquals() {
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// equal to self
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.equals(buf));
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer readonly = buf.asReadOnlyBuffer();
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.equals(readonly));
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer duplicate = buf.duplicate();
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.equals(duplicate));
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// always false, if type mismatch
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse(buf.equals(Boolean.TRUE));
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.capacity() > 5);
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.limit(buf.capacity()).position(0);
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		readonly.limit(readonly.capacity()).position(1);
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse(buf.equals(readonly));
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.limit(buf.capacity() - 1).position(0);
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.limit(duplicate.capacity()).position(0);
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse(buf.equals(duplicate));
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for char get()
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testGet() {
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(), buf.get(i));
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get();
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferUnderflowException e) {
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer get(char[])
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testGetcharArray() {
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = new char[1];
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			CharBuffer ret = buf.get(array);
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(array[0], buf.get(i));
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertSame(ret, buf);
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(array);
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferUnderflowException e) {
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer get(char[], int, int)
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testGetcharArrayintint() {
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = new char[buf.capacity()];
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(new char[buf.capacity() + 1], 0, buf.capacity() + 1);
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferUnderflowException e) {
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(array, -1, array.length);
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.get(array, array.length, 0);
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(array, array.length + 1, 1);
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(array, 2, -1);
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.get((char[])null, 2, -1);
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.get(array, 2, array.length);
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.get(array, 1, Integer.MAX_VALUE);
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
3842a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (BufferUnderflowException expected) {
3852a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.get(array, Integer.MAX_VALUE, 1);
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer ret = buf.get(array, 0, array.length);
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.capacity());
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, 0, array.length);
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for char get(int)
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testGetint() {
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(), buf.get(i));
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(-1);
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.get(buf.limit());
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testHashCode() {
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData1(buf);
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer readonly = buf.asReadOnlyBuffer();
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer duplicate = buf.duplicate();
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.hashCode() == readonly.hashCode());
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		duplicate.position(buf.capacity() / 2);
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.hashCode() != duplicate.hashCode());
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer put(char)
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutchar() {
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			CharBuffer ret = buf.put((char) i);
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), (char) i);
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertSame(ret, buf);
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((char) 0);
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer put(char[])
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutcharArray() {
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = new char[1];
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			array[0] = (char) i;
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			CharBuffer ret = buf.put(array);
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), (char) i);
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertSame(ret, buf);
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(array);
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((char[]) null);
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer put(char[], int, int)
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutcharArrayintint() {
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = new char[buf.capacity()];
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((char[]) null, 0, 1);
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw NullPointerException"); //$NON-NLS-1$
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(new char[buf.capacity() + 1], 0, buf.capacity() + 1);
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(array, -1, array.length);
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(array, array.length + 1, 0);
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.put(array, array.length, 0);
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(array, 0, -1);
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.put((char[])null, 0, -1);
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.put(array, 2, array.length);
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.put(array, Integer.MAX_VALUE, 1);
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.put(array, 1, Integer.MAX_VALUE);
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
5432a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (BufferOverflowException expected) {
5442a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(array, 0, array.length);
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer ret = buf.put(array, 0, array.length);
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.capacity());
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, array, 0, array.length);
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer put(java.nio.CharBuffer)
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutCharBuffer() {
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer other = CharBuffer.allocate(buf.capacity());
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((CharBuffer) null);
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(buf);
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(CharBuffer.allocate(buf.capacity() + 1));
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.flip();
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buf.put((CharBuffer)null);
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw Exception"); //$NON-NLS-1$
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(other);
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		other.clear();
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer ret = buf.put(other);
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(other.position(), other.capacity());
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.capacity());
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(other, buf);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/*
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Class under test for java.nio.CharBuffer put(int, char)
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutintchar() {
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), 0);
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			CharBuffer ret = buf.put(i, (char) i);
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), (char) i);
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertSame(ret, buf);
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(-1, (char) 0);
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(buf.limit(), (char) 0);
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testSlice() {
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.capacity() > 5);
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.position(1);
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.limit(buf.capacity() - 1);
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer slice = buf.slice();
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isReadOnly(), slice.isReadOnly());
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.isDirect(), slice.isDirect());
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.order(), slice.order());
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(slice.position(), 0);
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(slice.limit(), buf.remaining());
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(slice.capacity(), buf.remaining());
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			slice.reset();
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InvalidMarkException e) {
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// slice share the same content with buf
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!slice.isReadOnly()) {
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			loadTestData1(slice);
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertContentLikeTestData1(buf, 1, (char) 0, slice.capacity());
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(2, (char) 500);
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(slice.get(1), 500);
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testToString() {
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String expected = "";
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = buf.position(); i < buf.limit(); i++) {
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			expected += buf.get(i);
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String str = buf.toString();
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(expected, str);
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testCharAt() {
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.remaining(); i++) {
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(buf.position() + i), buf.charAt(i));
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.charAt(-1);
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.charAt(buf.remaining());
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testLength() {
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.length(), buf.remaining());
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testSubSequence() {
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.subSequence(-1, buf.length());
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.subSequence(buf.length() + 1, buf.length() + 1);
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.subSequence(buf.length(), buf.length()).length(), 0);
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.subSequence(1, 0);
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.subSequence(1, buf.length() + 1);
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.subSequence(0, buf.length()).toString(), buf
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.toString());
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (buf.length() >= 2) {
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.subSequence(1, buf.length() - 1).toString(), buf
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.toString().substring(1, buf.length() - 1));
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutString() {
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String str = " ";
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.position(), i);
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			str = "" + (char) i;
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			CharBuffer ret = buf.put(str);
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), (char) i);
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertSame(ret, buf);
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(str);
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((String) null);
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testPutStringintint() {
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String str = String.valueOf(new char[buf.capacity()]);
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Throw a BufferOverflowException and no character is transfered to
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// CharBuffer
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(String.valueOf(new char[buf.capacity() + 1]), 0, buf
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.capacity() + 1);
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException e) {
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((String) null, 0, buf.capacity() + 1);
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(0, buf.position());
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(str, -1, str.length());
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(str, str.length() + 1, str.length() + 2);
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put((String) null, -1, 0);
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.put(str, str.length(), str.length());
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(str, 2, 1);
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(str, 2, str.length() + 1);
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw Exception"); //$NON-NLS-1$
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), 0);
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char array[] = new char[buf.capacity()];
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		loadTestData2(array, 0, array.length);
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		str = String.valueOf(array);
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer ret = buf.put(str, 0, str.length());
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.position(), buf.capacity());
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertContentEquals(buf, str.toCharArray(), 0, str.length());
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(ret, buf);
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	void loadTestData1(char array[], int offset, int length) {
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < length; i++) {
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			array[offset + i] = (char) i;
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	void loadTestData2(char array[], int offset, int length) {
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < length; i++) {
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			array[offset + i] = (char) (length - i);
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	void loadTestData1(CharBuffer buf) {
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(i, (char) i);
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	void loadTestData2(CharBuffer buf) {
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		buf.clear();
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buf.put(i, (char) (buf.capacity() - i));
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void assertContentEquals(CharBuffer buf, char array[], int offset,
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			int length) {
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < length; i++) {
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), array[offset + i]);
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void assertContentEquals(CharBuffer buf, CharBuffer other) {
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(buf.capacity(), other.capacity());
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < buf.capacity(); i++) {
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(i), other.get(i));
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void assertContentLikeTestData1(CharBuffer buf, int startIndex,
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			char startValue, int length) {
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char value = startValue;
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < length; i++) {
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(buf.get(startIndex + i), value);
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			value = (char) (value + 1);
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendSelf() throws Exception {
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(10);
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb2 = cb.duplicate();
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(cb);
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(10, cb.position());
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.clear();
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(cb2, cb);
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put("abc");
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb2 = cb.duplicate();
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(cb);
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(10, cb.position());
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.clear();
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb2.clear();
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(cb2, cb);
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put("edfg");
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.clear();
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb2 = cb.duplicate();
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(cb);
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(10, cb.position());
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.clear();
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb2.clear();
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(cb, cb2);
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendOverFlow() throws IOException {
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(1);
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharSequence cs = "String";
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put('A');
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append('C');
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw BufferOverflowException.");
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException ex) {
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append(cs);
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw BufferOverflowException.");
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException ex) {
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append(cs, 1, 2);
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw BufferOverflowException.");
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (BufferOverflowException ex) {
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testReadOnlyMap() throws IOException {
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.wrap("ABCDE").asReadOnlyBuffer();
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharSequence cs = "String";
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append('A');
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw ReadOnlyBufferException.");
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ReadOnlyBufferException ex) {
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append(cs);
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw ReadOnlyBufferException.");
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ReadOnlyBufferException ex) {
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append(cs, 1, 2);
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw ReadOnlyBufferException.");
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ReadOnlyBufferException ex) {
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(cs, 1, 1);
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendCNormal() throws IOException {
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(2);
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put('A');
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(cb, cb.append('B'));
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals('B', cb.get(1));
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendCharSequenceNormal() throws IOException {
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(10);
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put('A');
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(cb, cb.append("String"));
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("AString", cb.flip().toString());
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(null);
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("null", cb.flip().toString());
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendCharSequenceIINormal() throws IOException {
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(10);
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.put('A');
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertSame(cb, cb.append("String", 1, 3));
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Atr", cb.flip().toString());
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append(null, 0, 1);
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("n", cb.flip().toString());
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testAppendCharSequenceII_IllegalArgument() throws IOException {
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer cb = CharBuffer.allocate(10);
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append("String", 0, 0);
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cb.append("String", 2, 2);
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append("String", -1, 1);
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IndexOutOfBoundsException.");
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException ex) {
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append("String", -1, -1);
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IndexOutOfBoundsException.");
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException ex) {
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append("String", 3, 2);
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IndexOutOfBoundsException.");
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException ex) {
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append("String", 3, 0);
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IndexOutOfBoundsException.");
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException ex) {
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cb.append("String", 3, 110);
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IndexOutOfBoundsException.");
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException ex) {
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testReadCharBuffer() throws IOException {
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer source = CharBuffer.wrap("String");
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer target = CharBuffer.allocate(10);
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(6, source.read(target));
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("String", target.flip().toString());
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// return -1 when nothing to read
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(-1, source.read(target));
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// NullPointerException
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(-1, source.read(null));
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw NullPointerException.");
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException ex) {
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testReadReadOnly() throws IOException {
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer source = CharBuffer.wrap("String");
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer target = CharBuffer.allocate(10).asReadOnlyBuffer();
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			source.read(target);
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw ReadOnlyBufferException.");
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (ReadOnlyBufferException ex) {
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected;
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// if target has no remaining, needn't to check the isReadOnly
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		target.flip();
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(0, source.read(target));
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testReadOverflow() throws IOException {
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer source = CharBuffer.wrap("String");
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer target = CharBuffer.allocate(1);
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(1, source.read(target));
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("S", target.flip().toString());
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(1, source.position());
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testReadSelf() throws Exception {
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		CharBuffer source = CharBuffer.wrap("abuffer");
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			source.read(source);
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("should throw IAE.");
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testRead_scenario1() throws Exception {
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        char[] charArray = new char[] { 'a', 'b' };
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CharBuffer charBuffer = CharBuffer.wrap(charArray);
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            charBuffer.read(charBuffer);
1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        charBuffer.put(charArray);
1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, charBuffer.read(charBuffer));
1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testRead_scenario2() throws Exception {
1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CharBuffer charBufferA = CharBuffer.allocate(0);
1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CharBuffer allocateBuffer = CharBuffer.allocate(1);
1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CharBuffer charBufferB = CharBuffer.wrap(allocateBuffer);
1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, charBufferA.read(charBufferB));
1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        allocateBuffer.append(allocateBuffer);
1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        charBufferB = CharBuffer.wrap(allocateBuffer);
1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, charBufferA.read(charBufferB));
1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testIsDirect() {
1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse(buf.isDirect());
1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testHasArray() {
1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(buf.hasArray());
1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testOrder() {
1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(ByteOrder.nativeOrder(), buf.order());
1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testIsReadOnly() {
1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse(buf.isReadOnly());
1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
1082