Add some caching for generic task
[mono.git] / mcs / tests / test-39.cs
index 7366b1c0ce2d3534d2f6636809a89da91df8a7c3..72035a58c90286088b12e98c6f0a3a5a65912e37 100644 (file)
@@ -1,38 +1,80 @@
 using System;
-[AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
-       public class SimpleAttribute : Attribute {
-
-               string name = null;
-
-               public string MyNamedArg;
-
-               private string secret;
+[AttributeUsage (AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true)]
+public class SimpleAttribute : Attribute {
+        
+        string name = null;
+        
+        public string MyNamedArg;
+        
+        private string secret;
+        
+        public SimpleAttribute (string name)
+        {
+                this.name = name;
+        }
+        
+        public string AnotherArg {
+                get {
+                        return secret;
+                }
+                set {
+                        secret = value;
+                }
+        }
                
-               public SimpleAttribute (string name)
-               {
-                       this.name = name;
+       public long LongValue {
+               get {
+                       return 0;
                }
-
-               public string AnotherArg {
-                       get {
-                               return secret;
-                       }
-                       set {
-                               secret = value;
-                       }
+               set { }
+       }
+       
+       public long[] ArrayValue {
+               get {
+                       return new long[0];
                }
-               
+               set { }
        }
+       
+       public object D;
+}
+
+[Simple ("Interface test")]
+public interface IFoo {
+        void MethodOne (int x, int y);
+        bool MethodTwo (float x, float y);
+}
+
+[Simple ("Fifth", D=new double[] { -1 })]
+class Blah2
+{
+}
+
+[Simple ("Fifth", D=new double[0])]
+class Blah3
+{
+}
 
 [Simple ("Dummy", MyNamedArg = "Dude!")]
-[Simple ("Vids", MyNamedArg = "Raj", AnotherArg = "Foo")]      
-       public class Blah {
+[Simple ("Vids", MyNamedArg = "Raj", AnotherArg = "Foo")]
+[Simple ("Trip", LongValue=0)]
+[Simple ("Fourth", ArrayValue=new long[] { 0 })]
+public class Blah {
 
-               public static int Main ()
-               {
-                       Console.WriteLine ("A dummy app which tests attribute emission");
-                       return 0;
-               }
-       }
+        public static int Main ()
+        {
+                               object o = (((SimpleAttribute)typeof(Blah2).GetCustomAttributes (typeof (SimpleAttribute), false)[0]).D);
+                               if (o.ToString () != "System.Double[]")
+                                       return 1;
 
-       
+                               if (((double[])o)[0].GetType () != typeof (double))
+                                       return 2;
+
+                               o = (((SimpleAttribute)typeof(Blah3).GetCustomAttributes (typeof (SimpleAttribute), false)[0]).D);
+                               if (o.ToString () != "System.Double[]")
+                                       return 3;
+                               
+                               Console.WriteLine ("OK");
+                return 0;
+        }
+}