1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.nio.tests.java.nio; 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.BufferOverflowException; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ByteBuffer; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ByteOrder; 25bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilsonimport java.nio.IntBuffer; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(java.nio.IntBuffer.class) 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class DirectIntBufferTest extends IntBufferTest { 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setUp(){ 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project capacity = BUFFER_LENGTH; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf = ByteBuffer.allocateDirect(BUFFER_LENGTH*4).asIntBuffer(); 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project loadTestData1(buf); 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project baseBuf = buf; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void tearDown(){ 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf = null; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project baseBuf = null; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson /** 42bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson * Regression for http://code.google.com/p/android/issues/detail?id=3279 43bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson */ 44bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson @TestTargetNew( 45bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson level = TestLevel.PARTIAL_COMPLETE, 46bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson notes = "", 47bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson method = "put", 48bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson args = {int[].class, int.class, int.class} 49bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson ) 50bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson public void testPutWhenOffsetIsNonZero() { 51bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson ByteBuffer byteBuffer = ByteBuffer.allocateDirect(40); 52bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson byteBuffer.order(ByteOrder.nativeOrder()); 53bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson IntBuffer intBuffer = byteBuffer.asIntBuffer(); 54bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson 55bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson int[] source = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; 56bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson 57bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson intBuffer.put(source, 2, 2); 58bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson intBuffer.put(source, 4, 2); 59bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson assertEquals(4, intBuffer.get(0)); 60bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson assertEquals(5, intBuffer.get(1)); 61bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson assertEquals(6, intBuffer.get(2)); 62bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson assertEquals(7, intBuffer.get(3)); 63bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson } 64bd79e4498465381117f2cbc6399a256061f1d144Jesse Wilson 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies hasArray method for direct IntBuffer.", 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hasArray", 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testHasArray() { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(buf.hasArray()); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies array method for direct IntBuffer.", 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "array", 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testArray() { 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.array(); 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnsupportedOperationException"); //$NON-NLS-1$ 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnsupportedOperationException e) { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies arrayOffset method for direct IntBuffer.", 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "arrayOffset", 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testArrayOffset() { 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.arrayOffset(); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnsupportedOperationException"); //$NON-NLS-1$ 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnsupportedOperationException e) { 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isDirect method for direct IntBuffer.", 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isDirect", 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsDirect() { 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(buf.isDirect()); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies order method for direct IntBuffer.", 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "order", 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testOrder() { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(ByteOrder.BIG_ENDIAN, buf.order()); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Regression test for IntToByteBufferAdapter", 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ByteBuffer.class, 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "asIntBuffer", 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testRangeChecks() { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] myInts = new int[BUFFER_LENGTH]; 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < BUFFER_LENGTH; i++) { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myInts[i] = 1000 + i; 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.position(0); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.put(myInts, 0, BUFFER_LENGTH); 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.position(0); 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.put(myInts, 0, BUFFER_LENGTH); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.put(myInts, 0, 1); // should fail 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("BufferOverflowException expected but not thrown"); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (BufferOverflowException boe) { 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.position(0); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.put(myInts, 0, BUFFER_LENGTH + 1); // should fail 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("BufferOverflowException expected but not thrown"); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException ioobe) { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.position(BUFFER_LENGTH - 1); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.put(myInts, 0, 2); // should fail 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("BufferOverflowException expected but not thrown"); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (BufferOverflowException boe) { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 167