blob: acc2c6ed99d200b3b59b5bd9ae2dd2b15f0ddcfd [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.harmony.nio.tests.java.nio;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.AndroidOnly;
import java.nio.BufferOverflowException;
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.CharBuffer;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.InvalidMarkException;
import java.nio.LongBuffer;
import java.nio.ReadOnlyBufferException;
import java.nio.ShortBuffer;
import java.util.Arrays;
/**
* Tests java.nio.ByteBuffer
*
*/
@TestTargetClass(ByteBuffer.class)
public abstract class ByteBufferTest extends AbstractBufferTest {
protected static final int SMALL_TEST_LENGTH = 5;
protected static final int BUFFER_LENGTH = 250;
protected ByteBuffer buf;
protected void setUp() throws Exception {
capacity = BUFFER_LENGTH;
buf = ByteBuffer.allocate(BUFFER_LENGTH);
loadTestData1(buf);
baseBuf = buf;
}
protected void tearDown() throws Exception {
super.tearDown();
buf = null;
baseBuf = null;
}
/*
* test for method static ByteBuffer allocate(int capacity)
* test covers following usecases:
* 1. case for check ByteBuffer testBuf properties
* 2. case expected IllegalArgumentException
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "allocate",
args = {int.class}
)
public void test_AllocateI() {
// case: ByteBuffer testBuf properties is satisfy the conditions
// specification
ByteBuffer testBuf = ByteBuffer.allocate(20);
assertEquals(0, testBuf.position());
assertNotNull(testBuf.array());
assertEquals(0, testBuf.arrayOffset());
assertEquals(20, testBuf.limit());
assertEquals(20, testBuf.capacity());
testBuf = ByteBuffer.allocate(0);
assertEquals(0, testBuf.position());
assertNotNull(testBuf.array());
assertEquals(0, testBuf.arrayOffset());
assertEquals(0, testBuf.limit());
assertEquals(0, testBuf.capacity());
// case: expected IllegalArgumentException
try {
testBuf = ByteBuffer.allocate(-20);
fail("allocate method does not throws expected exception");
} catch (IllegalArgumentException e) {
//expected
}
}
/*
* test for method static ByteBuffer allocateDirect(int capacity)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "allocateDirect",
args = {int.class}
)
public void test_AllocateDirectI() {
// case: ByteBuffer testBuf properties is satisfy the conditions
// specification
ByteBuffer testBuf = ByteBuffer.allocateDirect(20);
assertEquals(0, testBuf.position());
assertEquals(20, testBuf.limit());
assertEquals(20, testBuf.capacity());
testBuf = ByteBuffer.allocateDirect(0);
assertEquals(0, testBuf.position());
assertEquals(0, testBuf.limit());
assertEquals(0, testBuf.capacity());
try {
testBuf.array();
fail("Didn't throw expected UnsupportedOperationException.");
} catch (UnsupportedOperationException e) {
//expected
}
try {
testBuf.arrayOffset();
fail("Didn't throw expected UnsupportedOperationException.");
} catch (UnsupportedOperationException e) {
//expected
}
// case: expected IllegalArgumentException
try {
testBuf = ByteBuffer.allocate(-20);
fail("allocate method does not throws expected exception");
} catch (IllegalArgumentException e) {
//expected
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "array",
args = {}
)
public void testArray() {
byte array[] = buf.array();
assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
loadTestData1(array, buf.arrayOffset(), buf.capacity());
assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
loadTestData2(array, buf.arrayOffset(), buf.capacity());
assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
loadTestData1(buf);
assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
loadTestData2(buf);
assertContentEquals(buf, array, buf.arrayOffset(), buf.capacity());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "arrayOffset",
args = {}
)
public void testArrayOffset() {
byte array[] = buf.array();
for(int i = 0; i < buf.capacity(); i++) {
array[i] = (byte) i;
}
int offset = buf.arrayOffset();
assertContentEquals(buf, array, offset, buf.capacity());
ByteBuffer wrapped = ByteBuffer.wrap(array, 3, array.length - 3);
loadTestData1(array, wrapped.arrayOffset(), wrapped.capacity());
assertContentEquals(buf, array, offset, buf.capacity());
loadTestData2(array, wrapped.arrayOffset(), wrapped.capacity());
assertContentEquals(buf, array, offset, buf.capacity());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asReadOnlyBuffer",
args = {}
)
public void testAsReadOnlyBuffer() {
loadTestData1(buf);
buf.clear();
buf.mark();
buf.position(buf.limit());
// readonly's contents should be the same as buf
ByteBuffer readonly = buf.asReadOnlyBuffer();
assertNotSame(buf, readonly);
assertTrue(readonly.isReadOnly());
assertEquals(buf.position(), readonly.position());
assertEquals(buf.limit(), readonly.limit());
assertEquals(buf.isDirect(), readonly.isDirect());
assertEquals(buf.order(), readonly.order());
assertContentEquals(buf, readonly);
// readonly's position, mark, and limit should be independent to buf
readonly.reset();
assertEquals(0, readonly.position());
readonly.clear();
assertEquals(buf.position(), buf.limit());
buf.reset();
assertEquals(0, buf.position());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "compact",
args = {}
)
@AndroidOnly("Fails on RI. See comment below")
public void testCompact() {
if (buf.isReadOnly()) {
try {
buf.compact();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
// case: buffer is full
buf.clear();
buf.mark();
loadTestData1(buf);
ByteBuffer ret = buf.compact();
assertSame(ret, buf);
assertEquals(buf.capacity(), buf.position());
assertEquals(buf.capacity(), buf.limit());
assertContentLikeTestData1(buf, 0, (byte) 0, buf.capacity());
try {
// Fails on RI. Spec doesn't specify the behavior if
// actually nothing to be done by compact(). So RI doesn't reset
// mark position
buf.reset();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (InvalidMarkException e) {
// expected
}
// case: buffer is empty
buf.position(0);
buf.limit(0);
buf.mark();
ret = buf.compact();
assertSame(ret, buf);
assertEquals(0, buf.position());
assertEquals(buf.limit(), buf.capacity());
assertContentLikeTestData1(buf, 0, (byte) 0, buf.capacity());
try {
buf.reset();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (InvalidMarkException e) {
// expected
}
// case: normal
assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
buf.position(1);
buf.limit(SMALL_TEST_LENGTH);
buf.mark();
ret = buf.compact();
assertSame(ret, buf);
assertEquals(4, buf.position());
assertEquals(buf.limit(), buf.capacity());
assertContentLikeTestData1(buf, 0, (byte) 1, 4);
try {
buf.reset();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (InvalidMarkException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "compareTo",
args = {java.nio.ByteBuffer.class}
)
public void testCompareTo() {
// compare to self
assertEquals(0, buf.compareTo(buf));
// normal cases
if (!buf.isReadOnly()) {
assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
buf.clear();
ByteBuffer other = ByteBuffer.allocate(buf.capacity());
loadTestData1(buf);
loadTestData1(other);
assertEquals(0, buf.compareTo(other));
assertEquals(0, other.compareTo(buf));
buf.position(1);
assertTrue(buf.compareTo(other) > 0);
assertTrue(other.compareTo(buf) < 0);
other.position(2);
assertTrue(buf.compareTo(other) < 0);
assertTrue(other.compareTo(buf) > 0);
buf.position(2);
other.limit(SMALL_TEST_LENGTH);
assertTrue(buf.compareTo(other) > 0);
assertTrue(other.compareTo(buf) < 0);
}
assertTrue(ByteBuffer.wrap(new byte[21]).compareTo(ByteBuffer.allocateDirect(21)) == 0);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "duplicate",
args = {}
)
public void testDuplicate() {
buf.clear();
buf.mark();
buf.position(buf.limit());
// duplicate's contents should be the same as buf
ByteBuffer duplicate = buf.duplicate();
assertNotSame(buf, duplicate);
assertEquals(buf.position(), duplicate.position());
assertEquals(buf.limit(), duplicate.limit());
assertEquals(buf.isReadOnly(), duplicate.isReadOnly());
assertEquals(buf.isDirect(), duplicate.isDirect());
assertEquals(buf.order(), duplicate.order());
assertContentEquals(buf, duplicate);
// duplicate's position, mark, and limit should be independent to buf
duplicate.reset();
assertEquals(0, duplicate.position());
duplicate.clear();
assertEquals(buf.position(), buf.limit());
buf.reset();
assertEquals(0, buf.position());
// duplicate share the same content with buf
if (!duplicate.isReadOnly()) {
loadTestData1(buf);
assertContentEquals(buf, duplicate);
loadTestData2(duplicate);
assertContentEquals(buf, duplicate);
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "equals",
args = {java.lang.Object.class}
)
public void testEquals() {
loadTestData1(buf);
// equal to self
assertTrue(buf.equals(buf));
ByteBuffer readonly = buf.asReadOnlyBuffer();
assertTrue(buf.equals(readonly));
ByteBuffer duplicate = buf.duplicate();
assertTrue(buf.equals(duplicate));
// always false, if type mismatch
assertFalse(buf.equals(Boolean.TRUE));
assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
buf.limit(buf.capacity()).position(0);
readonly.limit(readonly.capacity()).position(1);
assertFalse(buf.equals(readonly));
buf.limit(buf.capacity() - 1).position(0);
duplicate.limit(duplicate.capacity()).position(0);
assertFalse(buf.equals(duplicate));
buf.limit(buf.capacity() - 1).position(0);
duplicate.limit(duplicate.capacity()).position(1);
assertFalse(buf.equals(duplicate));
}
/*
* Class under test for byte get()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "get",
args = {}
)
public void testGet() {
loadTestData1(buf);
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(i, buf.position());
assertEquals(buf.get(), buf.get(i));
}
try {
buf.get();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
}
/*
* Class under test for java.nio.ByteBuffer get(byte[])
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "get",
args = {byte[].class}
)
public void testGetbyteArray() {
byte array[] = new byte[1];
loadTestData1(buf);
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(i, buf.position());
ByteBuffer ret = buf.get(array);
assertEquals(array[0], buf.get(i));
assertSame(ret, buf);
}
buf.get(new byte[0]);
try {
buf.get(array);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
try {
buf.get((byte[])null);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (NullPointerException e) {
// expected
}
}
/*
* Class under test for java.nio.ByteBuffer get(byte[], int, int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "get",
args = {byte[].class, int.class, int.class}
)
public void testGetbyteArrayintint() {
loadTestData1(buf);
buf.clear();
byte array[] = new byte[buf.capacity()];
try {
buf.get(new byte[buf.capacity() + 1], 0, buf.capacity() + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
assertEquals(0, buf.position());
try {
buf.get(array, -1, array.length);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.get(array, array.length, 0);
try {
buf.get(array, array.length + 1, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
assertEquals(0, buf.position());
try {
buf.get(array, 2, -1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.get(array, 2, array.length);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.get((byte[])null, -1, 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (NullPointerException e) {
// expected
}
try {
buf.get(array, 1, Integer.MAX_VALUE);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.get(array, Integer.MAX_VALUE, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
assertEquals(0, buf.position());
buf.clear();
ByteBuffer ret = buf.get(array, 0, array.length);
assertEquals(buf.position(), buf.capacity());
assertContentEquals(buf, array, 0, array.length);
assertSame(ret, buf);
}
/*
* Class under test for byte get(int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "get",
args = {int.class}
)
public void testGetint() {
loadTestData1(buf);
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(i, buf.position());
assertEquals(buf.get(), buf.get(i));
}
try {
buf.get(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.get(buf.limit());
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Verifies hasArray method for wrapped ByteBuffer.",
method = "hasArray",
args = {}
)
public void testHasArray() {
assertTrue(buf.hasArray());
assertNotNull(buf.array());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "hashCode",
args = {}
)
public void testHashCode() {
buf.clear();
loadTestData1(buf);
ByteBuffer readonly = buf.asReadOnlyBuffer();
ByteBuffer duplicate = buf.duplicate();
assertTrue(buf.hashCode() == readonly.hashCode());
assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
duplicate.position(buf.capacity()/2);
assertTrue(buf.hashCode()!= duplicate.hashCode());
}
//for the testHashCode() method of readonly subclasses
protected void readOnlyHashCode(boolean direct) {
//create a new buffer initiated with some data
ByteBuffer buf;
if (direct) {
buf = ByteBuffer.allocateDirect(BUFFER_LENGTH);
} else {
buf = ByteBuffer.allocate(BUFFER_LENGTH);
}
loadTestData1(buf);
buf = buf.asReadOnlyBuffer();
buf.clear();
ByteBuffer readonly = buf.asReadOnlyBuffer();
ByteBuffer duplicate = buf.duplicate();
assertEquals(buf.hashCode(),readonly.hashCode());
duplicate.position(buf.capacity()/2);
assertTrue(buf.hashCode()!= duplicate.hashCode());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Verifies isDirect method with not direct buffer.",
method = "isDirect",
args = {}
)
public void testIsDirect() {
assertFalse(buf.isDirect());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "isReadOnly",
args = {}
)
public void testIsReadOnly() {
assertFalse(buf.isReadOnly());
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "order",
args = {}
)
public void testOrder() {
// BIG_ENDIAN is the default byte order
assertEquals(ByteOrder.BIG_ENDIAN, buf.order());
buf.order(ByteOrder.LITTLE_ENDIAN);
assertEquals(ByteOrder.LITTLE_ENDIAN, buf.order());
buf.order(ByteOrder.BIG_ENDIAN);
assertEquals(ByteOrder.BIG_ENDIAN, buf.order());
// Regression test for HARMONY-798
buf.order((ByteOrder)null);
assertEquals(ByteOrder.LITTLE_ENDIAN, buf.order());
buf.order(ByteOrder.BIG_ENDIAN);
}
/*
* test for method public final ByteBuffer order(ByteOrder bo)
* test covers following usecases:
* 1. case for check
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "order",
args = {java.nio.ByteOrder.class}
)
public void test_OrderLjava_lang_ByteOrder() {
// BIG_ENDIAN is the default byte order
assertEquals(ByteOrder.BIG_ENDIAN, buf.order());
buf.order(ByteOrder.LITTLE_ENDIAN);
assertEquals(ByteOrder.LITTLE_ENDIAN, buf.order());
buf.order(ByteOrder.BIG_ENDIAN);
assertEquals(ByteOrder.BIG_ENDIAN, buf.order());
// Regression test for HARMONY-798
buf.order((ByteOrder)null);
assertEquals(ByteOrder.LITTLE_ENDIAN, buf.order());
buf.order(ByteOrder.BIG_ENDIAN);
}
/*
* Class under test for java.nio.ByteBuffer put(byte)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "put",
args = {byte.class}
)
public void testPutbyte() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.put((byte) 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(i, buf.position());
ByteBuffer ret = buf.put((byte) i);
assertEquals((byte) i, buf.get(i));
assertSame(ret, buf);
}
try {
buf.put((byte) 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.rewind();
buf.put(Byte.MAX_VALUE);
assertEquals(Byte.MAX_VALUE, buf.get(0));
buf.rewind();
buf.put(Byte.MIN_VALUE);
assertEquals(Byte.MIN_VALUE, buf.get(0));
}
/*
* Class under test for java.nio.ByteBuffer put(byte[])
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "put",
args = {byte[].class}
)
public void testPutbyteArray() {
byte array[] = new byte[1];
if (buf.isReadOnly()) {
try {
buf.put(array);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(i, buf.position());
array[0] = (byte) i;
ByteBuffer ret = buf.put(array);
assertEquals((byte) i, buf.get(i));
assertSame(ret, buf);
}
try {
buf.put(array);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
try {
buf.put((byte[])null);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (NullPointerException e) {
// expected
}
}
/*
* Class under test for java.nio.ByteBuffer put(byte[], int, int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "put",
args = {byte[].class, int.class, int.class}
)
public void testPutbyteArrayintint() {
buf.clear();
byte array[] = new byte[buf.capacity()];
if (buf.isReadOnly()) {
try {
buf.put(array, 0, array.length);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
try {
buf.put(new byte[buf.capacity() + 1], 0, buf.capacity() + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
assertEquals(0, buf.position());
try {
buf.put(array, -1, array.length);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put(array, array.length + 1, 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.put(array, array.length, 0);
assertEquals(0, buf.position());
try {
buf.put(array, 0, -1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put(array, 2, array.length);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put(array, 2, Integer.MAX_VALUE);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put(array, Integer.MAX_VALUE, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put((byte[])null, 2, Integer.MAX_VALUE);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (NullPointerException e) {
// expected
}
assertEquals(0, buf.position());
loadTestData2(array, 0, array.length);
ByteBuffer ret = buf.put(array, 0, array.length);
assertEquals(buf.position(), buf.capacity());
assertContentEquals(buf, array, 0, array.length);
assertSame(ret, buf);
}
/*
* Class under test for java.nio.ByteBuffer put(java.nio.ByteBuffer)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "put",
args = {java.nio.ByteBuffer.class}
)
public void testPutByteBuffer() {
ByteBuffer other = ByteBuffer.allocate(buf.capacity());
if (buf.isReadOnly()) {
try {
buf.clear();
buf.put(other);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
try {
buf.clear();
buf.put((ByteBuffer)null);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
try {
buf.put(buf);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
try {
buf.put(ByteBuffer.allocate(buf.capacity() + 1));
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
try {
buf.put((ByteBuffer)null);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (NullPointerException e) {
// expected
}
loadTestData2(other);
other.clear();
buf.clear();
ByteBuffer ret = buf.put(other);
assertEquals(other.position(), other.capacity());
assertEquals(buf.position(), buf.capacity());
assertContentEquals(other, buf);
assertSame(ret, buf);
}
/*
* Class under test for java.nio.ByteBuffer put(int, byte)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "put",
args = {int.class, byte.class}
)
public void testPutintbyte() {
if (buf.isReadOnly()) {
try {
buf.put(0, (byte) 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(0, buf.position());
ByteBuffer ret = buf.put(i, (byte) i);
assertEquals((byte) i, buf.get(i));
assertSame(ret, buf);
}
try {
buf.put(-1, (byte) 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.put(buf.limit(), (byte) 0);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.put(0, Byte.MAX_VALUE);
assertEquals(Byte.MAX_VALUE, buf.get(0));
buf.put(0, Byte.MIN_VALUE);
assertEquals(Byte.MIN_VALUE, buf.get(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "slice",
args = {}
)
public void testSlice() {
loadTestData1(buf);
assertTrue(buf.capacity() > SMALL_TEST_LENGTH);
buf.position(1);
buf.limit(buf.capacity() - 1);
ByteBuffer slice = buf.slice();
assertEquals(buf.isReadOnly(), slice.isReadOnly());
assertEquals(buf.isDirect(), slice.isDirect());
assertEquals(buf.order(), slice.order());
assertEquals(0, slice.position());
assertEquals(buf.remaining(), slice.limit());
assertEquals(buf.remaining(), slice.capacity());
try {
slice.reset();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (InvalidMarkException e) {
// expected
}
// slice share the same content with buf
if (!slice.isReadOnly()) {
loadTestData1(slice);
assertContentLikeTestData1(buf, 1, (byte) 0, slice.capacity());
buf.put(2, (byte) 100);
assertEquals(100, slice.get(1));
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "toString",
args = {}
)
public void testToString() {
String str = buf.toString();
assertTrue(str.indexOf("Byte") >= 0 || str.indexOf("byte") >= 0);
assertTrue(str.indexOf("" + buf.position()) >= 0);
assertTrue(str.indexOf("" + buf.limit()) >= 0);
assertTrue(str.indexOf("" + buf.capacity()) >= 0);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asCharBuffer",
args = {}
)
public void testAsCharBuffer() {
CharBuffer charBuffer;
byte bytes[] = new byte[2];
char value;
loadTestData1(buf);
// test BIG_ENDIAN char buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
charBuffer = buf.asCharBuffer();
assertSame(ByteOrder.BIG_ENDIAN, charBuffer.order());
while (charBuffer.remaining() > 0) {
buf.get(bytes);
value = charBuffer.get();
assertEquals(bytes2char(bytes, buf.order()), value);
}
// test LITTLE_ENDIAN char buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
charBuffer = buf.asCharBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, charBuffer.order());
while (charBuffer.remaining() > 0) {
buf.get(bytes);
value = charBuffer.get();
assertEquals(bytes2char(bytes, buf.order()), value);
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN char buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
charBuffer = buf.asCharBuffer();
assertSame(ByteOrder.BIG_ENDIAN, charBuffer.order());
while (charBuffer.remaining() > 0) {
value = (char) charBuffer.remaining();
charBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, char2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN char buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
charBuffer = buf.asCharBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, charBuffer.order());
while (charBuffer.remaining() > 0) {
value = (char) charBuffer.remaining();
charBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, char2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asDoubleBuffer",
args = {}
)
public void testAsDoubleBuffer() {
DoubleBuffer doubleBuffer;
byte bytes[] = new byte[8];
double value;
loadTestData1(buf);
// test BIG_ENDIAN double buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
doubleBuffer = buf.asDoubleBuffer();
assertSame(ByteOrder.BIG_ENDIAN, doubleBuffer.order());
while (doubleBuffer.remaining() > 0) {
buf.get(bytes);
value = doubleBuffer.get();
if (!(Double.isNaN(bytes2double(bytes, buf.order())) && Double
.isNaN(value))) {
assertEquals(bytes2double(bytes, buf.order()), value, 0.00);
}
}
// test LITTLE_ENDIAN double buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
doubleBuffer = buf.asDoubleBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, doubleBuffer.order());
while (doubleBuffer.remaining() > 0) {
buf.get(bytes);
value = doubleBuffer.get();
if (!(Double.isNaN(bytes2double(bytes, buf.order())) && Double
.isNaN(value))) {
assertEquals(bytes2double(bytes, buf.order()), value, 0.00);
}
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN double buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
doubleBuffer = buf.asDoubleBuffer();
assertSame(ByteOrder.BIG_ENDIAN, doubleBuffer.order());
while (doubleBuffer.remaining() > 0) {
value = doubleBuffer.remaining();
doubleBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, double2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN double buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
doubleBuffer = buf.asDoubleBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, doubleBuffer.order());
while (doubleBuffer.remaining() > 0) {
value = doubleBuffer.remaining();
doubleBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, double2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asFloatBuffer",
args = {}
)
public void testAsFloatBuffer() {
FloatBuffer floatBuffer;
byte bytes[] = new byte[4];
float value;
loadTestData1(buf);
// test BIG_ENDIAN float buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
floatBuffer = buf.asFloatBuffer();
assertSame(ByteOrder.BIG_ENDIAN, floatBuffer.order());
while (floatBuffer.remaining() > 0) {
buf.get(bytes);
value = floatBuffer.get();
if (!(Float.isNaN(bytes2float(bytes, buf.order())) && Float
.isNaN(value))) {
assertEquals(bytes2float(bytes, buf.order()), value, 0.00);
}
}
// test LITTLE_ENDIAN float buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
floatBuffer = buf.asFloatBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, floatBuffer.order());
while (floatBuffer.remaining() > 0) {
buf.get(bytes);
value = floatBuffer.get();
if (!(Float.isNaN(bytes2float(bytes, buf.order())) && Float
.isNaN(value))) {
assertEquals(bytes2float(bytes, buf.order()), value, 0.00);
}
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN float buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
floatBuffer = buf.asFloatBuffer();
assertSame(ByteOrder.BIG_ENDIAN, floatBuffer.order());
while (floatBuffer.remaining() > 0) {
value = floatBuffer.remaining();
floatBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, float2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN float buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
floatBuffer = buf.asFloatBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, floatBuffer.order());
while (floatBuffer.remaining() > 0) {
value = floatBuffer.remaining();
floatBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, float2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asIntBuffer",
args = {}
)
public void testAsIntBuffer() {
IntBuffer intBuffer;
byte bytes[] = new byte[4];
int value;
loadTestData1(buf);
// test BIG_ENDIAN int buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
intBuffer = buf.asIntBuffer();
assertSame(ByteOrder.BIG_ENDIAN, intBuffer.order());
while (intBuffer.remaining() > 0) {
buf.get(bytes);
value = intBuffer.get();
assertEquals(bytes2int(bytes, buf.order()), value);
}
// test LITTLE_ENDIAN int buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
intBuffer = buf.asIntBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, intBuffer.order());
while (intBuffer.remaining() > 0) {
buf.get(bytes);
value = intBuffer.get();
assertEquals(bytes2int(bytes, buf.order()), value);
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN int buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
intBuffer = buf.asIntBuffer();
assertSame(ByteOrder.BIG_ENDIAN, intBuffer.order());
while (intBuffer.remaining() > 0) {
value = intBuffer.remaining();
intBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, int2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN int buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
intBuffer = buf.asIntBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, intBuffer.order());
while (intBuffer.remaining() > 0) {
value = intBuffer.remaining();
intBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, int2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asLongBuffer",
args = {}
)
public void testAsLongBuffer() {
LongBuffer longBuffer;
byte bytes[] = new byte[8];
long value;
loadTestData1(buf);
// test BIG_ENDIAN long buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
longBuffer = buf.asLongBuffer();
assertSame(ByteOrder.BIG_ENDIAN, longBuffer.order());
while (longBuffer.remaining() > 0) {
buf.get(bytes);
value = longBuffer.get();
assertEquals(bytes2long(bytes, buf.order()), value);
}
// test LITTLE_ENDIAN long buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
longBuffer = buf.asLongBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, longBuffer.order());
while (longBuffer.remaining() > 0) {
buf.get(bytes);
value = longBuffer.get();
assertEquals(bytes2long(bytes, buf.order()), value);
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN long buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
longBuffer = buf.asLongBuffer();
assertSame(ByteOrder.BIG_ENDIAN, longBuffer.order());
while (longBuffer.remaining() > 0) {
value = longBuffer.remaining();
longBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, long2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN long buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
longBuffer = buf.asLongBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, longBuffer.order());
while (longBuffer.remaining() > 0) {
value = longBuffer.remaining();
longBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, long2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "asShortBuffer",
args = {}
)
public void testAsShortBuffer() {
ShortBuffer shortBuffer;
byte bytes[] = new byte[2];
short value;
loadTestData1(buf);
// test BIG_ENDIAN short buffer, read
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
shortBuffer = buf.asShortBuffer();
assertSame(ByteOrder.BIG_ENDIAN, shortBuffer.order());
while (shortBuffer.remaining() > 0) {
buf.get(bytes);
value = shortBuffer.get();
assertEquals(bytes2short(bytes, buf.order()), value);
}
// test LITTLE_ENDIAN short buffer, read
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
shortBuffer = buf.asShortBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, shortBuffer.order());
while (shortBuffer.remaining() > 0) {
buf.get(bytes);
value = shortBuffer.get();
assertEquals(bytes2short(bytes, buf.order()), value);
}
if (!buf.isReadOnly()) {
// test BIG_ENDIAN short buffer, write
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
shortBuffer = buf.asShortBuffer();
assertSame(ByteOrder.BIG_ENDIAN, shortBuffer.order());
while (shortBuffer.remaining() > 0) {
value = (short) shortBuffer.remaining();
shortBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, short2bytes(value, buf.order())));
}
// test LITTLE_ENDIAN short buffer, write
buf.clear();
buf.order(ByteOrder.LITTLE_ENDIAN);
shortBuffer = buf.asShortBuffer();
assertSame(ByteOrder.LITTLE_ENDIAN, shortBuffer.order());
while (shortBuffer.remaining() > 0) {
value = (short) shortBuffer.remaining();
shortBuffer.put(value);
buf.get(bytes);
assertTrue(Arrays.equals(bytes, short2bytes(value, buf.order())));
}
}
buf.clear();
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getChar",
args = {}
)
public void testGetChar() {
int nbytes = 2;
byte bytes[] = new byte[nbytes];
char value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getChar();
assertEquals(bytes2char(bytes, buf.order()), value);
}
try {
buf.getChar();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getChar",
args = {int.class}
)
public void testGetCharint() {
int nbytes = 2;
byte bytes[] = new byte[nbytes];
char value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getChar(i);
assertEquals(i, buf.position());
buf.get(bytes);
assertEquals(bytes2char(bytes, buf.order()), value);
}
try {
buf.getChar(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getChar(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putChar",
args = {char.class}
)
public void testPutChar() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putChar((char) 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 2;
byte bytes[] = new byte[nbytes];
char value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = (char) i;
buf.mark();
buf.putChar(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(char2bytes(value, buf.order()), bytes));
}
try {
buf.putChar(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putChar(0, Character.MAX_VALUE);
assertEquals(Character.MAX_VALUE, buf.getChar(0));
buf.rewind();
buf.putChar(0, Character.MIN_VALUE);
assertEquals(Character.MIN_VALUE, buf.getChar(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putChar",
args = {int.class, char.class}
)
public void testPutCharint() {
if (buf.isReadOnly()) {
try {
buf.putChar(0, (char) 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 2;
byte bytes[] = new byte[nbytes];
char value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = (char) i;
buf.position(i);
buf.putChar(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(char2bytes(value, buf.order()), bytes));
}
try {
buf.putChar(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putChar(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
try {
ByteBuffer.allocateDirect(16).putChar(Integer.MAX_VALUE, 'h');
} catch (IndexOutOfBoundsException e) {
//expected
}
buf.putChar(0, Character.MAX_VALUE);
assertEquals(Character.MAX_VALUE, buf.getChar(0));
buf.putChar(0, Character.MIN_VALUE);
assertEquals(Character.MIN_VALUE, buf.getChar(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getDouble",
args = {}
)
public void testGetDouble() {
int nbytes = 8;
byte bytes[] = new byte[nbytes];
double value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getDouble();
if (!(Double.isNaN(bytes2double(bytes, buf.order())) && Double
.isNaN(value))) {
assertEquals(bytes2double(bytes, buf.order()), value, 0.00);
}
}
try {
buf.getDouble();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getDouble",
args = {int.class}
)
public void testGetDoubleint() {
int nbytes = 8;
byte bytes[] = new byte[nbytes];
double value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getDouble(i);
assertEquals(i, buf.position());
buf.get(bytes);
if (!(Double.isNaN(bytes2double(bytes, buf.order())) && Double
.isNaN(value))) {
assertEquals(bytes2double(bytes, buf.order()), value, 0.00);
}
}
try {
buf.getDouble(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getDouble(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
try {
ByteBuffer.allocateDirect(16).getDouble(Integer.MAX_VALUE);
} catch (IndexOutOfBoundsException e) {
//expected
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putDouble",
args = {double.class}
)
public void testPutDouble() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putDouble(1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 8;
byte bytes[] = new byte[nbytes];
double value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.mark();
buf.putDouble(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(double2bytes(value, buf.order()), bytes));
}
try {
buf.putDouble(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putDouble(Double.MAX_VALUE);
assertEquals(Double.MAX_VALUE, buf.getDouble(0));
buf.rewind();
buf.putDouble(Double.MIN_VALUE);
assertEquals(Double.MIN_VALUE, buf.getDouble(0));
buf.rewind();
buf.putDouble(Double.NaN);
assertEquals(Double.NaN, buf.getDouble(0));
buf.rewind();
buf.putDouble(Double.NEGATIVE_INFINITY);
assertEquals(Double.NEGATIVE_INFINITY, buf.getDouble(0));
buf.rewind();
buf.putDouble(Double.POSITIVE_INFINITY);
assertEquals(Double.POSITIVE_INFINITY, buf.getDouble(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putDouble",
args = {int.class, double.class}
)
public void testPutDoubleint() {
if (buf.isReadOnly()) {
try {
buf.putDouble(0, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 8;
byte bytes[] = new byte[nbytes];
double value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.position(i);
buf.putDouble(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(double2bytes(value, buf.order()), bytes));
}
try {
buf.putDouble(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putDouble(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.putDouble(0, Double.MAX_VALUE);
assertEquals(Double.MAX_VALUE, buf.getDouble(0));
buf.putDouble(0, Double.MIN_VALUE);
assertEquals(Double.MIN_VALUE, buf.getDouble(0));
buf.putDouble(0, Double.NaN);
assertEquals(Double.NaN, buf.getDouble(0));
buf.putDouble(0, Double.NEGATIVE_INFINITY);
assertEquals(Double.NEGATIVE_INFINITY, buf.getDouble(0));
buf.putDouble(0, Double.POSITIVE_INFINITY);
assertEquals(Double.POSITIVE_INFINITY, buf.getDouble(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getFloat",
args = {}
)
public void testGetFloat() {
int nbytes = 4;
byte bytes[] = new byte[nbytes];
float value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getFloat();
if (!(Float.isNaN(bytes2float(bytes, buf.order())) && Float
.isNaN(value))) {
assertEquals(bytes2float(bytes, buf.order()), value, 0.00);
}
}
try {
buf.getFloat();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getFloat",
args = {int.class}
)
public void testGetFloatint() {
int nbytes = 4;
byte bytes[] = new byte[nbytes];
float value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getFloat(i);
assertEquals(i, buf.position());
buf.get(bytes);
if (!(Float.isNaN(bytes2float(bytes, buf.order())) && Float
.isNaN(value))) {
assertEquals(bytes2float(bytes, buf.order()), value, 0.00);
}
}
try {
buf.getFloat(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getFloat(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putFloat",
args = {float.class}
)
public void testPutFloat() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putFloat(1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 4;
byte bytes[] = new byte[nbytes];
float value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.mark();
buf.putFloat(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(float2bytes(value, buf.order()), bytes));
}
try {
buf.putFloat(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putFloat(Float.MAX_VALUE);
assertEquals(Float.MAX_VALUE, buf.getFloat(0));
buf.rewind();
buf.putFloat(Float.MIN_VALUE);
assertEquals(Float.MIN_VALUE, buf.getFloat(0));
buf.rewind();
buf.putFloat(Float.NaN);
assertEquals(Float.NaN, buf.getFloat(0));
buf.rewind();
buf.putFloat(Float.NEGATIVE_INFINITY);
assertEquals(Float.NEGATIVE_INFINITY, buf.getFloat(0));
buf.rewind();
buf.putFloat(Float.POSITIVE_INFINITY);
assertEquals(Float.POSITIVE_INFINITY, buf.getFloat(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putFloat",
args = {int.class, float.class}
)
public void testPutFloatint() {
if (buf.isReadOnly()) {
try {
buf.putFloat(0, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 4;
byte bytes[] = new byte[nbytes];
float value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.position(i);
buf.putFloat(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(float2bytes(value, buf.order()), bytes));
}
try {
buf.putFloat(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putFloat(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.putFloat(0, Float.MAX_VALUE);
assertEquals(Float.MAX_VALUE, buf.getFloat(0));
buf.putFloat(0, Float.MIN_VALUE);
assertEquals(Float.MIN_VALUE, buf.getFloat(0));
buf.putFloat(0, Float.NaN);
assertEquals(Float.NaN, buf.getFloat(0));
buf.putFloat(0, Float.NEGATIVE_INFINITY);
assertEquals(Float.NEGATIVE_INFINITY, buf.getFloat(0));
buf.putFloat(0, Float.POSITIVE_INFINITY);
assertEquals(Float.POSITIVE_INFINITY, buf.getFloat(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getInt",
args = {}
)
public void testGetInt() {
int nbytes = 4;
byte bytes[] = new byte[nbytes];
int value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getInt();
assertEquals(bytes2int(bytes, buf.order()), value);
}
try {
buf.getInt();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getInt",
args = {int.class}
)
public void testGetIntint() {
int nbytes = 4;
byte bytes[] = new byte[nbytes];
int value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getInt(i);
assertEquals(i, buf.position());
buf.get(bytes);
assertEquals(bytes2int(bytes, buf.order()), value);
}
try {
buf.getInt(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getInt(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
try {
ByteBuffer.allocateDirect(16).getInt(Integer.MAX_VALUE);
} catch (IndexOutOfBoundsException e) {
//expected
}
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putInt",
args = {int.class}
)
public void testPutInt() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putInt(1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 4;
byte bytes[] = new byte[nbytes];
int value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.mark();
buf.putInt(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(int2bytes(value, buf.order()), bytes));
}
try {
buf.putInt(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putInt(Integer.MAX_VALUE);
assertEquals(Integer.MAX_VALUE, buf.getInt(0));
buf.rewind();
buf.putInt(Integer.MIN_VALUE);
assertEquals(Integer.MIN_VALUE, buf.getInt(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putInt",
args = {int.class, int.class}
)
public void testPutIntint() {
if (buf.isReadOnly()) {
try {
buf.putInt(0, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 4;
byte bytes[] = new byte[nbytes];
int value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.position(i);
buf.putInt(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(int2bytes(value, buf.order()), bytes));
}
try {
buf.putInt(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putInt(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.putInt(0, Integer.MAX_VALUE);
assertEquals(Integer.MAX_VALUE, buf.getInt(0));
buf.putInt(0, Integer.MIN_VALUE);
assertEquals(Integer.MIN_VALUE, buf.getInt(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getLong",
args = {}
)
public void testGetLong() {
int nbytes = 8;
byte bytes[] = new byte[nbytes];
long value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getLong();
assertEquals(bytes2long(bytes, buf.order()), value);
}
try {
buf.getLong();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getLong",
args = {int.class}
)
public void testGetLongint() {
int nbytes = 8;
byte bytes[] = new byte[nbytes];
long value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getLong(i);
assertEquals(i, buf.position());
buf.get(bytes);
assertEquals(bytes2long(bytes, buf.order()), value);
}
try {
buf.getLong(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getLong(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putLong",
args = {long.class}
)
public void testPutLong() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putLong(1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 8;
byte bytes[] = new byte[nbytes];
long value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.mark();
buf.putLong(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(long2bytes(value, buf.order()), bytes));
}
try {
buf.putLong(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putLong(Long.MAX_VALUE);
assertEquals(Long.MAX_VALUE, buf.getLong(0));
buf.rewind();
buf.putLong(Long.MIN_VALUE);
assertEquals(Long.MIN_VALUE, buf.getLong(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putLong",
args = {int.class, long.class}
)
public void testPutLongint() {
if (buf.isReadOnly()) {
try {
buf.putLong(0, 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 8;
byte bytes[] = new byte[nbytes];
long value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = i;
buf.position(i);
buf.putLong(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(long2bytes(value, buf.order()), bytes));
}
try {
buf.putLong(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putLong(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.putLong(0, Long.MAX_VALUE);
assertEquals(Long.MAX_VALUE, buf.getLong(0));
buf.putLong(0, Long.MIN_VALUE);
assertEquals(Long.MIN_VALUE, buf.getLong(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getShort",
args = {}
)
public void testGetShort() {
int nbytes = 2;
byte bytes[] = new byte[nbytes];
short value;
loadTestData1(buf);
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
assertEquals(i * nbytes, buf.position());
buf.mark();
buf.get(bytes);
buf.reset();
value = buf.getShort();
assertEquals(bytes2short(bytes, buf.order()), value);
}
try {
buf.getShort();
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferUnderflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "getShort",
args = {int.class}
)
public void testGetShortint() {
int nbytes = 2;
byte bytes[] = new byte[nbytes];
short value;
loadTestData1(buf);
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
buf.position(i);
value = buf.getShort(i);
assertEquals(i, buf.position());
buf.get(bytes);
assertEquals(bytes2short(bytes, buf.order()), value);
}
try {
buf.getShort(-1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.getShort(buf.limit() - nbytes + 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putShort",
args = {short.class}
)
public void testPutShort() {
if (buf.isReadOnly()) {
try {
buf.clear();
buf.putShort((short) 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 2;
byte bytes[] = new byte[nbytes];
short value = 0;
buf.clear();
for (int i = 0; buf.remaining() >= nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = (short) i;
buf.mark();
buf.putShort(value);
assertEquals((i + 1) * nbytes, buf.position());
buf.reset();
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(short2bytes(value, buf.order()), bytes));
}
try {
buf.putShort(value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (BufferOverflowException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.rewind();
buf.putShort(Short.MAX_VALUE);
assertEquals(Short.MAX_VALUE, buf.getShort(0));
buf.rewind();
buf.putShort(Short.MIN_VALUE);
assertEquals(Short.MIN_VALUE, buf.getShort(0));
}
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "putShort",
args = {int.class, short.class}
)
public void testPutShortint() {
if (buf.isReadOnly()) {
try {
buf.putShort(0, (short) 1);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (ReadOnlyBufferException e) {
// expected
}
return;
}
int nbytes = 2;
byte bytes[] = new byte[nbytes];
short value = 0;
buf.clear();
for (int i = 0; i <= buf.limit() - nbytes; i++) {
buf.order(i % 2 == 0 ? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN);
value = (short) i;
buf.position(i);
buf.putShort(i, value);
assertEquals(i, buf.position());
buf.get(bytes);
assertTrue("Wrong value at " + i,
Arrays.equals(short2bytes(value, buf.order()), bytes));
}
try {
buf.putShort(-1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
try {
buf.putShort(buf.limit() - nbytes + 1, value);
fail("Should throw Exception"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
// expected
}
buf.order(ByteOrder.BIG_ENDIAN);
buf.putShort(0, Short.MAX_VALUE);
assertEquals(Short.MAX_VALUE, buf.getShort(0));
buf.putShort(0, Short.MIN_VALUE);
assertEquals(Short.MIN_VALUE, buf.getShort(0));
}
/**
* @tests java.nio.ByteBuffer.wrap(byte[],int,int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Regression test. Verifies NullPointerException, IndexOutOfBoundsException.",
method = "wrap",
args = {byte[].class, int.class, int.class}
)
public void testWrappedByteBuffer_null_array() {
// Regression for HARMONY-264
byte array[] = null;
try {
ByteBuffer.wrap(array, -1, 0);
fail("Should throw NPE"); //$NON-NLS-1$
} catch (NullPointerException e) {
}
try {
ByteBuffer.wrap(new byte[10], Integer.MAX_VALUE, 2);
fail("Should throw IndexOutOfBoundsException"); //$NON-NLS-1$
} catch (IndexOutOfBoundsException e) {
}
}
/*
* test for method static ByteBuffer wrap(byte[] array)
* test covers following usecases:
* 1. case for check ByteBuffer buf2 properties
* 2. case for check equal between buf2 and byte array[]
* 3. case for check a buf2 dependens to array[]
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "wrap",
args = {byte[].class}
)
public void test_Wrap$B() {
byte array[] = new byte[BUFFER_LENGTH];
loadTestData1(array, 0, BUFFER_LENGTH);
ByteBuffer buf2 = ByteBuffer.wrap(array);
// case: ByteBuffer buf2 properties is satisfy the conditions specification
assertEquals(array.length, buf2.capacity());
assertEquals(array.length, buf2.limit());
assertEquals(0, buf2.position());
// case: ByteBuffer buf2 is equal to byte array[]
assertContentEquals(buf2, array, 0, array.length);
// case: ByteBuffer buf2 is depended to byte array[]
loadTestData2(array, 0, buf.capacity());
assertContentEquals(buf2, array, 0, array.length);
}
/*
* test for method static ByteBuffer wrap(byte[] array, int offset, int length)
* test covers following usecases:
* 1. case for check ByteBuffer buf2 properties
* 2. case for check equal between buf2 and byte array[]
* 3. case for check a buf2 dependens to array[]
* 4. case expected IndexOutOfBoundsException
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "wrap",
args = {byte[].class, int.class, int.class}
)
public void test_Wrap$BII() {
byte array[] = new byte[BUFFER_LENGTH];
int offset = 5;
int length = BUFFER_LENGTH - offset;
loadTestData1(array, 0, BUFFER_LENGTH);
ByteBuffer buf2 = ByteBuffer.wrap(array, offset, length);
// case: ByteBuffer buf2 properties is satisfy the conditions specification
assertEquals(array.length, buf2.capacity());
assertEquals(offset, buf2.position());
assertEquals(offset + length, buf2.limit());
assertEquals(0, buf2.arrayOffset());
// case: ByteBuffer buf2 is equal to byte array[]
assertContentEquals(buf2, array, 0, array.length);
// case: ByteBuffer buf2 is depended to byte array[]
loadTestData2(array, 0, buf.capacity());
assertContentEquals(buf2, array, 0, array.length);
// case: expected IndexOutOfBoundsException
try {
offset = 7;
buf2 = ByteBuffer.wrap(array, offset, length);
fail("wrap method does not throws expected exception");
} catch (IndexOutOfBoundsException e) {
//expected
}
}
protected void loadTestData1(byte array[], int offset, int length) {
for (int i = 0; i < length; i++) {
array[offset + i] = (byte) i;
}
}
protected void loadTestData2(byte array[], int offset, int length) {
for (int i = 0; i < length; i++) {
array[offset + i] = (byte) (length - i);
}
}
protected void loadTestData1(ByteBuffer buf) {
if (buf.isReadOnly()) {
return;
}
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
buf.put(i, (byte) i);
}
}
protected void loadTestData2(ByteBuffer buf) {
buf.clear();
for (int i = 0; i < buf.capacity(); i++) {
buf.put(i, (byte) (buf.capacity() - i));
}
}
private void assertContentEquals(ByteBuffer buf, byte array[],
int offset, int length) {
for (int i = 0; i < length; i++) {
assertEquals(array[offset + i], buf.get(i));
}
}
private void assertContentEquals(ByteBuffer buf, ByteBuffer other) {
assertEquals(buf.capacity(), other.capacity());
for (int i = 0; i < buf.capacity(); i++) {
assertEquals(buf.get(i), other.get(i));
}
}
private void assertContentLikeTestData1(ByteBuffer buf,
int startIndex, byte startValue, int length) {
byte value = startValue;
for (int i = 0; i < length; i++) {
assertEquals(buf.get(startIndex + i), value);
value = (byte) (value + 1);
}
}
private int bytes2int(byte bytes[], ByteOrder order) {
int nbytes = 4, bigHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
bigHead = 0;
step = 1;
} else {
bigHead = nbytes - 1;
step = -1;
}
int result = 0;
int p = bigHead;
for (int i = 0; i < nbytes; i++) {
result = result << 8;
result = result | (bytes[p] & 0xff);
p += step;
}
return result;
}
private long bytes2long(byte bytes[], ByteOrder order) {
int nbytes = 8, bigHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
bigHead = 0;
step = 1;
} else {
bigHead = nbytes - 1;
step = -1;
}
long result = 0;
int p = bigHead;
for (int i = 0; i < nbytes; i++) {
result = result << 8;
result = result | (bytes[p] & 0xff);
p += step;
}
return result;
}
private short bytes2short(byte bytes[], ByteOrder order) {
int nbytes = 2, bigHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
bigHead = 0;
step = 1;
} else {
bigHead = nbytes - 1;
step = -1;
}
short result = 0;
int p = bigHead;
for (int i = 0; i < nbytes; i++) {
result = (short) (result << 8);
result = (short) (result | (bytes[p] & 0xff));
p += step;
}
return result;
}
private char bytes2char(byte bytes[], ByteOrder order) {
return (char) bytes2short(bytes, order);
}
private float bytes2float(byte bytes[], ByteOrder order) {
return Float.intBitsToFloat(bytes2int(bytes, order));
}
private double bytes2double(byte bytes[], ByteOrder order) {
return Double.longBitsToDouble(bytes2long(bytes, order));
}
private byte[] int2bytes(int value, ByteOrder order) {
int nbytes = 4, smallHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
smallHead = nbytes - 1;
step = -1;
} else {
smallHead = 0;
step = 1;
}
byte bytes[] = new byte[nbytes];
int p = smallHead;
for (int i = 0; i < nbytes; i++) {
bytes[p] = (byte) (value & 0xff);
value = value >> 8;
p += step;
}
return bytes;
}
private byte[] long2bytes(long value, ByteOrder order) {
int nbytes = 8, smallHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
smallHead = nbytes - 1;
step = -1;
} else {
smallHead = 0;
step = 1;
}
byte bytes[] = new byte[nbytes];
int p = smallHead;
for (int i = 0; i < nbytes; i++) {
bytes[p] = (byte) (value & 0xff);
value = value >> 8;
p += step;
}
return bytes;
}
private byte[] short2bytes(short value, ByteOrder order) {
int nbytes = 2, smallHead, step;
if (order == ByteOrder.BIG_ENDIAN) {
smallHead = nbytes - 1;
step = -1;
} else {
smallHead = 0;
step = 1;
}
byte bytes[] = new byte[nbytes];
int p = smallHead;
for (int i = 0; i < nbytes; i++) {
bytes[p] = (byte) (value & 0xff);
value = (short) (value >> 8);
p += step;
}
return bytes;
}
private byte[] char2bytes(char value, ByteOrder order) {
return short2bytes((short) value, order);
}
private byte[] float2bytes(float value, ByteOrder order) {
return int2bytes(Float.floatToRawIntBits(value), order);
}
private byte[] double2bytes(double value, ByteOrder order) {
return long2bytes(Double.doubleToRawLongBits(value), order);
}
}