* corlib.build: remove AppDomain.cs from the corlib_res.dll.
[mono.git] / mcs / tests / test-7.cs
1 using System;
2
3 namespace Mine {
4
5         public class Blah {
6
7                 public int i;
8
9                 public static int Main ()
10                 {
11                         Blah k, l;
12
13                         k = new Blah () + new Blah (); 
14                         k = ~ new Blah ();
15                         k = + new Blah ();
16                         k = - new Blah ();
17
18                         k = new Blah () - new Blah ();
19
20                         if (!k)
21                                 Console.WriteLine ("Overloaded ! operator returned true");
22
23                         int number = k;
24                         Console.WriteLine (number);
25                         
26                         k = 5;          
27
28                         k++;    
29                         ++k;
30
31                         if (k)
32                                 Console.WriteLine ("k is definitely true");
33
34                         k = new Blah ();
35
36                         double f = (double) k;
37
38                         if (f == 2.0)
39                                 Console.WriteLine ("Explicit conversion correct.");
40
41
42                         int i = new Blah () * new Blah ();
43
44                         if (i == 50)
45                                 Console.WriteLine ("Multiplication correct.");
46
47                         k = new Blah ();
48                         l = new Blah ();
49                         
50                         i = k / l;
51
52                         if (i == 20)
53                                 Console.WriteLine ("Division correct");
54
55                         i = k % l;
56
57                         if (i == 40)
58                                 Console.WriteLine ("Modulo correct");
59                         
60                         return 0;
61                 }
62                 
63                 public static Blah operator + (Blah i, Blah j)
64                 {
65                         Console.WriteLine ("Overloaded binary + operator");
66                         return null; 
67                 }
68
69                 public static Blah operator + (Blah i)
70                 {
71                         Console.WriteLine ("Overloaded unary + operator");
72                         return null;
73                 }
74
75                 public static Blah operator - (Blah i)
76                 {
77                         Console.WriteLine ("Overloaded unary - operator");
78                         return null;
79                 }
80
81                 public static Blah operator - (Blah i, Blah j)
82                 {
83                         Console.WriteLine ("Overloaded binary - operator");
84                         return null;
85                 }
86
87                 public static int operator * (Blah i, Blah j)
88                 {
89                         Console.WriteLine ("Overloaded binary * operator");
90                         return 50;
91                 }
92
93                 public static int operator / (Blah i, Blah j)
94                 {
95                         Console.WriteLine ("Overloaded binary / operator");
96                         return 20;
97                 }
98
99                 public static int operator % (Blah i, Blah j)
100                 {
101                         Console.WriteLine ("Overloaded binary % operator");
102                         return 40;
103                 }
104                 
105                 public static Blah operator ~ (Blah i)
106                 {
107                         Console.WriteLine ("Overloaded ~ operator");
108                         return null;
109                 }
110         
111                 public static bool operator ! (Blah i)
112                 {
113                         Console.WriteLine ("Overloaded ! operator");
114                         return true;
115                 }
116
117                 public static Blah operator ++ (Blah i)
118                 {
119                         Console.WriteLine ("Incrementing i");
120                         return null;
121                 }
122
123                 public static Blah operator -- (Blah i)
124                 {
125                         Console.WriteLine ("Decrementing i");
126                         return null;
127                 }       
128         
129                 public static bool operator true (Blah i)
130                 {
131                         Console.WriteLine ("Overloaded true operator");
132                         return true;
133                 }
134
135                 public static bool operator false (Blah i)
136                 {
137                         Console.WriteLine ("Overloaded false operator");
138                         return false;
139                 }       
140         
141                 public static implicit operator int (Blah i) 
142                 {       
143                         Console.WriteLine ("Converting implicitly from Blah->int");
144                         return 3;
145                 }
146
147                 public static implicit operator Blah (int i)
148                 {
149                         Console.WriteLine ("Converting implicitly from int->Blah");
150                         return null;
151                 }
152
153                 public static explicit operator double (Blah i)
154                 {
155                         Console.WriteLine ("Converting explicitly from Blah->double");
156                         return 2.0;
157                 }
158
159         }
160
161 }