114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson/* Licensed to the Apache Software Foundation (ASF) under one or more 214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * this work for additional information regarding copyright ownership. 414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * (the "License"); you may not use this file except in compliance with 614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * the License. You may obtain a copy of the License at 714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * 814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * 1014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * Unless required by applicable law or agreed to in writing, software 1114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 1214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * See the License for the specific language governing permissions and 1414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * limitations under the License. 1514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson */ 1614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 174557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonpackage libcore.java.nio.channels; 1814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 1914816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.File; 2014816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.FileInputStream; 2114816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.FileNotFoundException; 2214816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.FileOutputStream; 2314816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.IOException; 2414816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.RandomAccessFile; 2514816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.io.UnsupportedEncodingException; 2614816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.nio.ByteBuffer; 2714816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.nio.MappedByteBuffer; 284557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.ClosedChannelException; 294557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.DatagramChannel; 304557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.FileChannel; 314557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.FileLock; 324557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.NonWritableChannelException; 333d09992b375338188c75268dddbe07635a505bbeJesse Wilsonimport java.nio.channels.OverlappingFileLockException; 344557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.ReadableByteChannel; 354557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.nio.channels.WritableByteChannel; 3614816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport java.util.Arrays; 3714816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonimport junit.framework.TestCase; 3814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 3914816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonpublic final class OldFileChannelTest extends TestCase { 4014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 4114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final int CAPACITY = 100; 4214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 4314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final String CONTENT = "MYTESTSTRING needs to be a little long"; 4414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 4514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final byte[] TEST_BYTES; 4614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 4714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson static { 4814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 4914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson TEST_BYTES = "test".getBytes("iso8859-1"); 5014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (UnsupportedEncodingException e) { 5114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson throw new Error(e); 5214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 5314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 5414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 5514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final int CONTENT_LENGTH = CONTENT.length(); 5614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 5714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final byte[] CONTENT_AS_BYTES = CONTENT.getBytes(); 5814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 5914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private static final int CONTENT_AS_BYTES_LENGTH = CONTENT_AS_BYTES.length; 6014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 6114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private FileChannel readOnlyFileChannel; 6214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 6314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private FileChannel writeOnlyFileChannel; 6414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 6514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private FileChannel readWriteFileChannel; 6614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 6714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private File fileOfReadOnlyFileChannel; 6814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 6914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private File fileOfWriteOnlyFileChannel; 7014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 7114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private File fileOfReadWriteFileChannel; 7214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 7314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // to read content from FileChannel 7414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private FileInputStream fis; 7514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 7614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private FileLock fileLock; 7714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 7814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson protected void setUp() throws Exception { 7914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadOnlyFileChannel = File.createTempFile( 8014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson "File_of_readOnlyFileChannel", "tmp"); 8114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadOnlyFileChannel.deleteOnExit(); 8214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfWriteOnlyFileChannel = File.createTempFile( 8314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson "File_of_writeOnlyFileChannel", "tmp"); 8414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfWriteOnlyFileChannel.deleteOnExit(); 8514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadWriteFileChannel = File.createTempFile( 8614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson "File_of_readWriteFileChannel", "tmp"); 8714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadWriteFileChannel.deleteOnExit(); 8814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis = null; 8914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileLock = null; 9014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel = new FileInputStream(fileOfReadOnlyFileChannel) 9114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson .getChannel(); 9214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel = new FileOutputStream(fileOfWriteOnlyFileChannel) 9314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson .getChannel(); 9414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel = new RandomAccessFile(fileOfReadWriteFileChannel, 9514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson "rw").getChannel(); 9614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 9714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 9814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson protected void tearDown() { 9914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != readOnlyFileChannel) { 10014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 10114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 10214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 10314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // do nothing 10414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 10514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 10614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != writeOnlyFileChannel) { 10714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 10814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 10914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 11014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // do nothing 11114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 11214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 11314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != readWriteFileChannel) { 11414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 11514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 11614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 11714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // do nothing 11814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 11914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 12014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != fis) { 12114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 12214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.close(); 12314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 12414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // do nothing 12514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 12614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 12714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 12814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != fileLock) { 12914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 13014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileLock.release(); 13114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 13214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // do nothing 13314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 13414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 13514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 13614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != fileOfReadOnlyFileChannel) { 13714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadOnlyFileChannel.delete(); 13814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 13914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != fileOfWriteOnlyFileChannel) { 14014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfWriteOnlyFileChannel.delete(); 14114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 14214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson if (null != fileOfReadWriteFileChannel) { 14314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fileOfReadWriteFileChannel.delete(); 14414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 14514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 14614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 14714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_forceZ() throws Exception { 14814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 14914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer); 15014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.force(true); 15114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 15214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson byte[] readBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 15314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis = new FileInputStream(fileOfWriteOnlyFileChannel); 15414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.read(readBuffer); 15514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertTrue(Arrays.equals(CONTENT_AS_BYTES, readBuffer)); 15614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 15714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer); 15814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.force(false); 159dbde5bd893290c02bb289460fc61e48eda63daa2Elliott Hughes fis.close(); 16014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 16114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 16214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis = new FileInputStream(fileOfWriteOnlyFileChannel); 16314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.read(readBuffer); 16414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertTrue(Arrays.equals(CONTENT_AS_BYTES, readBuffer)); 165dbde5bd893290c02bb289460fc61e48eda63daa2Elliott Hughes fis.close(); 16614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 16714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 16814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 16914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson /** 17014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * Initializes test file. 17114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * 17214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @param file 17314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @throws FileNotFoundException 17414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @throws IOException 17514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson */ 17614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private void writeDataToFile(File file) throws FileNotFoundException, 17714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson IOException { 17814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson FileOutputStream fos = new FileOutputStream(file); 17914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 18014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fos.write(CONTENT_AS_BYTES); 18114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } finally { 18214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fos.close(); 18314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 18414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 18514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 18614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson /** 18714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * Initializes large test file. 18814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * 18914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @param file the file to be written 19014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @param size the content size to be written 19114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @throws FileNotFoundException 19214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson * @throws IOException 19314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson */ 19414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private void writeLargeDataToFile(File file, int size) 19514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson throws FileNotFoundException, IOException { 19614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson FileOutputStream fos = new FileOutputStream(file); 19714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson byte[] buf = new byte[size]; 19814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 19914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 20014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // we don't care about content - just need a particular file size 20114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fos.write(buf); 20214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } finally { 20314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fos.close(); 20414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 20514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 20614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 20714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_tryLockJJZ_IllegalArgument() throws Exception { 20814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 20914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.tryLock(0, -1, false); 21014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 21114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 21214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 21314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 21414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 21514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 21614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.tryLock(-1, 0, false); 21714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 21814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 21914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 22014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 22114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 22214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 22314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.tryLock(-1, -1, false); 22414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 22514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 22614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 22714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 22814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 22914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 23014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.tryLock(Long.MAX_VALUE, 1, false); 23114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 23214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 23314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 23414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 2353d09992b375338188c75268dddbe07635a505bbeJesse Wilson } 23614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 2373d09992b375338188c75268dddbe07635a505bbeJesse Wilson public void testTryLockVeryLarge() throws IOException { 2383d09992b375338188c75268dddbe07635a505bbeJesse Wilson long tooBig = Integer.MAX_VALUE + 1L; 2393d09992b375338188c75268dddbe07635a505bbeJesse Wilson FileLock lock = readWriteFileChannel.tryLock(tooBig, 1, false); 2403d09992b375338188c75268dddbe07635a505bbeJesse Wilson assertLockFails(tooBig, 1); 2413d09992b375338188c75268dddbe07635a505bbeJesse Wilson lock.release(); 2423d09992b375338188c75268dddbe07635a505bbeJesse Wilson 2433d09992b375338188c75268dddbe07635a505bbeJesse Wilson lock = readWriteFileChannel.tryLock(0, tooBig, false); 2443d09992b375338188c75268dddbe07635a505bbeJesse Wilson assertLockFails(0, 1); 2453d09992b375338188c75268dddbe07635a505bbeJesse Wilson lock.release(); 2463d09992b375338188c75268dddbe07635a505bbeJesse Wilson } 2473d09992b375338188c75268dddbe07635a505bbeJesse Wilson 2483d09992b375338188c75268dddbe07635a505bbeJesse Wilson public void testTryLockOverlapping() throws IOException { 2493d09992b375338188c75268dddbe07635a505bbeJesse Wilson FileLock lockOne = readWriteFileChannel.tryLock(0, 10, false); 2503d09992b375338188c75268dddbe07635a505bbeJesse Wilson FileLock lockTwo = readWriteFileChannel.tryLock(10, 20, false); 2513d09992b375338188c75268dddbe07635a505bbeJesse Wilson assertLockFails(0, 10); 2523d09992b375338188c75268dddbe07635a505bbeJesse Wilson lockOne.release(); 2533d09992b375338188c75268dddbe07635a505bbeJesse Wilson assertLockFails(5, 10); 2543d09992b375338188c75268dddbe07635a505bbeJesse Wilson lockOne = readWriteFileChannel.tryLock(0, 10, false); 2553d09992b375338188c75268dddbe07635a505bbeJesse Wilson lockTwo.release(); 2563d09992b375338188c75268dddbe07635a505bbeJesse Wilson lockOne.release(); 25714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 25814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 25914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_readLByteBufferJ_IllegalArgument() throws Exception { 26014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 26114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 26214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 26314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(readBuffer, -1); 26414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 26514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 26614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 26714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 26814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 26914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 27014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(readBuffer, -1); 27114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 27214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 27314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 27414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 27514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 27614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 27714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(readBuffer, -1); 27814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 27914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 28014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 28114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 28214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 28314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // throws IllegalArgumentException first. 28414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 28514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 28614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(readBuffer, -1); 28714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 28814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 28914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 29014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 29114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 29214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 29314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 29414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(readBuffer, -1); 29514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 29614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 29714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 29814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 29914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 30014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 30114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 30214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(readBuffer, -1); 30314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 30414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 30514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 30614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 30714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 30814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 30914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_read$LByteBufferII_Null() throws Exception { 31014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 31114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 31214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 0, 1); 31314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 31414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 31514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 31614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 31714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 31814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 0, 3); 31914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 32014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 32114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 32214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 32314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 32414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 1, 2); 32514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 32614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 32714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 32814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 32914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 33014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 2, 1); 33114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 33214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 33314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 33414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 33514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 33614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 3, 0); 33714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 33814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 33914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 34014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 34114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 34214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 34314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 0, 1); 34414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 34514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 34614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 34714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 34814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 34914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 0, 3); 35014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 35114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 35214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 35314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 35414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 35514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 1, 2); 35614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 35714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 35814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 35914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 36014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 36114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 2, 1); 36214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 36314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 36414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 36514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 36614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 36714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 3, 0); 36814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 36914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 37014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 37114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 37214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 37314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 37414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 0, 1); 37514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 37614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 37714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 37814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 37914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 38014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 0, 3); 38114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 38214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 38314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 38414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 38514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 38614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 1, 2); 38714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 38814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 38914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 39014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 39114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 39214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 2, 1); 39314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 39414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 39514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 39614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 39714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 39814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 3, 0); 39914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 40014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 40114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 40214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 40314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 40414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // first throws NullPointerException 40514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 40614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 40714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 0, 1); 40814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 40914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 41014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 41114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 41214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 41314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 0, 3); 41414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 41514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 41614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 41714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 41814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 41914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 1, 2); 42014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 42114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 42214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 42314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 42414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 42514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 2, 1); 42614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 42714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 42814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 42914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 43014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 43114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 3, 0); 43214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 43314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 43414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 43514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 43614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 43714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 43814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 43914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 0, 1); 44014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 44114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 44214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 44314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 44414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 44514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 0, 3); 44614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 44714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 44814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 44914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 45014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 45114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 1, 2); 45214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 45314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 45414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 45514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 45614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 45714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 2, 1); 45814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 45914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 46014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 46114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 46214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 46314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 3, 0); 46414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 46514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 46614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 46714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 46814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 46914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 47014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 47114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 0, 1); 47214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 47314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 47414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 47514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 47614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 47714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 0, 3); 47814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 47914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 48014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 48114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 48214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 48314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 1, 2); 48414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 48514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 48614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 48714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 48814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 48914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 2, 1); 49014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 49114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 49214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 49314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 49414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 49514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 3, 0); 49614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 49714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 49814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 49914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 50014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 50114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 50214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 50314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson private void doTestForIOOBException(FileChannel channel, 50414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] buffer) throws IOException{ 50514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 50614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, -1, 0); 50714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 50814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 50914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 51014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 51114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 51214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, 0, -1); 51314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 51414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 51514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 51614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 51714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 51814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, 0, 3); 51914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 52014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 52114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 52214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 52314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 52414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, 1, 2); 52514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 52614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 52714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 52814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 52914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 53014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, 2, 1); 53114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 53214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 53314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 53414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 53514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 53614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson channel.read(buffer, 3, 0); 53714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 53814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 53914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 54014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 54114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 54252b939cbcc060c6bf71b65f2588e9837a86f7c5fElliott Hughes 54314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_read$LByteBufferII_IndexOutOfBound() throws Exception { 54414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] readBuffers = new ByteBuffer[2]; 54514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[0] = ByteBuffer.allocate(CAPACITY); 54614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[1] = ByteBuffer.allocate(CAPACITY); 54714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] readBuffersNull = new ByteBuffer[2]; 54814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 54914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readOnlyFileChannel, readBuffers); 55014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readWriteFileChannel, readBuffers); 55114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(writeOnlyFileChannel, readBuffers); 55214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 55314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readOnlyFileChannel, readBuffersNull); 55414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readWriteFileChannel, readBuffersNull); 55514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(writeOnlyFileChannel, readBuffersNull); 55614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 55714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, -1, 0); 55814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 559617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 560617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 56114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 56214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 56314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(null, 0, -1); 56414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 565617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 566617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 56714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 56814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 56914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 57014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, -1, 0); 57114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 572617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 573617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 57414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 57514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 57614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read(null, 0, -1); 57714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 578617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 579617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 58014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 58114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 58214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 58314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, -1, 0); 58414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 585617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 586617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 58714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 58814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 58914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.read(null, 0, -1); 59014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundException"); 591617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (NullPointerException expected) { 592617329e227c071828c4b2616f548d0e0f29cd75aJesse Wilson } catch (IndexOutOfBoundsException expected) { 59314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 59414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 59514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 59614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readOnlyFileChannel, readBuffers); 59714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readOnlyFileChannel, readBuffersNull); 59814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 59914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 60014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readWriteFileChannel, readBuffers); 60114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(readWriteFileChannel, readBuffersNull); 60214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 60314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 60414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(writeOnlyFileChannel, readBuffers); 60514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson doTestForIOOBException(writeOnlyFileChannel, readBuffersNull); 60614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 60714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 60814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_read$LByteBufferII_EmptyFile() throws Exception { 60914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] readBuffers = new ByteBuffer[2]; 61014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[0] = ByteBuffer.allocate(CAPACITY); 61114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[1] = ByteBuffer.allocate(CAPACITY); 61214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson long result = readOnlyFileChannel.read(readBuffers, 0, 2); 61314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(-1, result); 61414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(0, readBuffers[0].position()); 61514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(0, readBuffers[1].position()); 61614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 61714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 61814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_read$LByteBufferII_EmptyBuffers() throws Exception { 61914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] readBuffers = new ByteBuffer[2]; 62014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[0] = ByteBuffer.allocate(CAPACITY); 62114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 62214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 62314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(readBuffers, 0, 2); 62414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 62514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 62614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 62714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 62814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeDataToFile(fileOfReadOnlyFileChannel); 62914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readBuffers[0] = ByteBuffer.allocate(CAPACITY); 63014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 63114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.read(readBuffers, 0, 2); 63214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 63314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 63414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 63514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 63614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson long result = readOnlyFileChannel.read(readBuffers, 0, 1); 63714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH, result); 63814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 63914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 64014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_isOpen() throws Exception { 64114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // Regression for HARMONY-40 64214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson File logFile = File.createTempFile("out", "tmp"); 64314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson logFile.deleteOnExit(); 64414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson FileOutputStream out = new FileOutputStream(logFile, true); 64514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson FileChannel channel = out.getChannel(); 64614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson out.write(1); 64714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertTrue("Assert 0: Channel is not open", channel.isOpen()); 64814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson out.close(); 64914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertFalse("Assert 0: Channel is still open", channel.isOpen()); 65014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 65114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 65214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_writeLByteBuffer_Closed() throws Exception { 65314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 65414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 65514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 65614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 65714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffer); 65814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 65914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 66014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 66114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 66214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 66314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 66414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 66514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer); 66614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 66714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 66814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 66914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 67014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 67114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 67214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 67314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffer); 67414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 67514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 67614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 67714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 67814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 67914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // should throw ClosedChannelException first 68014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 68114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.read((ByteBuffer) null); 68214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 68314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 68414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 68514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 68614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 68714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 68814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write((ByteBuffer) null); 68914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 69014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 69114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 69214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 69314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 69414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 69514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 69614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write((ByteBuffer) null); 69714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 69814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 69914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 70014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 70114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 70214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 70314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_writeLByteBufferJ_Postion_As_Long() throws Exception { 70414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer writeBuffer = ByteBuffer.wrap(TEST_BYTES); 70514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 70614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer, Long.MAX_VALUE); 70714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IOException e) { 70814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 70914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 71014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 71114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 71214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_writeLByteBufferJ_IllegalArgument() throws Exception { 71314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 71414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 71514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 71614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffer, -1); 71714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 71814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 71914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 72014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 72114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 72214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 72314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer, -1); 72414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 72514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 72614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 72714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 72814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 72914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 73014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffer, -1); 73114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 73214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 73314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 73414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 73514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 73614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // throws IllegalArgumentException first. 73714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 73814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 73914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffer, -1); 74014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 74114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 74214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 74314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 74414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 74514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 74614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 74714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffer, -1); 74814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 74914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 75014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 75114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 75214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 75314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 75414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 75514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffer, -1); 75614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException"); 75714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 75814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 75914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 76014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 76114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 76214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_writeLByteBufferJ_NonZeroPosition() throws Exception { 76314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson final int pos = 5; 76414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 76514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffer.position(pos); 76614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson int result = writeOnlyFileChannel.write(writeBuffer, pos); 76714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH - pos, result); 76814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffer.position()); 76914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 77014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 77114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH, fileOfWriteOnlyFileChannel 77214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson .length()); 77314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 77414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis = new FileInputStream(fileOfWriteOnlyFileChannel); 77514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH - pos]; 77614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.skip(pos); 77714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.read(inputBuffer); 77814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson String test = CONTENT.substring(pos); 77914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertTrue(Arrays.equals(test.getBytes(), inputBuffer)); 78014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 78114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 78214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBuffer_Closed() throws Exception { 78314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 78414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 78514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 78614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 78714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 78814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 78914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers); 79014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 79114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 79214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 79314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 79414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 79514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 79614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 79714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers); 79814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 79914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 80014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 80114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 80214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 80314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 80414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 80514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers); 80614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw ClosedChannelException"); 80714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (ClosedChannelException e) { 80814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 80914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 81014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 81114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 81214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBuffer_ReadOnly() throws Exception { 81314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 81414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 81514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 81614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 81714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 81814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers); 81914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NonWritableChannelException"); 82014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NonWritableChannelException e) { 82114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 82214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 82314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 82414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 82514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBuffer_EmptyBuffers() throws Exception { 82614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 82714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 82814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 82914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers); 83014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 83114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 83214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 83314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 83414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 83514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 83614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers); 83714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 83814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 83914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 84014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 84114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 84214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 84314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBuffer() throws Exception { 84414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 84514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.wrap(CONTENT_AS_BYTES); 84614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[1] = ByteBuffer.wrap(CONTENT_AS_BYTES); 84714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 84814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson long result = writeOnlyFileChannel.write(writeBuffers); 84914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH * 2, result); 85014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[0].position()); 85114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[1].position()); 85214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 85314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 85414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertEquals(CONTENT_AS_BYTES_LENGTH * 2, fileOfWriteOnlyFileChannel 85514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson .length()); 85614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 85714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis = new FileInputStream(fileOfWriteOnlyFileChannel); 85814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 85914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fis.read(inputBuffer); 86014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson byte[] expectedResult = new byte[CONTENT_AS_BYTES_LENGTH * 2]; 86114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 0, 86214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson CONTENT_AS_BYTES_LENGTH); 86314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 86414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson CONTENT_AS_BYTES_LENGTH, CONTENT_AS_BYTES_LENGTH); 86514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson assertTrue(Arrays.equals(CONTENT_AS_BYTES, inputBuffer)); 86614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 86714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 86814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBufferII_Null() throws Exception { 86914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = null; 87014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 87114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 87214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 1, 2); 87314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 87414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 87514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 87614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 87714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 87814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 87914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 1, 2); 88014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 88114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 88214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 88314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 88414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 88514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 88614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 1, 2); 88714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 88814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 88914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 89014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 89114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 89214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // first throws NullPointerException 89314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.close(); 89414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 89514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 1, 2); 89614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 89714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 89814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 89914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 90014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 90114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.close(); 90214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 90314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 1, 2); 90414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 90514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 90614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 90714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 90814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 90914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.close(); 91014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 91114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 1, 2); 91214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 91314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 91414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 91514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 91614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 91752b939cbcc060c6bf71b65f2588e9837a86f7c5fElliott Hughes 91814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBufferII_IndexOutOfBound() throws Exception { 91914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 92014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 92114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[1] = ByteBuffer.allocate(this.CONTENT_LENGTH); 92214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 92314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 92414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, -1, 0); 92514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 92614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 92714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 92814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 92914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 93014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 0, -1); 93114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 93214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 93314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 93414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 93514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 93614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 0, 3); 93714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 93814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 93914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 94014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 94114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 94214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 1, 2); 94314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 94414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 94514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 94614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 94714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 94814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 2, 1); 94914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 95014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 95114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 95214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 95314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 95414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 3, 0); 95514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 95614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 95714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 95814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 95914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 96014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 96114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, -1, 0); 96214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 96314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 96414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 96514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 96614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 96714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 0, -1); 96814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 96914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 97014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 97114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 97214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 97314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 0, 3); 97414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 97514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 97614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 97714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 97814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 97914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 1, 2); 98014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 98114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 98214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 98314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 98414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 98514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 2, 1); 98614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 98714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 98814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 98914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 99014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 99114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 3, 0); 99214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 99314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 99414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 99514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 99614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 99714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 99814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, -1, 0); 99914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 100014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 100114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 100214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 100314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 100414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 0, -1); 100514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 100614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 100714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 100814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 100914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 101014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 0, 3); 101114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 101214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 101314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 101414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 101514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 101614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 1, 2); 101714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 101814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 101914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 102014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 102114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 102214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 2, 1); 102314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 102414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 102514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 102614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 102714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 102814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.write(writeBuffers, 3, 0); 102914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IndexOutOfBoundsException"); 103014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IndexOutOfBoundsException e) { 103114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 103214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 103314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 103414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 103514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_write$LByteBufferII_EmptyBuffers() throws Exception { 103614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson ByteBuffer[] writeBuffers = new ByteBuffer[2]; 103714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 103814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 103914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson writeOnlyFileChannel.write(writeBuffers, 0, 2); 104014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 104114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 104214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 104314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 104414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 104514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 104614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.write(writeBuffers, 0, 2); 104714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw NullPointerException"); 104814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (NullPointerException e) { 104914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 105014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 105114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 105214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 105314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson public void test_transferToJJLWritableByteChannel_IllegalArgument() 105414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson throws Exception { 105514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson WritableByteChannel writableByteChannel = DatagramChannel.open(); 105614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 105714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readOnlyFileChannel.transferTo(10, -1, writableByteChannel); 105814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException."); 105914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 106014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 106114816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 106214816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 106314816f17144d90174628ee82dc616d4b9c921149Jesse Wilson try { 106414816f17144d90174628ee82dc616d4b9c921149Jesse Wilson readWriteFileChannel.transferTo(-1, 10, writableByteChannel); 106514816f17144d90174628ee82dc616d4b9c921149Jesse Wilson fail("should throw IllegalArgumentException."); 106614816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } catch (IllegalArgumentException e) { 106714816f17144d90174628ee82dc616d4b9c921149Jesse Wilson // expected 106814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 106914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson } 107014816f17144d90174628ee82dc616d4b9c921149Jesse Wilson 10713d09992b375338188c75268dddbe07635a505bbeJesse Wilson private void assertLockFails(long position, long size) throws IOException { 10723d09992b375338188c75268dddbe07635a505bbeJesse Wilson try { 10733d09992b375338188c75268dddbe07635a505bbeJesse Wilson readWriteFileChannel.tryLock(position, size, false); 10743d09992b375338188c75268dddbe07635a505bbeJesse Wilson fail(); 10753d09992b375338188c75268dddbe07635a505bbeJesse Wilson } catch (OverlappingFileLockException expected) { 10763d09992b375338188c75268dddbe07635a505bbeJesse Wilson } 10773d09992b375338188c75268dddbe07635a505bbeJesse Wilson } 107814816f17144d90174628ee82dc616d4b9c921149Jesse Wilson} 1079