| /* |
| * 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); |
| } |
| } |