Merge pull request #5396 from kumpera/fix_11696
[mono.git] / mono / tests / custom-attr.cs
index 79b5fdf4bf38adc3ffd56486286b33e976f4fd5a..b8d35607ae6dc3411731a31bead8c26b96274408 100644 (file)
@@ -40,12 +40,19 @@ namespace Test {
                }
        }
 
-       class ZAttribute : Attribute {
+       interface ZInterface {
+    }
+
+       class ZAttribute : Attribute, ZInterface {
        }
 
        [X, Z, Serializable]
        class Y {
        }
+
+       [My("arg\0string\0with\0nuls")]
+       class NulTests {
+       }
                        
        [My("testclass")]
        [My2("testclass", 22)]
@@ -93,6 +100,20 @@ namespace Test {
                        catch {
                        }
 
+                       if (typeof (Y).GetCustomAttributes (typeof (ZInterface), true).Length != 1)
+                               return 5;
+
+                       if (!typeof (Y).IsDefined (typeof (ZInterface), true))
+                               return 6;
+
+                       // Test that synthetic methods have no attributes
+                       if (typeof(int[,]).GetConstructor (new Type [] { typeof (int), typeof (int) }).GetCustomAttributes (true).Length != 0)
+                               return 7;
+
+                       // Test that nuls are preserved (see Xamarin bug 5732)
+                       if (((MyAttribute)typeof (NulTests).GetCustomAttributes (true)[0]).val != "arg\0string\0with\0nuls")
+                               return 8;
+
                        return 0;
                }
        }