1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.nio.tests.java.nio.channels; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.AndroidOnly; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileInputStream; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileNotFoundException; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileOutputStream; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.RandomAccessFile; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.UnsupportedEncodingException; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.InetAddress; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.InetSocketAddress; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.BufferOverflowException; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ByteBuffer; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.MappedByteBuffer; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ReadOnlyBufferException; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.ClosedChannelException; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.DatagramChannel; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.FileChannel; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.FileLock; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.NonReadableChannelException; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.NonWritableChannelException; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.OverlappingFileLockException; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.Pipe; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.ReadableByteChannel; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.ServerSocketChannel; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.SocketChannel; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.WritableByteChannel; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.FileChannel.MapMode; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.platform.Platform; 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass( 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project value = FileChannel.class, 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project untestedMethods = { 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.NOT_NECESSARY, 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "empty protected constructor", 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileChannel", 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project) 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class FileChannelTest extends TestCase { 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final int CAPACITY = 100; 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final int LIMITED_CAPACITY = 2; 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final int TIME_OUT = 10000; 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String CONTENT = "MYTESTSTRING needs to be a little long"; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final byte[] TEST_BYTES; 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TEST_BYTES = "test".getBytes("iso8859-1"); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnsupportedEncodingException e) { 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new Error(e); 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final int CONTENT_LENGTH = CONTENT.length(); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final byte[] CONTENT_AS_BYTES = CONTENT.getBytes(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final int CONTENT_AS_BYTES_LENGTH = CONTENT_AS_BYTES.length; 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private FileChannel readOnlyFileChannel; 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private FileChannel writeOnlyFileChannel; 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private FileChannel readWriteFileChannel; 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private File fileOfReadOnlyFileChannel; 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private File fileOfWriteOnlyFileChannel; 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private File fileOfReadWriteFileChannel; 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private ReadableByteChannel readByteChannel; 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private WritableByteChannel writableByteChannel; 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private DatagramChannel datagramChannelSender; 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private DatagramChannel datagramChannelReceiver; 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private ServerSocketChannel serverSocketChannel; 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private SocketChannel socketChannelSender; 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private SocketChannel socketChannelReceiver; 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Pipe pipe; 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // to read content from FileChannel 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private FileInputStream fis; 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private FileLock fileLock; 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel = File.createTempFile( 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "File_of_readOnlyFileChannel", "tmp"); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel.deleteOnExit(); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfWriteOnlyFileChannel = File.createTempFile( 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "File_of_writeOnlyFileChannel", "tmp"); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfWriteOnlyFileChannel.deleteOnExit(); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadWriteFileChannel = File.createTempFile( 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "File_of_readWriteFileChannel", "tmp"); 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadWriteFileChannel.deleteOnExit(); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = null; 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = null; 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel = new FileInputStream(fileOfReadOnlyFileChannel) 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getChannel(); 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel = new FileOutputStream(fileOfWriteOnlyFileChannel) 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getChannel(); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel = new RandomAccessFile(fileOfReadWriteFileChannel, 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "rw").getChannel(); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() { 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != readOnlyFileChannel) { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != writeOnlyFileChannel) { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != readWriteFileChannel) { 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != fis) { 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.close(); 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != fileLock) { 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock.release(); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != fileOfReadOnlyFileChannel) { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel.delete(); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != fileOfWriteOnlyFileChannel) { 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfWriteOnlyFileChannel.delete(); 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != fileOfReadWriteFileChannel) { 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadWriteFileChannel.delete(); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != datagramChannelSender) { 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.close(); 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != datagramChannelReceiver) { 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.close(); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != serverSocketChannel) { 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel.close(); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != socketChannelSender) { 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender.close(); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != socketChannelReceiver) { 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.close(); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != pipe) { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != pipe.source()) { 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pipe.source().close(); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != pipe.sink()) { 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pipe.sink().close(); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#force(boolean) 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "force", 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_forceZ() throws Exception { 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.force(true); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] readBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(readBuffer); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, readBuffer)); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.force(false); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(readBuffer); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, readBuffer)); 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#force(boolean) 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "force", 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_forceZ_closed() throws Exception { 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.force(true); 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.force(false); 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#force(boolean) 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "force", 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_forceZ_ReadOnlyChannel() throws Exception { 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // force on a read only file channel has no effect. 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.force(true); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.force(false); 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_Init() throws Exception { 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, writeOnlyFileChannel.position()); 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.position()); 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_ReadOnly() throws Exception { 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer); 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, readOnlyFileChannel.position()); 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Initializes test file. 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param file 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IOException 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void writeDataToFile(File file) throws FileNotFoundException, 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IOException { 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileOutputStream fos = new FileOutputStream(file); 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.write(CONTENT_AS_BYTES); 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.close(); 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Initializes large test file. 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param file the file to be written 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param size the content size to be written 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IOException 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void writeLargeDataToFile(File file, int size) 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws FileNotFoundException, IOException { 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileOutputStream fos = new FileOutputStream(file); 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[size]; 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // we don't care about content - just need a particular file size 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.write(buf); 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.close(); 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_WriteOnly() throws Exception { 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, writeOnlyFileChannel.position()); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_ReadWrite() throws Exception { 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadWriteFileChannel); 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.position()); 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer); 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, readWriteFileChannel.position()); 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer); 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH * 2, readWriteFileChannel.position()); 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_Closed() throws Exception { 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(); 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(); 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.position(); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position(long) 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_positionJ_Closed() throws Exception { 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(POSITION); 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(POSITION); 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.position(POSITION); 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position(long) 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_positionJ_Negative() throws Exception { 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long NEGATIVE_POSITION = -1; 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(NEGATIVE_POSITION); 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(NEGATIVE_POSITION); 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.position(NEGATIVE_POSITION); 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position(long) 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_positionJ_ReadOnly() throws Exception { 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set the position of the read only file channel to POSITION 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 4; 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(POSITION); 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reads the content left to readBuffer through read only file channel 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int count = readOnlyFileChannel.read(readBuffer); 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - POSITION, count); 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // asserts the content read is the part which stays beyond the POSITION 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = POSITION; 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (readBuffer.hasRemaining()) { 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project i++; 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position(long) 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_positionJ_WriteOnly() throws Exception { 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // init data to write 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set the position of the write only file channel to POSITION 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 4; 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(POSITION); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // writes to the write only file channel 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // force to write out. 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets the result of the write only file channel 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] result = new byte[POSITION + CONTENT_LENGTH]; 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(result); 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // constructs the expected result which has content[0... POSITION] plus 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // content[0...length()] 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedResult = new byte[POSITION + CONTENT_LENGTH]; 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 0, POSITION); 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, POSITION, 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_LENGTH); 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // asserts result of the write only file channel same as expected 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(expectedResult, result)); 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#size() 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies zero size.", 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "size", 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_size_Init() throws Exception { 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.size()); 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, writeOnlyFileChannel.size()); 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.size()); 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#size() 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies positive case.", 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "size", 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_size() throws Exception { 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(fileOfReadOnlyFileChannel.length(), readOnlyFileChannel 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .size()); 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#size() 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "size", 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_size_Closed() throws Exception { 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.size(); 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.size(); 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.size(); 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#truncate(long) 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "truncate", 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_truncateJ_Closed() throws Exception { 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.truncate(0); 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.truncate(0); 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.truncate(-1); 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#truncate(long) 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "truncate", 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_truncateJ_IllegalArgument() throws Exception { 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-941 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.truncate(-1); 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.truncate(-1); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.truncate(-1); 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#truncate(long) 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException.", 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "truncate", 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_truncateJ_ReadOnly() throws Exception { 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.truncate(readOnlyFileChannel.size()); 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.truncate(0); 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#truncate(long) 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify exceptions.", 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "truncate", 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_truncateJ() throws Exception { 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadWriteFileChannel); 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int truncateLength = CONTENT_LENGTH + 2; 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(readWriteFileChannel, readWriteFileChannel 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .truncate(truncateLength)); 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, fileOfReadWriteFileChannel.length()); 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project truncateLength = CONTENT_LENGTH; 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(readWriteFileChannel, readWriteFileChannel 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .truncate(truncateLength)); 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, fileOfReadWriteFileChannel.length()); 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project truncateLength = CONTENT_LENGTH / 2; 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(readWriteFileChannel, readWriteFileChannel 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .truncate(truncateLength)); 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(truncateLength, fileOfReadWriteFileChannel.length()); 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock() 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lock() throws Exception { 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockFileChannel mockFileChannel = new MockFileChannel(); 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Verify that calling lock() leads to the method 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // lock(long, long, boolean) being called with a 0 for the 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first parameter, Long.MAX_VALUE as the second parameter and false 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // as the third parameter. 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockFileChannel.lock(); 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockFileChannel.isLockCalled); 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_Closed() throws Exception { 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.lock(0, 10, false); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(0, 10, false); 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.lock(0, 10, false); 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws ClosedChannelException before IllegalArgumentException 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.lock(-1, 0, false); 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_IllegalArgument() throws Exception { 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(0, -1, false); 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(-1, 0, false); 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.lock(-1, -1, false); 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.lock(Long.MAX_VALUE, 1, false); 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException.", 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_NonWritable() throws Exception { 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.lock(0, 10, false); 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws NonWritableChannelException before IllegalArgumentException 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.lock(-1, 0, false); 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonReadableChannelException.", 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_NonReadable() throws Exception { 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(0, 10, true); 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws NonReadableChannelException before IllegalArgumentException 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(-1, 0, true); 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies shared channel.", 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_Shared() throws Exception { 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = readOnlyFileChannel.lock(POSITION, SIZE, true); 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // fileLock.isShared depends on whether the underlying platform support 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shared lock, but it works on Windows & Linux. 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isShared()); 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(readOnlyFileChannel, fileLock.channel()); 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that unshared channel.", 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_NotShared() throws Exception { 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.lock(POSITION, SIZE, false); 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(fileLock.isShared()); 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(writeOnlyFileChannel, fileLock.channel()); 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies lock method with Long max value as a size.", 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_Long_MAX_VALUE() throws Exception { 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 0; 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = Long.MAX_VALUE; 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = readOnlyFileChannel.lock(POSITION, SIZE, true); 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isShared()); 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(readOnlyFileChannel, fileLock.channel()); 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies OverlappingFileLockException.", 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_Overlapping() throws Exception { 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.lock(POSITION, SIZE, false); 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(POSITION + 1, SIZE, false); 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw OverlappingFileLockException"); 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (OverlappingFileLockException e) { 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long, long, boolean) 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that not overlaping regions can be locked.", 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_NotOverlapping() throws Exception { 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileLock fileLock1 = writeOnlyFileChannel.lock(POSITION, SIZE, false); 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock1.isValid()); 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileLock fileLock2 = writeOnlyFileChannel.lock(POSITION + SIZE, SIZE, 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock2.isValid()); 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#lock(long,long,boolean) 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies functionality after release method.", 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lock", 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_lockJJZ_After_Release() throws Exception { 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.lock(0, 10, false); 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock.release(); 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // after release file lock can be obtained again. 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.lock(0, 10, false); 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock() 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLock() throws Exception { 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockFileChannel mockFileChannel = new MockFileChannel(); 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Verify that calling tryLock() leads to the method 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // tryLock(long, long, boolean) being called with a 0 for the 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first parameter, Long.MAX_VALUE as the second parameter and false 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // as the third parameter. 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockFileChannel.tryLock(); 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockFileChannel.isTryLockCalled); 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_Closed() throws Exception { 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.tryLock(0, 10, false); 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.tryLock(0, 10, false); 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.tryLock(0, 10, false); 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws ClosedChannelException before IllegalArgumentException 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.tryLock(-1, 0, false); 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_IllegalArgument() throws Exception { 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.tryLock(0, -1, false); 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.tryLock(-1, 0, false); 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.tryLock(-1, -1, false); 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.tryLock(Long.MAX_VALUE, 1, false); 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1158e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes 1159e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // BEGIN android-added 1160e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // Android uses 32-bit off_t, so anything larger than a signed 32-bit int won't work... 1161e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // ...except for the special case of length == Long.MAX_VALUE, which is used to mean "the 1162e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // whole file". The special case is tested elsewhere. 1163e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes long tooBig = ((long) Integer.MAX_VALUE) + 1; 1164e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes try { 1165e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes readWriteFileChannel.tryLock(tooBig, 1, false); 1166e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes fail("should throw IOException"); 1167e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes } catch (IOException e) { 1168e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // expected 1169e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes } 1170e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes try { 1171e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes readWriteFileChannel.tryLock(0, tooBig, false); 1172e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes fail("should throw IOException"); 1173e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes } catch (IOException e) { 1174e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // expected 1175e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes } 1176e96ca9b63920887425c6d4603a974a607b8a2b8aElliott Hughes // END android-added 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException.", 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_NonWritable() throws Exception { 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.tryLock(0, 10, false); 1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws NonWritableChannelException before IllegalArgumentException 1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.tryLock(-1, 0, false); 1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonReadableChannelException.", 1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_NonReadable() throws Exception { 1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.tryLock(0, 10, true); 1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws NonReadableChannelException before IllegalArgumentException 1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.tryLock(-1, 0, true); 1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_Shared() throws Exception { 1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = readOnlyFileChannel.tryLock(POSITION, SIZE, true); 1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // fileLock.isShared depends on whether the underlying platform support 1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shared lock, but it works on Windows & Linux. 1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isShared()); 1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(readOnlyFileChannel, fileLock.channel()); 1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_NotShared() throws Exception { 1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.tryLock(POSITION, SIZE, false); 1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(fileLock.isShared()); 1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(writeOnlyFileChannel, fileLock.channel()); 1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_Long_MAX_VALUE() throws Exception { 1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 0; 1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = Long.MAX_VALUE; 1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = readOnlyFileChannel.tryLock(POSITION, SIZE, true); 1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isShared()); 1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, fileLock.position()); 1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(SIZE, fileLock.size()); 1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(readOnlyFileChannel, fileLock.channel()); 1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies OverlappingFileLockException.", 1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_Overlapping() throws Exception { 1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.lock(POSITION, SIZE, false); 1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.lock(POSITION + 1, SIZE, false); 1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw OverlappingFileLockException"); 1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (OverlappingFileLockException e) { 1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long, long, boolean) 1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_NotOverlapping() throws Exception { 1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long POSITION = 100; 1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final long SIZE = 200; 1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileLock fileLock1 = writeOnlyFileChannel 1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .tryLock(POSITION, SIZE, false); 1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock1.isValid()); 1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileLock fileLock2 = writeOnlyFileChannel.tryLock(POSITION + SIZE, 1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SIZE, false); 1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock2.isValid()); 1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#tryLock(long,long,boolean) 1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "tryLock", 1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, boolean.class} 1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_tryLockJJZ_After_Release() throws Exception { 1347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.tryLock(0, 10, false); 1348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock.release(); 1349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // after release file lock can be obtained again. 1351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileLock = writeOnlyFileChannel.tryLock(0, 10, false); 1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(fileLock.isValid()); 1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer_Null() throws Exception { 1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = null; 1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer); 1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer); 1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer_Closed() throws Exception { 1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer); 1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer); 1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 1411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer); 1413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first 1419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer = null; 1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer); 1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer); 1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer); 1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonReadableChannelException.", 1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer_WriteOnly() throws Exception { 1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer); 1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NonReadableChannelException 1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer = null; 1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer); 1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer_EmptyFile() throws Exception { 1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer); 1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(-1, result); 1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffer.position()); 1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer_LimitedCapacity() throws Exception { 1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 1498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(LIMITED_CAPACITY); 1500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer); 1501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LIMITED_CAPACITY, result); 1502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LIMITED_CAPACITY, readBuffer.position()); 1503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 1504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < LIMITED_CAPACITY; i++) { 1505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 1506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer) 1511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 1517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBuffer() throws Exception { 1519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 1520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CONTENT_AS_BYTES_LENGTH); 1522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer); 1523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 1524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, readBuffer.position()); 1525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 1526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < CONTENT_AS_BYTES_LENGTH; i++) { 1527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 1528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer, long) 1533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 1537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_Null() throws Exception { 1541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = null; 1542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, 0); 1545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 1551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, -1); 1553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, 0); 1560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 1566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, -1); 1568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, 0); 1575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 1581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, -1); 1583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 1589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 1590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, 0); 1592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, -1); 1599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 1605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, 0); 1607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, -1); 1614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, 0); 1622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, -1); 1629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer, long) 1637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 1641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_Closed() throws Exception { 1645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, 0); 1650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 1656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, 0); 1658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 1659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 1660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer, long) 1666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 1670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_IllegalArgument() throws Exception { 1674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, -1); 1678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, -1); 1685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, -1); 1692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws IllegalArgumentException first. 1698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, -1); 1701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 1707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, -1); 1709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 1715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffer, -1); 1717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 1718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer, long) 1725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonReadableChannelException.", 1729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_WriteOnly() throws Exception { 1733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, 0); 1737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws NonReadableChannelException first. 1743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 1744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffer, 0); 1746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 1747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 1748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer,long) 1754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_Emptyfile() throws Exception { 1762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer, 0); 1764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(-1, result); 1765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffer.position()); 1766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer,long) 1770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_Postion_BeyondFileLimit() 1778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 1779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 1781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer, 1784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES.length); 1785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(-1, result); 1786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffer.position()); 1787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer,long) 1791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IOException.", 1795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ_Postion_As_Long() throws Exception { 1799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffer, Long.MAX_VALUE); 1802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 1803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer,long) 1809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 1815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLByteBufferJ() throws Exception { 1817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 1818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CAPACITY); 1819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int BUFFER_POSITION = 1; 1821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.position(BUFFER_POSITION); 1822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 2; 1824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = readOnlyFileChannel.read(readBuffer, POSITION); 1825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH - POSITION, result); 1826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(BUFFER_POSITION + result, readBuffer.position()); 1827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 1829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.position(BUFFER_POSITION); 1830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = POSITION; i < CONTENT_AS_BYTES_LENGTH; i++) { 1831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 1832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[]) 1837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 1843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBuffer_Regression() throws Exception { 1845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-849 1846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 1847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 1848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 1849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(CAPACITY); 1850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long readCount = readOnlyFileChannel.read(readBuffers); 1852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, readCount); 1853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, readBuffers[0].position()); 1854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffers[1].position()); 1855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0].flip(); 1856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < CONTENT_AS_BYTES_LENGTH; i++) { 1857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffers[0].get()); 1858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[]) 1863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 1869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBuffer() throws Exception { 1871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileChannel mockChannel = new MockFileChannel(); 1872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] buffers = new ByteBuffer[2]; 1873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockChannel.read(buffers); 1874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Verify that calling read(ByteBuffer[] dsts) leads to the method 1875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read(dsts, 0, dsts.length) 1876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(((MockFileChannel)mockChannel).isReadCalled); 1877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 1881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 1886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 1887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_Null() throws Exception { 1889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 0, 1); 1892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 0, 3); 1898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 1, 2); 1904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 2, 1); 1910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 3, 0); 1916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 0, 1); 1923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 0, 3); 1929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 1, 2); 1935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 2, 1); 1941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 3, 0); 1947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 0, 1); 1954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 0, 3); 1960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 1, 2); 1966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 2, 1); 1972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 3, 0); 1978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 1984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 1985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 0, 1); 1987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 0, 3); 1993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 1994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 1, 2); 1999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 2, 1); 2005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 3, 0); 2011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 0, 1); 2019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 0, 3); 2025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 1, 2); 2031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 2, 1); 2037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 3, 0); 2043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 0, 1); 2051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 0, 3); 2057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 1, 2); 2063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 2, 1); 2069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 3, 0); 2075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 2087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_Closed() throws Exception { 2091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffers, 0, 1); 2097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffers, 0, 1); 2105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffers, 0, 1); 2113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-902 2119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = null; 2120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffers, 0, 1); 2122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffers, 0, 1); 2128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(readBuffers, 0, 1); 2134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_WriteOnly() throws Exception { 2150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffers, 0, 1); 2155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 2156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 2157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NonReadableChannelException. 2161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = null; 2162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(readBuffers, 0, 1); 2164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException"); 2165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 2166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void doTestForIOOBException(FileChannel channel, 2171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] buffer) throws IOException{ 2172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, -1, 0); 2174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, 0, -1); 2180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, 0, 3); 2186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, 1, 2); 2192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, 2, 1); 2198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.read(buffer, 3, 0); 2204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IndexOutOfBoundsException.", 2215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_IndexOutOfBound() throws Exception { 2219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(CAPACITY); 2222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffersNull = new ByteBuffer[2]; 2223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readOnlyFileChannel, readBuffers); 2225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readWriteFileChannel, readBuffers); 2226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(writeOnlyFileChannel, readBuffers); 2227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readOnlyFileChannel, readBuffersNull); 2229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readWriteFileChannel, readBuffersNull); 2230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(writeOnlyFileChannel, readBuffersNull); 2231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, -1, 0); 2233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(null, 0, -1); 2239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, -1, 0); 2246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(null, 0, -1); 2252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, -1, 0); 2259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.read(null, 0, -1); 2265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundException"); 2266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 2267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readOnlyFileChannel, readBuffers); 2272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readOnlyFileChannel, readBuffersNull); 2273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readWriteFileChannel, readBuffers); 2276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(readWriteFileChannel, readBuffersNull); 2277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(writeOnlyFileChannel, readBuffers); 2280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doTestForIOOBException(writeOnlyFileChannel, readBuffersNull); 2281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_EmptyFile() throws Exception { 2293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(CAPACITY); 2296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.read(readBuffers, 0, 2); 2297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(-1, result); 2298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffers[0].position()); 2299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffers[1].position()); 2300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 2308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_EmptyBuffers() throws Exception { 2312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffers, 0, 2); 2317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 2322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.read(readBuffers, 0, 2); 2325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.read(readBuffers, 0, 1); 2330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 2331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_EmptyFile_EmptyBuffers() 2343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 2344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // will not throw NullPointerException 2346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.read(readBuffers, 0, 0); 2347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, result); 2348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_Length_Zero() throws Exception { 2360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 2361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(LIMITED_CAPACITY); 2363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(LIMITED_CAPACITY); 2364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.read(readBuffers, 1, 0); 2365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, result); 2366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII_LimitedCapacity() throws Exception { 2378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 2379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(LIMITED_CAPACITY); 2381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(LIMITED_CAPACITY); 2382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reads to the second buffer 2384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.read(readBuffers, 1, 1); 2385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LIMITED_CAPACITY, result); 2386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffers[0].position()); 2387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LIMITED_CAPACITY, readBuffers[1].position()); 2388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1].flip(); 2390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < LIMITED_CAPACITY; i++) { 2391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffers[1].get()); 2392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer[], int, int) 2397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 2402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 2403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$LByteBufferII() throws Exception { 2405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 2406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] readBuffers = new ByteBuffer[2]; 2407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[0] = ByteBuffer.allocate(CAPACITY); 2408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1] = ByteBuffer.allocate(CAPACITY); 2409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // writes to the second buffer 2411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, readOnlyFileChannel.read( 2412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers, 1, 1)); 2413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readBuffers[0].position()); 2414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, readBuffers[1].position()); 2415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffers[1].flip(); 2417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < CONTENT_AS_BYTES_LENGTH; i++) { 2418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffers[1].get()); 2419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#isOpen() 2424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#close() 2425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 2427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isOpen", 2431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 2433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 2437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 2440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isOpen() throws Exception { 2441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for HARMONY-40 2442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File logFile = File.createTempFile("out", "tmp"); 2443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project logFile.deleteOnExit(); 2444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileOutputStream out = new FileOutputStream(logFile, true); 2445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileChannel channel = out.getChannel(); 2446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(1); 2447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Assert 0: Channel is not open", channel.isOpen()); 2448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 2449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Assert 0: Channel is still open", channel.isOpen()); 2450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#position() 2454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "position", 2459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Fails on RI. See comment below") 2462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_position_append() throws Exception { 2463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for Harmony-508 2464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File tmpfile = File.createTempFile("FileOutputStream", "tmp"); 2465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmpfile.deleteOnExit(); 2466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileOutputStream fos = new FileOutputStream(tmpfile); 2467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b = new byte[10]; 2468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < b.length; i++) { 2469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b[i] = (byte) i; 2470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.write(b); 2472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.flush(); 2473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fos.close(); 2474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileOutputStream f = new FileOutputStream(tmpfile, true); 2475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Below assertion fails on RI. RI behaviour is counter to spec. 2476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(10, f.getChannel().position()); 2477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonReadableChannelException, NonWritableChannelException , ClosedChannelException, IllegalArgumentException, IOException. ", 2486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_AbnormalMode() throws IOException { 2490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.map(MapMode.READ_ONLY, 0, CONTENT_LENGTH); 2492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException."); 2493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException ex) { 2494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.map(MapMode.READ_WRITE, 0, CONTENT_LENGTH); 2498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException."); 2499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException ex) { 2500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.map(MapMode.PRIVATE, 0, CONTENT_LENGTH); 2504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException."); 2505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException ex) { 2506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.map(MapMode.READ_WRITE, 0, -1); 2511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 2512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException ex) { 2513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_WRITE, 0, CONTENT_LENGTH); 2518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException ."); 2519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException ex) { 2520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.PRIVATE, 0, CONTENT_LENGTH); 2524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException ."); 2525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException ex) { 2526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_WRITE, -1, CONTENT_LENGTH); 2530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IAE."); 2531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ex) { 2532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_WRITE, 0, -1); 2536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IAE."); 2537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ex) { 2538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_ONLY, 0, CONTENT_LENGTH + 1); 2543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IOException."); 2544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_ONLY, 2, CONTENT_LENGTH - 1); 2549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IOException."); 2550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_WRITE, 0, -1); 2557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 2558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException ex) { 2559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.map(MapMode.READ_ONLY, 2, CONTENT_LENGTH - 1); 2563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IOException."); 2564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.map(MapMode.READ_WRITE, 0, -1); 2571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 2572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException ex) { 2573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_ReadOnly_CloseChannel() throws IOException { 2587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // close channel has no effect on map if mapped 2588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.size()); 2589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readWriteFileChannel.map(MapMode.READ_ONLY, 2590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 0, CONTENT_LENGTH); 2591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, readWriteFileChannel.size()); 2592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.limit()); 2594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_Private_CloseChannel() throws IOException { 2606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readWriteFileChannel.map(MapMode.PRIVATE, 0, 2607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_LENGTH); 2608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.put(TEST_BYTES); 2610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.limit()); 2611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("test".length(), mapped.position()); 2612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_ReadOnly() throws IOException { 2624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = null; 2625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try put something to readonly map 2626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 2627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped = readOnlyFileChannel.map(MapMode.READ_ONLY, 0, CONTENT_LENGTH); 2628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.put(TEST_BYTES); 2630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ReadOnlyBufferException."); 2631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ReadOnlyBufferException ex) { 2632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.limit()); 2635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.capacity()); 2636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mapped.position()); 2637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try to get a readonly map from read/write channel 2639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadWriteFileChannel); 2640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped = readWriteFileChannel.map(MapMode.READ_ONLY, 0, CONTENT 2641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 2642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.limit()); 2643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.capacity()); 2644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mapped.position()); 2645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // map not change channel's position 2647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 2648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.position()); 2649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_ReadOnly_NonZeroPosition() throws IOException { 2661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.writeDataToFile(fileOfReadOnlyFileChannel); 2662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readOnlyFileChannel.map(MapMode.READ_ONLY, 2663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 10, CONTENT_LENGTH - 10); 2664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - 10, mapped.limit()); 2665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - 10, mapped.capacity()); 2666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mapped.position()); 2667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_Private() throws IOException { 2679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.writeDataToFile(fileOfReadWriteFileChannel); 2680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readWriteFileChannel.map(MapMode.PRIVATE, 0, 2681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_LENGTH); 2682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH, mapped.limit()); 2683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test copy on write if private 2684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer returnByPut = mapped.put(TEST_BYTES); 2685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(returnByPut, mapped); 2686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer checkBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 2687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.force(); 2688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(checkBuffer); 2689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT, new String(checkBuffer.array(), "iso8859-1")); 2690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test overflow 2692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.put(("test" + CONTENT).getBytes("iso8859-1")); 2694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw BufferOverflowException."); 2695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (BufferOverflowException ex) { 2696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_Private_NonZeroPosition() throws IOException { 2710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readWriteFileChannel.map(MapMode.PRIVATE, 10, 2711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_LENGTH - 10); 2712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - 10, mapped.limit()); 2713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - 10, mapped.capacity()); 2714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mapped.position()); 2715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_ReadWrite() throws IOException { 2727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = null; 2728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadWriteFileChannel); 2729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped = readWriteFileChannel.map(MapMode.READ_WRITE, 0, CONTENT 2730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 2731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // put something will change its channel 2733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer returnByPut = mapped.put(TEST_BYTES); 2734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(returnByPut, mapped); 2735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String checkString = "test" + CONTENT.substring(4); 2736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer checkBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 2737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.force(); 2738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.position(0); 2739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(checkBuffer); 2740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(checkString, new String(checkBuffer.array(), "iso8859-1")); 2741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.put(("test" + CONTENT).getBytes("iso8859-1")); 2744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw BufferOverflowException."); 2745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (BufferOverflowException ex) { 2746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected; 2747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_ReadWrite_NonZeroPosition() throws IOException { 2760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test position non-zero 2761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadWriteFileChannel); 2762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readWriteFileChannel.map(MapMode.READ_WRITE, 2763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 10, CONTENT_LENGTH - 10); 2764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_LENGTH - 10, mapped.limit()); 2765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT.length() - 10, mapped.capacity()); 2766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mapped.position()); 2767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mapped.put(TEST_BYTES); 2768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer checkBuffer = ByteBuffer.allocate(CONTENT_LENGTH); 2769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(checkBuffer); 2770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String expected = CONTENT.substring(0, 10) + "test" 2771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + CONTENT.substring(10 + "test".length()); 2772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(expected, new String(checkBuffer.array(), "iso8859-1")); 2773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests map() method for the value of positions exceeding memory 2777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * page size and allocation granularity size. 2778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 2779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#map(MapMode,long,long) 2780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "map", 2785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.FileChannel.MapMode.class, long.class, long.class} 2786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Platform.class is harmony specific") 2788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_map_LargePosition() throws IOException { 2789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for HARMONY-3085 2790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] sizes = { 2791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4096, // 4K size (normal page size for Linux & Windows) 2792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65536, // 64K size (alocation granularity size for Windows) 2793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Platform.getFileSystem().getAllocGranularity() // alloc granularity 2794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 2795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int CONTENT_LEN = 10; 2796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < sizes.length; ++i) { 2798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reset the file and the channel for the iterations 2799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (for the first iteration it was done by setUp() 2800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (i > 0 ) { 2801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel = File.createTempFile( 2802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "File_of_readOnlyFileChannel", "tmp"); 2803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel.deleteOnExit(); 2804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel = new FileInputStream( 2805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel).getChannel(); 2806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeLargeDataToFile(fileOfReadOnlyFileChannel, sizes[i] + 2809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2 * CONTENT_LEN); 2810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MappedByteBuffer mapped = readOnlyFileChannel.map(MapMode.READ_ONLY, 2811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sizes[i], CONTENT_LEN); 2812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrectly mapped file channel for " + sizes[i] 2813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " position (capacity)", CONTENT_LEN, mapped.capacity()); 2814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrectly mapped file channel for " + sizes[i] 2815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " position (limit)", CONTENT_LEN, mapped.limit()); 2816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrectly mapped file channel for " + sizes[i] 2817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " position (position)", 0, mapped.position()); 2818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // map not change channel's position 2820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 2821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Close the file and the channel before the next iteration 2823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfReadOnlyFileChannel.delete(); 2825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 2830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 2834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 2835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 2836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBuffer_Null() throws Exception { 2838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = null; 2839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 2842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer); 2849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 2850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 2851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 2857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 2861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 2862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 2863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBuffer_Closed() throws Exception { 2865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 2866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 2868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer); 2870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 2878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 2884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer); 2886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first 2892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffer = null; 2893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.read(writeBuffer); 2895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer); 2902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer); 2910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 2911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 2912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 2918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException.", 2922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 2923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 2924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBuffer_ReadOnly() throws Exception { 2926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 2927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer); 2930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 2931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 2932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NonWriteableChannelException 2936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffer = null; 2937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer); 2939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 2940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 2941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 2947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 2952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 2953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBuffer() throws Exception { 2955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 2956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = writeOnlyFileChannel.write(writeBuffer); 2958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 2959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffer.position()); 2960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, fileOfWriteOnlyFileChannel 2963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 2964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 2966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 2967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 2968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, inputBuffer)); 2969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 2973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 2976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 2978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 2979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBuffer_NonZeroPosition() throws Exception { 2981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int pos = 5; 2982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 2983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffer.position(pos); 2984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = writeOnlyFileChannel.write(writeBuffer); 2985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH - pos, result); 2986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffer.position()); 2987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 2988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH - pos, fileOfWriteOnlyFileChannel 2990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 2991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 2993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH - pos]; 2994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 2995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String test = CONTENT.substring(pos); 2996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(test.getBytes(), inputBuffer)); 2997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer, long) 3001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 3005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_Null() throws Exception { 3009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = null; 3010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, 0); 3013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 3019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, 0); 3028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 3034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, -1); 3036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, 0); 3043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 3049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, -1); 3051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 3057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, 0); 3060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, -1); 3067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, 0); 3075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, -1); 3082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, 0); 3090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer, long) 3105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 3109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_Closed() throws Exception { 3113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 3114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, 0); 3118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, 0); 3126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer, long) 3134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException.", 3138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_ReadOnly() throws Exception { 3142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 3143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, 10); 3146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 3147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-903 3152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read-only file channel never throws ClosedChannelException even if 3154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // the channel is closed. 3155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, 10); 3158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 3159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffer = null; 3171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#read(ByteBuffer,long) 3181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IOException.", 3185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 3186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_Postion_As_Long() throws Exception { 3189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(TEST_BYTES); 3190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, Long.MAX_VALUE); 3192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 3193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer, long) 3199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 3203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_IllegalArgument() throws Exception { 3207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.allocate(CAPACITY); 3208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, -1); 3218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, -1); 3225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws IllegalArgumentException first. 3231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffer, -1); 3234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffer, -1); 3242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffer, -1); 3250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 3251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer,long) 3258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ() throws Exception { 3266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 3267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 4; 3269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 3270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = writeOnlyFileChannel.write(writeBuffer, POSITION); 3271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 3272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffer.position()); 3273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION + CONTENT_AS_BYTES_LENGTH, 3276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fileOfWriteOnlyFileChannel.length()); 3277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 3279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[POSITION + CONTENT_AS_BYTES_LENGTH]; 3280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 3281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedResult = new byte[POSITION + CONTENT_AS_BYTES_LENGTH]; 3282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 0, POSITION); 3283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, POSITION, 3284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH); 3285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(expectedResult, inputBuffer)); 3286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer) 3290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class, long.class} 3296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeLByteBufferJ_NonZeroPosition() throws Exception { 3298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int pos = 5; 3299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 3300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffer.position(pos); 3301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int result = writeOnlyFileChannel.write(writeBuffer, pos); 3302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH - pos, result); 3303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffer.position()); 3304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, fileOfWriteOnlyFileChannel 3307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 3308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 3310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH - pos]; 3311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.skip(pos); 3312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 3313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String test = CONTENT.substring(pos); 3314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(test.getBytes(), inputBuffer)); 3315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[]) 3319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 3323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 3325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBuffer_Closed() throws Exception { 3327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 3329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 3330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers); 3334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers); 3342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers); 3350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[]) 3358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException", 3362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 3364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBuffer_ReadOnly() throws Exception { 3366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 3368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 3369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers); 3372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 3373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[]) 3380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 3384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 3386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBuffer_EmptyBuffers() throws Exception { 3388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 3390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers); 3392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers); 3399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[]) 3407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class} 3413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBuffer() throws Exception { 3415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.wrap(CONTENT_AS_BYTES); 3417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.wrap(CONTENT_AS_BYTES); 3418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.write(writeBuffers); 3420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH * 2, result); 3421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[0].position()); 3422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[1].position()); 3423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH * 2, fileOfWriteOnlyFileChannel 3426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 3427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 3429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 3430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 3431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedResult = new byte[CONTENT_AS_BYTES_LENGTH * 2]; 3432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 0, 3433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH); 3434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 3435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH, CONTENT_AS_BYTES_LENGTH); 3436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, inputBuffer)); 3437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 3445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII_Null() throws Exception { 3449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = null; 3450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 1, 2); 3453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 1, 2); 3460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 1, 2); 3467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NullPointerException 3473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 1, 2); 3476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 1, 2); 3484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 1, 2); 3492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 3504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII_Closed() throws Exception { 3508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 3510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 3511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, 2); 3515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 0, 2); 3523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 0, 2); 3531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException"); 3532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NonWritableChannelException, IndexOutOfBoundsException, NullPointerException.", 3543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII_ReadOnly() throws Exception { 3547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(CAPACITY); 3549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.allocate(CAPACITY); 3550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, 2); 3553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 3554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throw NonWritableChannelException first although buffer array is 3559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // empty. 3560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers = new ByteBuffer[2]; 3561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, 2); 3563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException"); 3564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers = null; 3570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, -1); 3572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, 1); 3579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IndexOutOfBoundsException.", 3591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII_IndexOutOfBound() throws Exception { 3595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 3597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.allocate(this.CONTENT_LENGTH); 3598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, -1, 0); 3601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 0, -1); 3607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 0, 3); 3613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 1, 2); 3619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 2, 1); 3625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 3, 0); 3631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, -1, 0); 3638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 0, -1); 3644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 0, 3); 3650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 1, 2); 3656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 2, 1); 3662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 3, 0); 3668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, -1, 0); 3675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, -1); 3681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 0, 3); 3687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 1, 2); 3693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 2, 1); 3699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.write(writeBuffers, 3, 0); 3705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IndexOutOfBoundsException"); 3706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 3707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 3717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII_EmptyBuffers() throws Exception { 3721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.allocate(this.CONTENT_LENGTH); 3723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.write(writeBuffers, 0, 2); 3725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.write(writeBuffers, 0, 2); 3732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException"); 3733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 3734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#write(ByteBuffer[],int,int) 3740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 3745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer[].class, int.class, int.class} 3746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$LByteBufferII() throws Exception { 3748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer[] writeBuffers = new ByteBuffer[2]; 3749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[0] = ByteBuffer.wrap(CONTENT_AS_BYTES); 3750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeBuffers[1] = ByteBuffer.wrap(CONTENT_AS_BYTES); 3751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.write(writeBuffers, 0, 2); 3753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH * 2, result); 3754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[0].position()); 3755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, writeBuffers[1].position()); 3756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH * 2, fileOfWriteOnlyFileChannel 3759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 3760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 3762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] inputBuffer = new byte[CONTENT_AS_BYTES_LENGTH]; 3763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(inputBuffer); 3764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedResult = new byte[CONTENT_AS_BYTES_LENGTH * 2]; 3765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 0, 3766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH); 3767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedResult, 3768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH, CONTENT_AS_BYTES_LENGTH); 3769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, inputBuffer)); 3770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies ClosedChannelException.", 3778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_Closed() 3782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readByteChannel = DatagramChannel.open(); 3784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 3785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferFrom(readByteChannel, 0, 0); 3787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferFrom(readByteChannel, 0, 10); 3795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 3801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(readByteChannel, 0, 0); 3803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first. 3809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(readByteChannel, 0, -1); 3811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_SourceClosed() 3827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readByteChannel = DatagramChannel.open(); 3829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readByteChannel.close(); 3830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferFrom(readByteChannel, 0, 10); 3833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferFrom(readByteChannel, 0, 10); 3840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(readByteChannel, 0, 10); 3847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first. 3853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(readByteChannel, 0, -1); 3855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 3856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 3857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 3867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_IllegalArgument() 3871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readByteChannel = DatagramChannel.open(); 3873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferFrom(readByteChannel, 10, -1); 3875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException."); 3876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(readByteChannel, -1, 10); 3882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException."); 3883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 3884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_NonWritable() 3898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readByteChannel = DatagramChannel.open(); 3900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferFrom(readByteChannel, 0, 0); 3902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 3903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 3904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_SourceNonReadable() 3918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(writeOnlyFileChannel, 0, 0); 3921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException."); 3922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 3923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // not throws NonReadableChannelException first if position beyond file 3927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // size. 3928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferFrom(writeOnlyFileChannel, 10, 10); 3929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_PositionBeyondSize() 3941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // init data to file. 3943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 3944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 3945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int READONLYFILECHANNELPOSITION = 2; 3947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(READONLYFILECHANNELPOSITION); 3948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = CONTENT_AS_BYTES_LENGTH * 2; 3950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 5; 3951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.transferFrom(readOnlyFileChannel, 3952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project POSITION, LENGTH); 3953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, result); 3954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, writeOnlyFileChannel.position()); 3955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(READONLYFILECHANNELPOSITION, readOnlyFileChannel 3956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .position()); 3957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 3961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 3965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 3966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 3967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_FileChannel() 3969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 3970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // init data to file. 3971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 3972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 3973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int READONLYFILECHANNELPOSITION = 2; 3975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int WRITEONLYFILECHANNELPOSITION = 4; 3976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(READONLYFILECHANNELPOSITION); 3977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(WRITEONLYFILECHANNELPOSITION); 3978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 3; 3980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 5; 3981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.transferFrom(readOnlyFileChannel, 3982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project POSITION, LENGTH); 3983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 3984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(WRITEONLYFILECHANNELPOSITION, writeOnlyFileChannel 3985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .position()); 3986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(READONLYFILECHANNELPOSITION + LENGTH, readOnlyFileChannel 3987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .position()); 3988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 3989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int EXPECTED_LENGTH = POSITION + LENGTH; 3991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 3992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] resultContent = new byte[EXPECTED_LENGTH]; 3993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(resultContent); 3994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedContent = new byte[EXPECTED_LENGTH]; 3996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedContent, 0, POSITION); 3997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, READONLYFILECHANNELPOSITION, 3998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project expectedContent, POSITION, LENGTH); 3999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(expectedContent, resultContent)); 4000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 4004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 4009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 4010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_DatagramChannel() 4012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // connects two datagramChannels. 4014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver = DatagramChannel.open(); 4015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.socket().bind( 4016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender = DatagramChannel.open(); 4018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.socket().bind( 4019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.socket().setSoTimeout(TIME_OUT); 4021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.connect(datagramChannelSender.socket() 4022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 4023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.socket().setSoTimeout(TIME_OUT); 4024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 4025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.socket().setSoTimeout(TIME_OUT); 4026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // sends data from datagramChannelSender to datagramChannelReceiver. 4027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.send(writeBuffer, datagramChannelReceiver 4028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .socket().getLocalSocketAddress()); 4029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.socket().setSoTimeout(TIME_OUT); 4030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from datagramChannelReceiver to fileChannel. 4032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.transferFrom( 4033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver, 0, CONTENT_AS_BYTES_LENGTH); 4034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 4035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, writeOnlyFileChannel.position()); 4036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 4037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets content from file. 4039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 4040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, fileOfWriteOnlyFileChannel 4041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 4042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] resultContent = new byte[CONTENT_AS_BYTES_LENGTH]; 4043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(resultContent); 4044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares contents. 4046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, resultContent)); 4047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 4051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 4056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 4057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_SocketChannel() 4059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // connects two socketChannels. 4061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver = SocketChannel.open(); 4062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel = ServerSocketChannel.open(); 4063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel.socket().bind( 4064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.socket().setSoTimeout(TIME_OUT); 4066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.connect(serverSocketChannel.socket() 4067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 4068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel.socket().setSoTimeout(TIME_OUT); 4069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender = serverSocketChannel.accept(); 4070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender.socket().setSoTimeout(TIME_OUT); 4071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // sends data from socketChannelSender to socketChannelReceiver. 4073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 4074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender.write(writeBuffer); 4075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from socketChannelReceiver to fileChannel. 4077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readWriteFileChannel.transferFrom(socketChannelReceiver, 4078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 0, CONTENT_AS_BYTES_LENGTH); 4079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 4080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readWriteFileChannel.position()); 4081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 4082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets content from file. 4084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfReadWriteFileChannel); 4085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, fileOfReadWriteFileChannel 4086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .length()); 4087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] resultContent = new byte[CONTENT_AS_BYTES_LENGTH]; 4088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(resultContent); 4089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares content. 4091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(CONTENT_AS_BYTES, resultContent)); 4092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferFrom(ReadableByteChannel,long,long) 4096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferFrom", 4101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.channels.ReadableByteChannel.class, long.class, long.class} 4102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferFromLReadableByteChannelJJ_Pipe() throws Exception { 4104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits data in file. 4105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 4106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits pipe. 4108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pipe = Pipe.open(); 4109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // writes content to pipe. 4111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer writeBuffer = ByteBuffer.wrap(CONTENT_AS_BYTES); 4112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pipe.sink().write(writeBuffer); 4113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from pipe to fileChannel. 4115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int OFFSET = 2; 4116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 4; 4117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = writeOnlyFileChannel.transferFrom(pipe.source(), OFFSET, 4118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LENGTH); 4119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 4120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 4121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets content from file. 4123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 4124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] resultBytes = new byte[OFFSET + LENGTH]; 4125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(resultBytes); 4126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares content. 4128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedBytes = new byte[OFFSET + LENGTH]; 4129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedBytes, 0, OFFSET); 4130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedBytes, OFFSET, LENGTH); 4131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(expectedBytes, resultBytes)); 4133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_Null() throws Exception { 4145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel = null; 4146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException."); 4149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 4150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException."); 4156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 4157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, 10, writableByteChannel); 4162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException."); 4163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 4164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw NullPointerException first. 4168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 4169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferTo(-1, 0, writableByteChannel); 4171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NullPointerException."); 4172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 4173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_Closed() throws Exception { 4187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel = DatagramChannel.open(); 4188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 4189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 4197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.close(); 4205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, 10, writableByteChannel); 4207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first. 4213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, -1, writableByteChannel); 4215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_SourceClosed() 4231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel = DatagramChannel.open(); 4233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel.close(); 4234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferTo(0, 10, writableByteChannel); 4244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, 10, writableByteChannel); 4251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should throw ClosedChannelException first. 4257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, -1, writableByteChannel); 4259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw ClosedChannelException."); 4260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClosedChannelException e) { 4261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_IllegalArgument() 4275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel = DatagramChannel.open(); 4277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.transferTo(10, -1, writableByteChannel); 4279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException."); 4280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 4281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(-1, 10, writableByteChannel); 4286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException."); 4287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 4288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_NonReadable() 4302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writableByteChannel = DatagramChannel.open(); 4304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.transferTo(-1, 10, writableByteChannel); 4306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonReadableChannelException."); 4307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonReadableChannelException e) { 4308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_TargetNonWritable() 4322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, 0, readOnlyFileChannel); 4325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 4326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 4327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NonWritableChannelException even position out of file 4331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // size. 4332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(10, 10, readOnlyFileChannel); 4334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 4335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 4336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-941 4340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first throws NonWritableChannelException even arguments are illegal. 4341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(-1, 10, readOnlyFileChannel); 4343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 4344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 4345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 4349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readWriteFileChannel.transferTo(0, -1, readOnlyFileChannel); 4350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw NonWritableChannelException."); 4351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NonWritableChannelException e) { 4352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 4353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_PositionBeyondSize() 4366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // init data to file. 4368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 4369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 4370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int WRITEONLYFILECHANNELPOSITION = 2; 4372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(WRITEONLYFILECHANNELPOSITION); 4373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = CONTENT_AS_BYTES_LENGTH * 2; 4375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 5; 4376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.transferTo(POSITION, LENGTH, 4377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel); 4378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, result); 4379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 4380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(WRITEONLYFILECHANNELPOSITION, writeOnlyFileChannel 4381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .position()); 4382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_FileChannel() 4394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // init data to file. 4396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 4397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfWriteOnlyFileChannel); 4398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int READONLYFILECHANNELPOSITION = 2; 4400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int WRITEONLYFILECHANNELPOSITION = 4; 4401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(READONLYFILECHANNELPOSITION); 4402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position(WRITEONLYFILECHANNELPOSITION); 4403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 3; 4405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 5; 4406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.transferTo(POSITION, LENGTH, 4407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel); 4408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 4409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(READONLYFILECHANNELPOSITION, readOnlyFileChannel 4410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .position()); 4411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(WRITEONLYFILECHANNELPOSITION + LENGTH, 4412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.position()); 4413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeOnlyFileChannel.close(); 4414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int EXPECTED_LENGTH = WRITEONLYFILECHANNELPOSITION + LENGTH; 4416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis = new FileInputStream(fileOfWriteOnlyFileChannel); 4417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] resultContent = new byte[EXPECTED_LENGTH]; 4418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fis.read(resultContent); 4419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] expectedContent = new byte[EXPECTED_LENGTH]; 4421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, 0, expectedContent, 0, 4422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project WRITEONLYFILECHANNELPOSITION); 4423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(CONTENT_AS_BYTES, POSITION, expectedContent, 4424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project WRITEONLYFILECHANNELPOSITION, LENGTH); 4425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(expectedContent, resultContent)); 4426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_SocketChannel() 4438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits data into file. 4440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 4441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // connects two socketChannels. 4443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver = SocketChannel.open(); 4444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.socket().bind( 4445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel = ServerSocketChannel.open(); 4447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel.socket().bind( 4448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.socket().setSoTimeout(TIME_OUT); 4450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelReceiver.connect(serverSocketChannel.socket() 4451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 4452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocketChannel.socket().setSoTimeout(TIME_OUT); 4453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender = serverSocketChannel.accept(); 4454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender.socket().setSoTimeout(TIME_OUT); 4455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // position here should have no effect on transferTo since it uses 4457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // offset from file_begin 4458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int POSITION = 10; 4459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.position(POSITION); 4460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from file to socketChannelSender. 4462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int OFFSET = 2; 4463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.transferTo(OFFSET, 4464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH * 2, socketChannelSender); 4465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = CONTENT_AS_BYTES_LENGTH - OFFSET; 4466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 4467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(POSITION, readOnlyFileChannel.position()); 4468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 4469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socketChannelSender.close(); 4470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets contents from socketChannelReceiver. 4472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(LENGTH + 1); 4473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int totalRead = 0; 4474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int countRead = 0; 4475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long beginTime = System.currentTimeMillis(); 4476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while ((countRead = socketChannelReceiver.read(readBuffer)) != -1) { 4477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalRead += countRead; 4478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TIMEOUT 4479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (System.currentTimeMillis() - beginTime > TIME_OUT) { 4480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project break; 4481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, totalRead); 4484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares contents. 4486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 4487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = OFFSET; i < CONTENT_AS_BYTES_LENGTH; i++) { 4488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 4489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_DatagramChannel() 4502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 4503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits data to file. 4504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 4505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // connects two datagramChannel 4507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver = DatagramChannel.open(); 4508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.socket().bind( 4509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender = DatagramChannel.open(); 4511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.socket().bind( 4512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 0)); 4513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.socket().setSoTimeout(TIME_OUT); 4514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.connect(datagramChannelReceiver.socket() 4515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 4516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.socket().setSoTimeout(TIME_OUT); 4517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelReceiver.connect(datagramChannelSender.socket() 4518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 4519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from fileChannel to datagramChannelSender 4521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.transferTo(0, 4522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CONTENT_AS_BYTES_LENGTH, datagramChannelSender); 4523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, result); 4524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 4525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 4526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project datagramChannelSender.close(); 4527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets contents from datagramChannelReceiver 4529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(CONTENT_AS_BYTES_LENGTH); 4530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long beginTime = System.currentTimeMillis(); 4531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int totalRead = 0; 4532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (totalRead < CONTENT_AS_BYTES_LENGTH) { 4533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalRead += datagramChannelReceiver.read(readBuffer); 4534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (System.currentTimeMillis() - beginTime > TIME_OUT) { 4535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project break; 4536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES_LENGTH, totalRead); 4539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares contents. 4541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 4542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < CONTENT_AS_BYTES_LENGTH; i++) { 4543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 4544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 4548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.nio.channels.FileChannel#transferTo(long,long,WritableByteChannel) 4549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 4550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 4551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 4552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 4553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "transferTo", 4554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class, long.class, java.nio.channels.WritableByteChannel.class} 4555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 4556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_transferToJJLWritableByteChannel_Pipe() throws Exception { 4557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits data in file. 4558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writeDataToFile(fileOfReadOnlyFileChannel); 4559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // inits pipe. 4561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pipe = Pipe.open(); 4562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // transfers data from fileChannel to pipe. 4564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int OFFSET = 2; 4565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final int LENGTH = 4; 4566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long result = readOnlyFileChannel.transferTo(OFFSET, LENGTH, pipe 4567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .sink()); 4568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 4569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, readOnlyFileChannel.position()); 4570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readOnlyFileChannel.close(); 4571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // gets content from pipe. 4573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer readBuffer = ByteBuffer.allocate(LENGTH); 4574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project result = pipe.source().read(readBuffer); 4575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(LENGTH, result); 4576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // compares content. 4578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readBuffer.flip(); 4579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = OFFSET; i < OFFSET + LENGTH; i++) { 4580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(CONTENT_AS_BYTES[i], readBuffer.get()); 4581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4584d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson /** 4585d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * Regression test for Harmony-3324 4586d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * Make sure we could delete the file after we called transferTo() method. 4587d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson */ 4588d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson public void test_transferTo_couldDelete() throws Exception { 4589d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // init data in files 4590d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeDataToFile(fileOfReadOnlyFileChannel); 4591d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeDataToFile(fileOfWriteOnlyFileChannel); 4592d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4593d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // call transferTo() method 4594d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson readOnlyFileChannel.transferTo(0 , 2, writeOnlyFileChannel); 4595d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4596d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // delete both files 4597d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson readOnlyFileChannel.close(); 4598d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeOnlyFileChannel.close(); 4599d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson boolean rDel = fileOfReadOnlyFileChannel.delete(); 4600d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson boolean wDel = fileOfWriteOnlyFileChannel.delete(); 4601d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4602d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // make sure both files were deleted 4603d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson assertTrue("File " + readOnlyFileChannel + " exists", rDel); 4604d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson assertTrue("File " + writeOnlyFileChannel + " exists", wDel); 4605d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson } 4606d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4607d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson /** 4608d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * Regression test for Harmony-3324 4609d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * Make sure we could delete the file after we called transferFrom() method. 4610d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson */ 4611d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson public void test_transferFrom_couldDelete() throws Exception { 4612d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // init data in files 4613d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeDataToFile(fileOfReadOnlyFileChannel); 4614d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeDataToFile(fileOfWriteOnlyFileChannel); 4615d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4616d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // call transferTo() method 4617d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeOnlyFileChannel.transferFrom(readOnlyFileChannel, 0 , 2); 4618d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4619d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // delete both files 4620d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson readOnlyFileChannel.close(); 4621d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson writeOnlyFileChannel.close(); 4622d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson boolean rDel = fileOfReadOnlyFileChannel.delete(); 4623d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson boolean wDel = fileOfWriteOnlyFileChannel.delete(); 4624d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4625d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson // make sure both files were deleted 4626d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson assertTrue("File " + readOnlyFileChannel + " exists", rDel); 4627d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson assertTrue("File " + writeOnlyFileChannel + " exists", wDel); 4628d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson } 4629d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson 4630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private class MockFileChannel extends FileChannel { 4631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean isLockCalled = false; 4633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean isTryLockCalled = false; 4635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean isReadCalled = false; 4637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean isWriteCalled = false; 4639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void force(boolean arg0) throws IOException { 4641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // do nothing 4642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public FileLock lock(long position, long size, boolean shared) 4645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // verify that calling lock() leads to the method 4647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // lock(0, Long.MAX_VALUE, false). 4648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (0 == position && Long.MAX_VALUE == size && false == shared) { 4649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project isLockCalled = true; 4650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 4652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MappedByteBuffer map(MapMode arg0, long arg1, long arg2) 4655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 4657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long position() throws IOException { 4660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public FileChannel position(long arg0) throws IOException { 4664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 4665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int read(ByteBuffer arg0) throws IOException { 4668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int read(ByteBuffer arg0, long arg1) throws IOException { 4672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long read(ByteBuffer[] srcs, int offset, int length) 4676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // verify that calling read(ByteBuffer[] srcs) leads to the method 4678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read(srcs, 0, srcs.length) 4679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (0 == offset && length == srcs.length) { 4680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project isReadCalled = true; 4681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long size() throws IOException { 4686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long transferFrom(ReadableByteChannel arg0, long arg1, long arg2) 4690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long transferTo(long arg0, long arg1, WritableByteChannel arg2) 4695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public FileChannel truncate(long arg0) throws IOException { 4700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 4701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public FileLock tryLock(long position, long size, boolean shared) 4704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // verify that calling tryLock() leads to the method 4706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // tryLock(0, Long.MAX_VALUE, false). 4707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (0 == position && Long.MAX_VALUE == size && false == shared) { 4708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project isTryLockCalled = true; 4709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 4711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int write(ByteBuffer arg0) throws IOException { 4714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int write(ByteBuffer arg0, long arg1) throws IOException { 4718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long write(ByteBuffer[] srcs, int offset, int length) 4722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 4723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // verify that calling write(ByteBuffer[] srcs) leads to the method 4724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // write(srcs, 0, srcs.length) 4725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if(0 == offset && length == srcs.length){ 4726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project isWriteCalled = true; 4727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 4729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void implCloseChannel() throws IOException { 4732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 4735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 4736