Add some caching for generic task
[mono.git] / mcs / tests / test-39.cs
index 81126c901c3c910214c01876ffdadf1de00b411b..72035a58c90286088b12e98c6f0a3a5a65912e37 100644 (file)
@@ -1,25 +1,80 @@
 using System;
-
-[AttributeUsage (AttributeTargets.Class)]
-       public class SimpleAttribute : Attribute {
-
-               string name = null;
+[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;
                }
+               set { }
        }
-
-[Simple ("Dummy")]
-       public class Blah {
-
-               public static int Main ()
-               {
-                       Console.WriteLine ("A dummy app which tests attribute emission");
-
-                       return 0;
+       
+       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")]
+[Simple ("Trip", LongValue=0)]
+[Simple ("Fourth", ArrayValue=new long[] { 0 })]
+public class Blah {
+
+        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;
+        }
+}