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