Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / tests / array.cs
old mode 100755 (executable)
new mode 100644 (file)
index 7b97840..b0e9d47
+using System;
+using System.Runtime.InteropServices;
+
 public class Test {
 
-       public static int Main () {
-               int[] ia = new int[32];
+       static void puts (string s)
+       {
+               Console.WriteLine (s);
+       }
+
+       public static int jagged ()
+       {
+               int[][] j2 = new int [3][];
+
+               // does not work 
+               // j2 [0] = new int[] {1, 2, 3};
+               // j2 [1] = new int[] {1, 2, 3, 4, 5, 6};
+               // j2 [2] = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+               j2 [0] = new int[3];
+               j2 [1] = new int[6];
+               j2 [2] = new int[9];
+
+               for (int i = 0; i < j2.Length; i++)
+                       for (int j = 0; j < (i+1)*3; j++)
+                               j2 [i][j] = j;
+
+               for (int i = 0; i < j2.Length; i++)
+                       for (int j = 0; j < (i+1)*3; j++)
+                               if (j2 [i][j] != j)
+                                       return 1;
+               return 0;
+       }
+
+       public static int stest ()
+       {
+               string[] sa = new string[32];
+
+               sa [0] = "This";
+               sa [2] = "is";
+               sa [10] = "a";
+               sa [20] = "stupid";
+               sa [21] = "Test";
+
+               for (int i = 0; i < sa.Length; i++){
+                       if (sa [i] != null)
+                               puts (sa [i]);
+               }
                
+               return 0;
+       }
+       
+       public static int atest2 ()
+       {
+               int[,] ia = new int[32,32];
+
+               for (int i = 0; i <ia.GetLength (0); i++)
+                       ia [i,i] = i*i;
+
+               for (int i = 0; i <ia.GetLength (0); i++)
+                       if (ia [i,i] != i*i)
+                               return 1;
+
+               for (int i = 0; i <ia.GetLength (0); i++)
+                       ia.SetValue (i*i*i, i, i);
+
+               for (int i = 0; i <ia.GetLength (0); i++)
+                       if ((int)ia.GetValue (i, i) != i*i*i)
+                               return 1;
+
+               return 0;
+       }
+       
+       public static int atest ()
+       {
+               int[] ia = new int[32];
+
                for (int i = 0; i <ia.Length; i++)
                        ia [i] = i*i;
-
+               
                for (int i = 0; i <ia.Length; i++)
                        if (ia [i] != i*i)
                                return 1;
                
+               if (ia.Rank != 1)
+                       return 2;
+
+               if (ia.GetValue (2) == null)
+                       return 3;
+
+               for (int i = 0; i <ia.Length; i++)
+                       ia.SetValue (i*i*i, i);
+
+               for (int i = 0; i <ia.Length; i++)
+                       if ((int)ia.GetValue (i) != i*i*i){
+                               puts ("Crap: " + i + " " + (int) ia.GetValue (i) );
+
+                               return 4;
+                       }
+               
+               return 0;
+       }
+       
+
+       public static int Main () {
+               puts ("a");
+               if (atest () != 0)
+                       return atest ();
+               puts ("b");     
+               if (atest2 () != 0)
+                       return 1;
+               puts ("c");
+               if (atest2 () != 0)
+                       return 1;
+               puts ("d");     
+               if (stest () != 0)
+                       return 1;
+               puts ("e");     
+               if (jagged () != 0)
+                       return 1;
+               
+               
                return 0;
        }
 }