+ [Test]
+ public void GetCustomAttributes_PropertyInfo ()
+ {
+ object[] attrs;
+ PropertyInfo pi;
+
+ pi = typeof (TestBase).GetProperty ("PropBase3");
+ attrs = Attribute.GetCustomAttributes (pi);
+ Assert.AreEqual (1, attrs.Length, "#A1");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A2");
+ attrs = Attribute.GetCustomAttributes (pi, false);
+ Assert.AreEqual (1, attrs.Length, "#A3");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A4");
+ attrs = Attribute.GetCustomAttributes (pi, true);
+ Assert.AreEqual (1, attrs.Length, "#A5");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A6");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute));
+ Assert.AreEqual (1, attrs.Length, "#A7");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A8");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#A9");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A10");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#A11");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#A12");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute));
+ Assert.AreEqual (0, attrs.Length, "#A13");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), false);
+ Assert.AreEqual (0, attrs.Length, "#A14");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), true);
+ Assert.AreEqual (0, attrs.Length, "#A15");
+
+ pi = typeof (TestBase).GetProperty ("PropBase2");
+ attrs = Attribute.GetCustomAttributes (pi);
+ Assert.AreEqual (2, attrs.Length, "#C1");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#C2");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#C3");
+ attrs = Attribute.GetCustomAttributes (pi, false);
+ Assert.AreEqual (2, attrs.Length, "#C4");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#C5");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#C6");
+ attrs = Attribute.GetCustomAttributes (pi, true);
+ Assert.AreEqual (2, attrs.Length, "#C7");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#C8");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#C9");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute));
+ Assert.AreEqual (1, attrs.Length, "#C10");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#C11");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#C12");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#C13");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#C14");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#C15");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute));
+ Assert.AreEqual (1, attrs.Length, "#C16");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#C17");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#C18");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#C19");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#C20");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#C21");
+
+ pi = typeof (TestSub).GetProperty ("PropBase2");
+ attrs = Attribute.GetCustomAttributes (pi);
+ Assert.AreEqual (2, attrs.Length, "#D1");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#D2");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#D3");
+ attrs = Attribute.GetCustomAttributes (pi, false);
+ Assert.AreEqual (2, attrs.Length, "#D4");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#D5");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#D6");
+ attrs = Attribute.GetCustomAttributes (pi, true);
+ Assert.AreEqual (2, attrs.Length, "#D7");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (PropTestAttribute)), "#D8");
+ Assert.AreEqual (1, GetAttributeCount (attrs, typeof (ComVisibleAttribute)), "#D9");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute));
+ Assert.AreEqual (1, attrs.Length, "#D10");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#D11");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#D12");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#D13");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#D14");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#D15");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute));
+ Assert.AreEqual (1, attrs.Length, "#D16");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#D17");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#D18");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#D19");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#D20");
+ Assert.AreEqual (typeof (ComVisibleAttribute), attrs [0].GetType (), "#D21");
+
+ pi = typeof (TestSub).GetProperty ("PropSub1");
+ attrs = Attribute.GetCustomAttributes (pi);
+ Assert.AreEqual (1, attrs.Length, "#E1");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E2");
+ attrs = Attribute.GetCustomAttributes (pi, false);
+ Assert.AreEqual (1, attrs.Length, "#E3");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E4");
+ attrs = Attribute.GetCustomAttributes (pi, true);
+ Assert.AreEqual (1, attrs.Length, "#E5");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E6");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute));
+ Assert.AreEqual (1, attrs.Length, "#E7");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E8");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "#E9");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E10");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#E11");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#E12");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute));
+ Assert.AreEqual (0, attrs.Length, "#E13");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), false);
+ Assert.AreEqual (0, attrs.Length, "#E14");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), true);
+ Assert.AreEqual (0, attrs.Length, "#D15");
+ }
+
+ [Test]
+ public void GetCustomAttributes_PropertyInfo_Override ()
+ {
+ object [] attrs;
+ PropertyInfo pi;
+
+ pi = typeof (TestSub).GetProperty ("PropBase3");
+ attrs = Attribute.GetCustomAttributes (pi);
+ Assert.AreEqual (1, attrs.Length, "#B1");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#B2");
+ attrs = Attribute.GetCustomAttributes (pi, false);
+ Assert.AreEqual (0, attrs.Length, "#B3");
+ attrs = Attribute.GetCustomAttributes (pi, true);
+ Assert.AreEqual (1, attrs.Length, "#B4");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#B5");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute));
+ Assert.AreEqual (1, attrs.Length, "#B6");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#B7");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), false);
+ Assert.AreEqual (0, attrs.Length, "#B8");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (PropTestAttribute), true);
+ Assert.AreEqual (1, attrs.Length, "#B9");
+ Assert.AreEqual (typeof (PropTestAttribute), attrs [0].GetType (), "#B10");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute));
+ Assert.AreEqual (0, attrs.Length, "#B11");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), false);
+ Assert.AreEqual (0, attrs.Length, "#B12");
+ attrs = Attribute.GetCustomAttributes (pi, typeof (ComVisibleAttribute), true);
+ Assert.AreEqual (0, attrs.Length, "#B13");
+ }
+