1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
#!/bin/java bsh.Interpreter
source("TestHarness.bsh");
oa = new Object [] { "foo", "bar" };
assert( oa.length == 2 && oa[0] instanceof String );
oa = new Object [] { };
assert( oa.length == 0 );
int [][] ia = new int [5][4];
ia[2][2] = 5;
Object [][][] foo = new Object [2][2][2];
assert( foo.length == 2 );
assert( foo[0].length == 2 );
assert( foo[0][0].length == 2 );
assert( ia[2][2] == 5 && ia[2][3] != 5 );
// Some tests with null
oa = new Object [] { "foo", "bar", null };
assert( oa instanceof Object [] );
oa = new Object [] { null, "foo", "bar" };
assert( oa instanceof Object [] );
x = new String[] {null, "foo"};
Object[] test = new Object[] { new Long(2000), "MyDisk", new Double(21.4) };
assert( test.length == 3);
assert( test[2] instanceof Double );
Object[] test2 = new Object[] {
(Object)new Long(2000), (Object)"MyDisk", (Object)new Double(21.4) };
assert( isEvalError("a=new int[] { 2, new Object() }") );
// promotion
long [] la = new long [] { 1L, 2, (byte)3 };
float [] fa = new float [] { 1L, 2, (byte)3, (float)3.3, 3.3f };
double [] da = new double [] { 1L, 2, (byte)3, 3.3, 3.3f, 3.3d };
assert( da[1] == 2.0d );
assert( da[1] == 2.0 );
// double check that declared types don't matter
la2 = new long [] { 1L, 2, (byte)3 };
fa2 = new float [] { 1L, 2, (byte)3, (float)3.3, 3.3f };
da2 = new double [] { 1L, 2, (byte)3, 3.3, 3.3f, 3.3d };
String [][] sa = new String [2][2];
String [] d1sa = new String [] { "foo", "bar" };
String [][] d2sa = new String [][] { d1sa, d1sa };
// multidimensional initializers
String [][] sa2 = new String [][] { new String [] { "foo" }, new String [] { "foo", "bar" } };
String [][][] sa3 = new String [][][] {
new String [][] {
new String [] { "foo" }, new String [] { "f", "f", } },
new String [][] {
new String [] { "foo", "bar", "flag" } }
};
assert( sa3[1][0][2].equals("flag") );
Object [][] o= new Object [][] {
new Object [] {"me",new Integer(5),new Byte((byte)3)},
new Object [] {"you",new Integer(6),new Byte((byte)2)} };
// initializers which rely on the declared type of the variable!
// This is quite a coup! ;);)
String [] d1xa = { "foo", "bar" };
String [][] d2xa = { d1xa, d1xa };
// will not work in assignment of course
// d2xa = { d1xa, d1xa };
// Wow! I am so happy ;)
String [][][] sa99 =
{ { { "foo", null }, { "f", "f", } }, { { "foo", "bar", "flag" } } };
assert( sa99[1][0][2].equals("flag") );
// a few more
long [] la = { 1L, 2, (byte)3 };
float [] fa = { 1L, 2, (byte)3, (float)3.3, 3.3f };
double [] da = { 1L, 2, (byte)3, 3.3, 3.3f, 3.3d };
assert( da[1] == 2.0d );
assert( da[1] == 2.0 );
// partial initialization not implemented yet
// e.g. int [][] ia = new int [1][];
// Some stuff submitted in the original bug report... thought I'd throw it in.
Object[] oo = { new Object(), new Object() };
oo = new Object[] { new Object(), new Object() };
// doesn't work in 1.1
oo = new Object[][] { { new Object() }, { new Object() } };
// doesn't work in 1.1
oo = new Object[][] { new Object[] { new Object() }, new Object[] { new Object() } };
oo = new Object[] { 0, 1 };
oo = new Object[] { "a", "b"};
oo = new Object[] { 0, "a" };
oo = new Object[] { new Integer(0), new String("a") };
oo = new Object[] { (Object) new Integer(0), (Object) new String("a") };
ov = new Vector();
ov.add(0);
ov.add("a");
oo = ov.toArray();
// new stuff to support undefined array dimensions
Integer [][] ua1x = new Integer [5][0];
assert( ua1x[0] instanceof Integer[] );
Integer [][] ua1 = new Integer [5][];
assert( ua1 instanceof Integer [][] );
assert ( ua1[0] == null );
ua1[0] = new Integer[5];
ua2x = new Integer [3][3][3];
assert( ua2x instanceof Integer [][][] );
ua2 = new Integer [3][][];
assert( ua2 instanceof Integer [][][] );
ua2[0] = new Integer [1][1] ;
ua2[0][0] = new Integer [1] ;
ua2[1] = new Integer [][] { {1,2}, {1,2} };
String[][] array2dim1 = new String[10][];
int[][][] primi3 = new int [3][][];
assert( primi3 instanceof int[][][] );
complete();
|