File: arraydims.bsh

package info (click to toggle)
bsh 2.0b4-20
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 4,224 kB
  • sloc: java: 23,431; xml: 4,500; sh: 139; makefile: 24
file content (135 lines) | stat: -rw-r--r-- 4,007 bytes parent folder | download | duplicates (11)
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();