Merge pull request #5675 from mono/glib-debug-symbols
[mono.git] / mcs / tests / test-775.cs
1 using System;
2
3 interface A
4 {
5         event EventHandler Member;
6 }
7
8 interface B : A
9 {
10         new event EventHandler Member;
11 }
12
13 interface BA : B, A { }
14
15 public class C : BA
16 {
17         public EventHandler _AMember;
18         public EventHandler _Member;
19
20         event EventHandler A.Member
21         {
22                 add { _AMember += value; Console.WriteLine ("Setting A Event"); }
23                 remove { _AMember -= value; }
24         }
25
26         public event EventHandler Member
27         {
28                 add { _Member += value; Console.WriteLine ("Setting Direct Event"); }
29                 remove { _Member -= value; }
30         }
31 }
32
33 public class Test
34 {
35         public static int Main ()
36         {
37                 return new Test ().TestMe ();
38         }
39
40         public int TestMe ()
41         {
42                 C c = new C ();
43                 Console.WriteLine ("Trying to set EventHandler Directly - should set DirectEvent ");
44                 c.Member += new EventHandler (f);
45                 if (c._Member == null)
46                         return 0;
47
48                 c._Member = null;
49                 Console.WriteLine ("Trying to set EventHandler through A interface - Should set A Event");
50                 ((A) c).Member += new EventHandler (f);
51                 if (c._AMember == null)
52                         return 1;
53
54                 c._AMember = null;
55                 Console.WriteLine ("Trying to set EventHandler through BA interface - Should set Direct Event");
56                 ((BA) c).Member += new EventHandler (f);
57                 if (c._Member == null)
58                         return 2;
59
60                 Console.WriteLine ("ok");
61                 return 0;
62         }
63
64         void f (object sender, EventArgs e) { }
65 }
66