2001-10-11 Miguel de Icaza <miguel@ximian.com>
[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 Blah ()
10                 {
11                         Console.WriteLine ("Inside the constructor now");
12                 }
13         
14                 public static int Main ()
15                 {
16                         Blah k;
17
18                         k = new Blah () + new Blah (); 
19                         k = ~ new Blah ();
20                         k = + new Blah ();
21
22                         if (!k)
23                                 Console.WriteLine ("Overloaded ! operator returned true");
24
25                         int number = k;
26                         Console.WriteLine (number);
27                         
28                         k = 5;          
29
30                         k++;    
31                         ++k;
32
33                         if (k)
34                                 Console.WriteLine ("k is definitely true");
35
36                         k = new Blah ();
37
38                         double f = (double) k;
39
40                         if (f == 2.0)
41                                 Console.WriteLine ("Explicit conversion correct.");
42
43                         return 0;
44                         
45                 }
46                 
47                 public static Blah operator + (Blah i, Blah j)
48                 {
49                         Console.WriteLine ("Overloaded binary + operator");
50                         return null; 
51                 }
52
53                 public static Blah operator + (Blah i)
54                 {
55                         Console.WriteLine ("Overloaded unary + operator");
56                         return null;
57                 }
58                 
59         
60                 public static Blah operator ~ (Blah i)
61                 {
62                         Console.WriteLine ("Overloaded ~ operator");
63                         return null;
64                 }
65         
66                 public static bool operator ! (Blah i)
67                 {
68                         Console.WriteLine ("Overloaded ! operator");
69                         return true;
70                 }
71
72                 public static Blah operator ++ (Blah i)
73                 {
74                         Console.WriteLine ("Incrementing i");
75                         return null;
76                 }
77
78                 public static Blah operator -- (Blah i)
79                 {
80                         Console.WriteLine ("Decrementing i");
81                         return null;
82                 }       
83         
84                 public static bool operator true (Blah i)
85                 {
86                         Console.WriteLine ("Overloaded true operator");
87                         return true;
88                 }
89
90                 public static bool operator false (Blah i)
91                 {
92                         Console.WriteLine ("Overloaded false operator");
93                         return false;
94                 }       
95         
96                 public static implicit operator int (Blah i) 
97                 {       
98                         Console.WriteLine ("Converting implicitly from Blah->int");
99                         return 3;
100                 }
101
102                 public static implicit operator Blah (int i)
103                 {
104                         Console.WriteLine ("Converting implicitly from int->Blah");
105                         return null;
106                 }
107
108                 public static explicit operator double (Blah i)
109                 {
110                         Console.WriteLine ("Converting explicitly from Blah->double");
111                         return 2.0;
112                 }
113
114         }
115
116 }