/* 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 java.nio.BufferOverflowException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.ShortBuffer; import java.nio.IntBuffer; //@TestTargetClass(java.nio.ShortBuffer.class) public class DirectShortBufferTest extends ShortBufferTest { public void setUp(){ capacity = BUFFER_LENGTH; buf = ByteBuffer.allocateDirect(BUFFER_LENGTH*2).asShortBuffer(); loadTestData1(buf); baseBuf = buf; } public void tearDown(){ buf = null; baseBuf = null; } /** * Regression for http://code.google.com/p/android/issues/detail?id=3279 @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "", method = "put", args = {short[].class, int.class, int.class} ) */ public void testPutWhenOffsetIsNonZero() { ByteBuffer byteBuffer = ByteBuffer.allocateDirect(40); byteBuffer.order(ByteOrder.nativeOrder()); ShortBuffer shortBuffer = byteBuffer.asShortBuffer(); short[] source = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; shortBuffer.put(source, 2, 2); shortBuffer.put(source, 4, 2); assertEquals(4, shortBuffer.get(0)); assertEquals(5, shortBuffer.get(1)); assertEquals(6, shortBuffer.get(2)); assertEquals(7, shortBuffer.get(3)); } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Verifies hasArray method for direct ShortBuffer.", method = "hasArray", args = {} ) */ public void testHasArray() { assertFalse(buf.hasArray()); } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Verifies array method for direct ShortBuffer.", method = "array", args = {} ) */ public void testArray() { try { buf.array(); fail("Should throw UnsupportedOperationException"); //$NON-NLS-1$ } catch (UnsupportedOperationException e) { } } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Verifies arrayOffset method for direct ShortBuffer.", method = "arrayOffset", args = {} ) */ public void testArrayOffset() { try { buf.arrayOffset(); fail("Should throw UnsupportedOperationException"); //$NON-NLS-1$ } catch (UnsupportedOperationException e) { //expected } } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Verifies isDirect method for direct ShortBuffer.", method = "isDirect", args = {} ) */ public void testIsDirect() { assertTrue(buf.isDirect()); } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Verifies order method for direct ShortBuffer.", method = "order", args = {} ) */ public void testOrder() { assertEquals(ByteOrder.BIG_ENDIAN, buf.order()); } /* @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "Regression test for ShortToByteBufferAdapter", clazz = ByteBuffer.class, method = "asShortBuffer", args = {} ) */ public void testRangeChecks() { short[] myShorts = new short[BUFFER_LENGTH]; for (short i = 0; i < BUFFER_LENGTH; i++) { myShorts[i] = (short) (1000 + i); } buf.position(0); buf.put(myShorts, 0, BUFFER_LENGTH); buf.position(0); buf.put(myShorts, 0, BUFFER_LENGTH); try { buf.put(myShorts, 0, 1); // should fail fail("BufferOverflowException expected but not thrown"); } catch (BufferOverflowException boe) { // expected } try { buf.position(0); buf.put(myShorts, 0, BUFFER_LENGTH + 1); // should fail fail("BufferOverflowException expected but not thrown"); } catch (IndexOutOfBoundsException ioobe) { // expected } try { buf.position(BUFFER_LENGTH - 1); buf.put(myShorts, 0, 2); // should fail fail("BufferOverflowException expected but not thrown"); } catch (BufferOverflowException boe) { // expected } } }