1dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * contributor license agreements. See the NOTICE file distributed with 3dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * this work for additional information regarding copyright ownership. 4dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * (the "License"); you may not use this file except in compliance with 6dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * the License. You may obtain a copy of the License at 7dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * 8dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * 10dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Unless required by applicable law or agreed to in writing, software 11dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * See the License for the specific language governing permissions and 14dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * limitations under the License. 15dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 16dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 17e5fea3d504609d22337a5311d3ce0e72314bceeeNarayan Kamathpackage org.apache.harmony.tests.java.nio; 18dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 19dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.Buffer; 20dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.ByteBuffer; 21dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport java.nio.InvalidMarkException; 22dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 23dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughesimport junit.framework.TestCase; 24dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 25dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes/** 26dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Tests a java.nio.Buffer instance. 27dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 28dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughespublic class AbstractBufferTest extends TestCase { 29dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 30dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected Buffer baseBuf; 31dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 32dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected void setUp() throws Exception{ 33dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes super.setUp(); 34dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf = ByteBuffer.allocate(10); 35dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 36dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 37dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes protected void tearDown() throws Exception{ 38dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes super.tearDown(); 39dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 40dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 41dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testCapacity() { 42dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 43dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 44dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 45dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 46dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testClear() { 47dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 48dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 49dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 50dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 51dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.clear(); 52dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 53dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), 0); 54dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.limit(), baseBuf.capacity()); 55dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 56dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 57dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$S 58dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 59dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 60dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 61dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 62dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 63dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 64dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 65dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 66dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 67dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testFlip() { 68dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 69dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 70dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 71dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 72dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.flip(); 73dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 74dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), 0); 75dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.limit(), oldPosition); 76dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 77dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 78dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 79dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 80dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 81dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 82dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 83dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 84dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 85dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 86dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 87dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 88dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testHasRemaining() { 89dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 90dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 91dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 92dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 93dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.hasRemaining(), baseBuf.position() < baseBuf.limit()); 94dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 95dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertFalse(baseBuf.hasRemaining()); 96dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 97dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 98dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 99dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 100dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 101dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 102dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testIsReadOnly() { 103dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.isReadOnly(); 104dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 105dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 106dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 107dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for int limit() 108dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 109dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testLimit() { 110dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 111dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 112dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 113dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 114dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 115dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for Buffer limit(int) 116dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 117dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testLimitint() { 118dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 119dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 120dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 121dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 122dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.limit(baseBuf.limit()); 123dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 124dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 125dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 126dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(baseBuf.capacity()); 127dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.limit(), baseBuf.capacity()); 128dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // position should not change 129dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 130dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // mark should be valid 131dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 132dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 133dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes if (baseBuf.capacity() > 0) { 134dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(baseBuf.capacity()); 135dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.capacity()); 136dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 137dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(baseBuf.capacity() - 1); 138dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // position should be the new limit 139dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), baseBuf.limit()); 140dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // mark should be invalid 141dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 142dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 143dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 144dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 145dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 146dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 147dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 148dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 149dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 150dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(-1); 151dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 152dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 153dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 154dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 155dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 156dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(baseBuf.capacity() + 1); 157dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 158dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 159dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 160dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 161dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 162dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 163dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 164dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 165dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 166dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 167dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testMark() { 168dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 169dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 170dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 171dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 172dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.mark(); 173dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 174dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 175dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 176dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 177dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 178dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 179dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 180dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 181dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 182dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 183dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 184dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 185dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 186dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 187dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 188dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 189dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 190dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 191dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for int position() 192dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 193dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPosition() { 194dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 195dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 196dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 197dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 198dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes /* 199dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes * Class under test for Buffer position(int) 200dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes */ 201dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testPositionint() { 202dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 203dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 204dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 205dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 206dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 207dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(-1); 208dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 209dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 210dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 211dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 212dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 213dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit() + 1); 214dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 215dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (IllegalArgumentException e) { 216dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 217dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 218dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 219dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 220dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.position()); 221dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 222dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 223dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 224dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(0); 225dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), 0); 226dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 227dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), baseBuf.limit()); 228dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 229dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes if (baseBuf.capacity() > 0) { 230dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(baseBuf.capacity()); 231dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 232dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 233dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit() - 1); 234dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), baseBuf.limit() - 1); 235dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // mark should be invalid 236dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 237dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 238dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 239dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 240dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 241dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 242dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 243dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 244dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.position(0); 245dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 246dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 247dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 248dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 249dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 250dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 251dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 252dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testRemaining() { 253dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.remaining(), baseBuf.limit() - baseBuf.position()); 254dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 255dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 256dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testReset() { 257dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 258dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 259dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 260dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 261dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 262dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 263dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 264dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 265dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 266dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.mark(); 267dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(baseBuf.limit()); 268dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 269dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), oldPosition); 270dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 271dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.reset(); 272dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 273dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 274dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.clear(); 275dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 276dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 277dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 278dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 279dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 280dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 281dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 282dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 283dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 284dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 285dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 286dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 287dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes public void testRewind() { 288dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // save state 289dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldPosition = baseBuf.position(); 290dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes int oldLimit = baseBuf.limit(); 291dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 292dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes Buffer ret = baseBuf.rewind(); 293dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertEquals(baseBuf.position(), 0); 294dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes assertSame(ret, baseBuf); 295dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes try { 296dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.reset(); 297dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 298dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } catch (InvalidMarkException e) { 299dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // expected 300dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 301dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes 302dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes // restore state 303dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.limit(oldLimit); 304dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes baseBuf.position(oldPosition); 305dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes } 306dce2b2fa9d6b26414a8d5a55918e4d7ca2ab1baaElliott Hughes} 307