Merge pull request #1909 from esdrubal/reflection
[mono.git] / mcs / tools / mdoc / Test / DocTest-enumerations.cs
1 using System;
2 using ObjCRuntime;
3 namespace ObjCRuntime {
4         [Flags]
5         public enum Platform : ulong {
6                 None = 0,
7                 iOS_2_0 =               0x0000000000020000,
8                 iOS_2_2 =               0x0000000000020200,
9                 iOS_3_0 =               0x0000000000030000,
10                 iOS_3_1 =               0x0000000000030100,
11                 iOS_3_2 =               0x0000000000030200,
12                 iOS_4_0 =               0x0000000000040000,
13                 iOS_4_1 =               0x0000000000040100,
14                 iOS_4_2 =               0x0000000000040200,
15                 iOS_4_3 =               0x0000000000040300,
16                 iOS_5_0 =               0x0000000000050000,
17                 iOS_5_1 =               0x0000000000050100,
18                 iOS_6_0 =               0x0000000000060000,
19                 iOS_6_1 =               0x0000000000060100,
20                 iOS_7_0 =               0x0000000000070000,
21                 iOS_7_1 =               0x0000000000070100,
22                 iOS_8_0 =               0x0000000000080000,
23                 iOS_8_1 =               0x0000000000080100,
24                 iOS_8_2 =               0x0000000000080200,
25                 iOS_8_3 =               0x0000000000080300,
26                 Mac_10_0 =              0x000A000000000000,
27                 Mac_10_1 =              0x000A010000000000,
28                 Mac_10_2 =              0x000A020000000000,
29                 Mac_10_3 =              0x000A030000000000,
30                 Mac_10_4 =              0x000A040000000000,
31                 Mac_10_5 =              0x000A050000000000,
32                 Mac_10_6 =              0x000A060000000000,
33                 Mac_10_7 =              0x000A070000000000,
34                 Mac_10_8 =              0x000A080000000000,
35                 Mac_10_9 =              0x000A090000000000,
36                 Mac_10_10 =     0x000A0A0000000000,
37                 iOS_Version =   0x0000000000FFFFFF,
38                 Mac_Version =   0x00FFFFFF00000000,
39                 Mac_Arch32 =    0x0100000000000000,
40                 Mac_Arch64 =    0x0200000000000000,
41                 Mac_Arch =              0xFF00000000000000,
42                 iOS_Arch32 =    0x0000000001000000,
43                 iOS_Arch64 =    0x0000000002000000,
44                 iOS_Arch =              0x00000000FF000000
45         }
46 }
47 namespace MyNamespace {
48         public enum MyEnum {
49                 One,
50                 Two,
51                 Three
52         }
53         public class MyFlagEnumAttribute : Attribute {
54                 public Platform Enum {get;set;}
55                 public MyFlagEnumAttribute(){}
56                 public MyFlagEnumAttribute (Platform value) {
57                         this.Enum = value;
58                 }
59         }
60         public class MyEnumAttribute : Attribute {
61                 public MyEnum Enum {get;set;}
62                 public MyEnumAttribute(){}
63                 public MyEnumAttribute (MyEnum value) {
64                         this.Enum = value;
65                 }
66         }
67         public class MyClass {
68                 [MyFlagEnum(value: Platform.None)]
69                 public string None() { return string.Empty; }
70                 [MyFlagEnum(value: Platform.Mac_10_8 | Platform.Mac_Arch64)]
71                 public string MacMethod() { return string.Empty; }
72                 [MyFlagEnum(value: Platform.iOS_Arch32 | Platform.iOS_4_2)]
73                 public string iOSMethod() { return string.Empty; }
74                 [MyEnum(value: MyEnum.One)]
75                 public string RegularEnum() { return string.Empty; }
76                 [MyEnum(value: (MyEnum)234234)]
77                 public string UnknownEnumValue() { return string.Empty; }
78         }
79 }