Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / tests / test-91.cs
1 using System;
2 using System.Reflection;
3
4 //
5 // Test the setting for the default public constructor
6 //
7 abstract class Abstract {
8 }
9
10 //
11 // Test the setting for the default public consturctor
12 //
13 class Plain {
14 }
15
16 class Test {
17
18         static protected internal void MyProtectedInternal () { }
19         static internal void MyInternal() { }
20         static public void MyPublic () { }
21         static void MyPrivate () {}
22               
23         public static int Main ()
24         {
25                 Type myself = typeof (Test);
26                 BindingFlags bf = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public;
27                 MethodAttributes mpia;
28                 MethodInfo mpi;
29
30                 //
31                 // protected internal
32                 //
33                 mpi = myself.GetMethod ("MyProtectedInternal", bf);
34                 mpia = mpi.Attributes & MethodAttributes.MemberAccessMask;
35                 if (mpia != MethodAttributes.FamORAssem)
36                         return 1;
37
38                 //
39                 // internal
40                 //
41                 mpi = myself.GetMethod ("MyInternal", bf);
42                 mpia = mpi.Attributes & MethodAttributes.MemberAccessMask;
43                 if (mpia != MethodAttributes.Assembly)
44                         return 2;
45
46                 //
47                 // public
48                 //
49                 mpi = myself.GetMethod ("MyPublic", bf);
50                 mpia = mpi.Attributes & MethodAttributes.MemberAccessMask;
51                 if (mpia != MethodAttributes.Public)
52                         return 3;
53
54                 //
55                 // private
56                 //
57                 mpi = myself.GetMethod ("MyPrivate", bf);
58                 mpia = mpi.Attributes & MethodAttributes.MemberAccessMask;
59                 if (mpia != MethodAttributes.Private)
60                         return 4;
61
62                 //
63                 // Test 17.10.4 accessibility (default constructor permissions)
64                 //
65                 ConstructorInfo ci = typeof (Abstract).GetConstructor
66                         (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new Type [0], new
67                          ParameterModifier [0]);
68
69                 if (!ci.IsFamily)
70                         return 5;
71
72                 ci = typeof (Plain).GetConstructor
73                         (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new Type [0], new
74                          ParameterModifier [0]);
75
76                 if (!ci.IsPublic)
77                         return 6;
78                 
79                 Console.WriteLine ("All tests pass");
80                 return 0;
81         }
82 }