| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed 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 libcore.java.lang.reflect; |
| |
| import java.lang.reflect.Array; |
| import junit.framework.TestCase; |
| |
| /** |
| * Test java.lang.reflect.Array methods. |
| */ |
| public class OldAndroidArrayTest extends TestCase { |
| |
| public void testSingleInt() throws Exception { |
| Object intArray = Array.newInstance(Integer.TYPE, 2); |
| |
| int[] array = (int[]) intArray; |
| array[0] = 5; |
| Array.setInt(intArray, 1, 6); |
| |
| assertEquals(5, Array.getInt(intArray, 0)); |
| assertEquals(6, array[1]); |
| |
| try { |
| array[2] = 27; |
| fail("store should have failed"); |
| } catch (ArrayIndexOutOfBoundsException abe) { |
| // expected |
| } |
| |
| assertEquals(2, array.length); |
| assertEquals(Array.getLength(intArray), array.length); |
| |
| try { |
| int[][] wrongArray = (int[][]) intArray; |
| fail("cast should have failed"); |
| } catch (ClassCastException cce) { |
| // expected |
| } |
| |
| intArray = Array.newInstance(Integer.TYPE, 0); |
| assertEquals(0, Array.getLength(intArray)); |
| } |
| |
| public void testSingle() throws Exception { |
| Object strArray = Array.newInstance(String.class, 2); |
| |
| String[] array = (String[]) strArray; |
| array[0] = "entry zero"; |
| Array.set(strArray, 1, "entry one"); |
| |
| //System.out.println("array: " + array); |
| |
| assertEquals("entry zero", Array.get(strArray, 0)); |
| assertEquals("entry one", array[1]); |
| |
| assertEquals(2, array.length); |
| assertEquals(Array.getLength(strArray), array.length); |
| } |
| |
| public void testMultiInt() throws Exception { |
| int[] dimensions = {3, 2, 1}; |
| Object intIntIntArray = Array.newInstance(Integer.TYPE, dimensions); |
| int[][][] array3 = (int[][][]) intIntIntArray; |
| |
| array3[0][0][0] = 123; |
| array3[2][1][0] = 456; |
| |
| try { |
| array3[2][1][1] = 768; |
| fail("store should have failed"); |
| } catch (ArrayIndexOutOfBoundsException abe) { |
| // expected |
| } |
| |
| //System.out.println("array3: " + array3); |
| } |
| |
| public void testMulti() throws Exception { |
| int[] dimensions = {1, 2, 3}; |
| Object strStrStrArray = Array.newInstance(String.class, dimensions); |
| String[][][] array3 = (String[][][]) strStrStrArray; |
| |
| array3[0][0][0] = "zero zero zero"; |
| array3[0][1][2] = "zero one two"; |
| |
| try { |
| array3[1][0][0] = "bad store"; |
| fail("store should have failed"); |
| } catch (ArrayIndexOutOfBoundsException abe) { |
| // expected |
| } |
| |
| try { |
| String[][] array2 = (String[][]) strStrStrArray; |
| fail("expecting bad cast"); |
| } catch (ClassCastException cce) { |
| // expected |
| } |
| //System.out.println("array3: " + array3); |
| |
| |
| int[] dimensions2 = {1, 2}; |
| strStrStrArray = Array.newInstance(String[].class, dimensions2); |
| array3 = (String[][][]) strStrStrArray; |
| array3[0][1] = new String[3]; |
| array3[0][1][2] = "zero one two"; |
| try { |
| array3[1][0][0] = "bad store"; |
| fail("store should have failed"); |
| } catch (ArrayIndexOutOfBoundsException abe) { |
| // expected |
| } |
| //System.out.println("array3: " + array3); |
| } |
| } |
| |