1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.nio.tests.java.nio; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.Buffer; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.ByteBuffer; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.InvalidMarkException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests a java.nio.Buffer instance. 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class AbstractBufferTest extends TestCase { 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected Buffer baseBuf; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception{ 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf = ByteBuffer.allocate(10); 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception{ 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testCapacity() { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testClear() { 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.clear(); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), 0); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.limit(), baseBuf.capacity()); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$S 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFlip() { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.flip(); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), 0); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.limit(), oldPosition); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHasRemaining() { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.hasRemaining(), baseBuf.position() < baseBuf.limit()); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(baseBuf.hasRemaining()); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testIsReadOnly() { 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.isReadOnly(); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for int limit() 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testLimit() { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for Buffer limit(int) 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testLimitint() { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.limit(baseBuf.limit()); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(baseBuf.capacity()); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.limit(), baseBuf.capacity()); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // position should not change 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // mark should be valid 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (baseBuf.capacity() > 0) { 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(baseBuf.capacity()); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.capacity()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(baseBuf.capacity() - 1); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // position should be the new limit 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), baseBuf.limit()); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // mark should be invalid 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(-1); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(baseBuf.capacity() + 1); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testMark() { 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.mark(); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for int position() 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testPosition() { 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(0 <= baseBuf.position() && baseBuf.position() <= baseBuf.limit() 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && baseBuf.limit() <= baseBuf.capacity()); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for Buffer position(int) 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testPositionint() { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(-1); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit() + 1); 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.position()); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(0); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), 0); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), baseBuf.limit()); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (baseBuf.capacity() > 0) { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(baseBuf.capacity()); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit() - 1); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), baseBuf.limit() - 1); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // mark should be invalid 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.position(0); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemaining() { 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.remaining(), baseBuf.limit() - baseBuf.position()); 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testReset() { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.mark(); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(baseBuf.limit()); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), oldPosition); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.reset(); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.clear(); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRewind() { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save state 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldPosition = baseBuf.position(); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldLimit = baseBuf.limit(); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Buffer ret = baseBuf.rewind(); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(baseBuf.position(), 0); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ret, baseBuf); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.reset(); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw Exception"); //$NON-NLS-1$ 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidMarkException e) { 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore state 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.limit(oldLimit); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseBuf.position(oldPosition); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 307