2002-10-19 Rachel Hestilow <hestilow@ximian.com>
[mono.git] / mcs / tests / test-149.cs
1 using System;
2
3 public delegate long MyDelegate (int a);
4
5 public interface X
6 {
7         event EventHandler Foo;
8
9         event MyDelegate TestEvent;
10 }
11
12 public class Y : X
13 {
14         static int a = 0;
15
16         event EventHandler X.Foo {
17                 add {
18                 }
19
20                 remove {
21                 }
22         }
23
24         public event EventHandler Foo;
25
26         public event MyDelegate TestEvent;
27
28         public int Test ()
29         {
30                 X x = this;
31
32                 Foo += new EventHandler (callback1);
33                 TestEvent += new MyDelegate (callback2);
34
35                 x.Foo += new EventHandler (callback3);
36
37                 if (a != 0)
38                         return 1;
39
40                 Foo (this, new EventArgs ());
41                 if (a != 1)
42                         return 2;
43
44                 if (TestEvent (2) != 4)
45                         return 3;
46
47                 if (a != 2)
48                         return 4;
49
50                 return 0;
51         }
52
53
54         private static void callback1 (object sender, EventArgs e)
55         {
56                 a = 1;
57         }
58
59         private static long callback2 (int b)
60         {
61                 a = b;
62                 return a * a;
63         }
64
65         private static void callback3 (object sender, EventArgs e)
66         {
67                 a = 3;
68         }
69 }
70
71 public class Z : Y
72 {
73         public static int Main ()
74         {
75                 Z z = new Z ();
76
77                 int result = z.Test ();
78
79                 Console.WriteLine ("TEST RESULT: " + result);
80
81                 return result;
82         }
83 }