/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Common Public License (CPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/cpl1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
class TestArrayAccess {
public static void main(String[] args) {
run();
}
static boolean testSuccess = true;
public static boolean run() {
boolean retSuccess = true;
System.out.print("TestArrayAccess");
boolean_array();
if (!testSuccess) {
System.out.print("\n--boolean_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
byte_array();
if (!testSuccess) {
System.out.print("\n--byte_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
char_array();
if (!testSuccess) {
System.out.print("\n--char_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
short_array();
if (!testSuccess) {
System.out.print("\n--short_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
int_array();
if (!testSuccess) {
System.out.print("\n--int_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
long_array();
if (!testSuccess) {
System.out.print("\n--long_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
float_array();
if (!testSuccess) {
System.out.print("\n--float_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
double_array();
if (!testSuccess) {
System.out.print("\n--double_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
object_array();
if (!testSuccess) {
System.out.print("\n--object_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
array_array();
if (!testSuccess) {
System.out.print("\n--array_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
multi_int_array();
if (!testSuccess) {
System.out.print("\n--multi_int_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
multi_object_array();
if (!testSuccess) {
System.out.print("\n--multi_object_array--");
System.out.println(" failed. ***************\n\n");
}
retSuccess &= testSuccess;
testSuccess = true;
/*
multi_partial_array();
if (!testSuccess) {
System.out.print("\n--multi_partial_array--");
System.out.println(" failed. ***************\n\n");
}
*/
if (retSuccess)
System.out.println(" succeeded.");
return retSuccess;
}
static void boolean_array() {
boolean[] array = new boolean[2]; // newarray type=4 eltsize=1
boolean x0 = false; // iconst_0
boolean x1 = true; // iconst_1
array[0] = x0; // bastore
array[1] = x1; // bastore
if (array[0]) {
System.out.print("\nwant: false\n got: ");
System.out.println(array[0]); // baload
testSuccess = false;
}
if (!array[1]) {
System.out.print("\nwant: true\n got: ");
System.out.println(array[1]); // baload
testSuccess = false;
}
}
static void byte_array() {
byte[] array = new byte[2]; // newarray type=8 eltsize=1
byte x0 = 127;
byte x1 = -1;
array[0] = x0; // bastore
array[1] = x1; // bastore
if (array[0] != 127) {
System.out.print("\nwant: 127\n got: ");
System.out.println(array[0]); // baload
testSuccess = false;
}
if (array[1] != -1) {
System.out.print("\nwant: -1\n got: ");
System.out.println(array[1]); // baload (note sign extension)
testSuccess = false;
}
}
static void char_array() {
char[] array = new char[2]; // newarray type=5 eltsize=2
char x0 = 0x7f41;
char x1 = 0xff41;
array[0] = x0; // castore
array[1] = x1; // castore
String str = Integer.toHexString(array[0]); // caload
if (!str.equals("7f41")) {
System.out.print("\nwant: 7f41\n got: ");
System.out.println(Integer.toHexString(array[0])); // caload
testSuccess = false;
}
str = Integer.toHexString(array[1]); // caload (note zero extension)
if (!str.equals("ff41")) {
System.out.print("\nwant: ff41\n got: ");
System.out.println(Integer.toHexString(array[1])); // caload (note zero extension)
testSuccess = false;
}
}
static void short_array() {
short[] array = new short[2]; // newarray type=9 eltsize=2
short x0 = 32767;
short x1 = -1;
array[0] = x0; // sastore
array[1] = x1; // sastore
if (array[0] != 32767) {
System.out.print("\nwant: 32767\n got: ");
System.out.println(array[0]); // saload
testSuccess = false;
}
if (array[1] != -1) {
System.out.print("\nwant: -1\n got: ");
System.out.println(array[1]); // saload (note sign extension)
testSuccess = false;
}
}
static void int_array() {
int[] array = new int[2]; // newarray type=10 eltsize=4
int x0 = 0;
int x1 = 1;
array[0] = x0; // iastore
array[1] = x1; // iastore
if (array[0] != 0) {
System.out.print("\nwant: 0\n got: ");
System.out.println(array[0]); // iaload
testSuccess = false;
}
if (array[1] != 1) {
System.out.print("\nwant: 1\n got: ");
System.out.println(array[1]); // iaload
testSuccess = false;
}
}
static void long_array() {
long[] array = new long[2]; // newarray type=11 eltsize=8
long x0 = 0;
long x1 = 1;
array[0] = x0; // lastore
array[1] = x1; // lastore
if (array[0] != 0) {
System.out.print("\nwant: 0\n got: ");
System.out.println(array[0]); // laload
testSuccess = false;
}
if (array[1] != 1) {
System.out.print("\nwant: 1\n got: ");
System.out.println(array[1]); // laload
testSuccess = false;
}
}
static void float_array() {
float[] array = new float[2]; // newarray type=6 eltsize=4
float x0 = 0;
float x1 = 1;
array[0] = x0; // fastore
array[1] = x1; // fastore
if (array[0] != 0.0) {
System.out.print("\nwant: 0.0\n got: ");
System.out.println(array[0]); // faload
testSuccess = false;
}
if (array[1] != 1.0) {
System.out.print("\nwant: 1.0\n got: ");
System.out.println(array[1]); // faload
testSuccess = false;
}
}
static void double_array() {
double[] array = new double[2]; // newarray type=7 eltsize=8
double x0 = 0;
double x1 = 1;
array[0] = x0; // dastore
array[1] = x1; // dastore
if (array[0] != 0.0) {
System.out.print("\nwant: 0.0\n got: ");
System.out.println(array[0]); // daload
testSuccess = false;
}
if (array[1] != 1.0) {
System.out.print("\nwant: 1.0\n got: ");
System.out.println(array[1]); // daload
testSuccess = false;
}
}
static void object_array() {
Object[] array = new Object[2]; // anewarray
Object x0 = null;
Object x1 = null;
array[0] = x0; // aastore
array[1] = x1; // aastore
if (array[0] != null) {
System.out.print("\nwant: null\n got: ");
System.out.println(array[0]); // aaload
testSuccess = false;
}
if (array[1] != null) {
System.out.print("\nwant: null\n got: ");
System.out.println(array[1]); // aaload
testSuccess = false;
}
}
static void array_array() {
Object[] array = new Object[2]; // anewarray
Object[] x0 = new Object[2]; // anewarray
Object[] x1 = null;
array[0] = x0; // aastore
array[1] = x1; // aastore
String str = array[0].getClass().getName(); // aaload
if (!str.equals("[Ljava.lang.Object;")) {
System.out.print("\nwant: [Ljava.lang.Object;\n got: ");
System.out.println(array[0].getClass().getName()); // aaload
testSuccess = false;
}
if (array[1] != null) {
System.out.print("\nwant: null\n got: ");
System.out.println(array[1]); // aaload
testSuccess = false;
}
}
static void multi_int_array() {
int outer = 2;
int middle = 3;
int inner = 4;
int[][][] ary = new int[outer][middle][inner]; // multianewarray
int n = 0;
int m = 0;
for (int i = 0; i < outer; ++i)
for (int j = 0; j < middle; ++j)
for (int k = 0; k < inner; ++k)
ary[i][j][k] = n++;
for (int i = 0; i < outer; ++i)
for (int j = 0; j < middle; ++j)
for (int k = 0; k < inner; ++k) {
if (ary[i][j][k] != m) {
System.out.println("\nary["+i+"]["+j+"]["+k+"]="+ary[i][j][k]);
System.out.println(" It should be: " + m);
testSuccess = false;
}
m++;
}
// System.out.println();
}
static void multi_object_array() {
int outer = 2;
int middle = 3;
int inner = 4;
Integer[][][] ary = new Integer[outer][middle][inner]; // multianewarray
int n = 0;
int m = 0;
for (int i = 0; i < outer; ++i)
for (int j = 0; j < middle; ++j)
for (int k = 0; k < inner; ++k) {
ary[i][j][k] = new Integer(n++);
if (ary[i][j][k].intValue() != m) {
System.out.println("\nary["+i+"]["+j+"]["+k+"]="+ary[i][j][k]);
System.out.println(" It should be: " + m);
testSuccess = false;
}
m++;
}
m = 0;
for (int i = 0; i < outer; ++i)
for (int j = 0; j < middle; ++j)
for (int k = 0; k < inner; ++k) {
if (ary[i][j][k].intValue() != m) {
System.out.println("\nary["+i+"]["+j+"]["+k+"]="+ary[i][j][k]);
System.out.println(" It should be: " + m);
testSuccess = false;
}
m++;
}
// System.out.println();
}
static void multi_partial_array() {
int outer = 2;
int middle = 3;
int[][][] ary = new int[outer][middle][]; // multianewarray
for (int i = 0; i < outer; ++i)
for (int j = 0; j < middle; ++j)
if (ary[i][j] != null) {
System.out.println("\nary["+i+"]["+j+"]="+ary[i][j]);
System.out.println(" It should ne: nill");
}
// System.out.println();
}
}