2001-08-28 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / tests / array.cs
1 using System;
2 using System.Runtime.InteropServices;
3
4 public class Test {
5
6         [DllImport("cygwin1.dll", EntryPoint="puts", CharSet=CharSet.Ansi)]
7         public static extern int puts (string name);
8
9         public static int jagged ()
10         {
11                 int[][] j2 = new int [3][];
12
13                 // does not work 
14                 // j2 [0] = new int[] {1, 2, 3};
15                 // j2 [1] = new int[] {1, 2, 3, 4, 5, 6};
16                 // j2 [2] = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
17
18                 j2 [0] = new int[3];
19                 j2 [1] = new int[6];
20                 j2 [2] = new int[9];
21
22                 for (int i = 0; i < j2.Length; i++)
23                         for (int j = 0; j < (i+1)*3; j++)
24                                 j2 [i][j] = j;
25
26                 for (int i = 0; i < j2.Length; i++)
27                         for (int j = 0; j < (i+1)*3; j++)
28                                 if (j2 [i][j] != j)
29                                         return 1;
30                 return 0;
31         }
32
33         public static int stest ()
34         {
35                 string[] sa = new string[32];
36
37                 sa [0] = "This";
38                 sa [2] = "is";
39                 sa [10] = "a";
40                 sa [20] = "stupid";
41                 sa [21] = "Test";
42
43                 for (int i = 0; i < sa.Length; i++)
44                         if (sa [i] != null)
45                                 puts (sa [i]);
46                 
47                 return 0;
48         }
49         
50         public static int atest2 ()
51         {
52                 int[,] ia = new int[32,32];
53
54                 for (int i = 0; i <ia.GetLength (0); i++)
55                         ia [i,i] = i*i;
56
57                 for (int i = 0; i <ia.GetLength (0); i++)
58                         if (ia [i,i] != i*i)
59                                 return 1;
60
61                 for (int i = 0; i <ia.GetLength (0); i++)
62                         ia.SetValue (i*i*i, i, i);
63
64                 for (int i = 0; i <ia.GetLength (0); i++)
65                         if ((int)ia.GetValue (i, i) != i*i*i)
66                                 return 1;
67
68                 return 0;
69         }
70         
71         public static int atest ()
72         {
73                 int[] ia = new int[32];
74
75                 for (int i = 0; i <ia.Length; i++)
76                         ia [i] = i*i;
77                 
78                 for (int i = 0; i <ia.Length; i++)
79                         if (ia [i] != i*i)
80                                 return 1;
81                 
82                 if (ia.Rank != 1)
83                         return 1;
84
85                 if (ia.GetValue (2) == null)
86                         return 1;
87
88                 for (int i = 0; i <ia.Length; i++)
89                         ia.SetValue (i*i*i, i);
90
91                 for (int i = 0; i <ia.Length; i++)
92                         if ((int)ia.GetValue (i) != i*i*i)
93                                 return 1;
94                 
95                 return 0;
96         }
97         
98
99         public static int Main () {
100                        
101                 if (atest () != 0)
102                         return 1;
103                 
104                 if (atest2 () != 0)
105                         return 1;
106                 if (atest2 () != 0)
107                         return 1;
108                 
109                 if (stest () != 0)
110                         return 1;
111                 
112                 if (jagged () != 0)
113                         return 1;
114                 
115                 
116                 return 0;
117         }
118 }
119
120