Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / delegate11.cs
1 using System;
2
3 public static class Driver
4 {
5         delegate void SimpleDelegate ();
6
7         static int error = 0;
8
9         class VirtualDelegate0
10         {
11                 public virtual void OnEvent ()
12                 {
13                         Console.WriteLine ("VirtualDelegate0.OnEvent (error!)");
14                         error = 1;
15                 }
16         }
17
18         class VirtualDelegate1 : VirtualDelegate0
19         {
20                 public override void OnEvent ()
21                 {
22                         Console.WriteLine ("VirtualDelegate1.OnEvent");
23                 }
24         }
25
26         class NonVirtualDelegate
27         {
28                 public void OnEvent ()
29                 {
30                         Console.WriteLine ("NonVirtualDelegate.OnEvent");
31                 }
32         }
33
34         static bool check (SimpleDelegate d)
35         {
36                 error = 0;
37                 d ();
38                 return error == 0;
39         }
40
41         public static int Main ()
42         {
43                 SimpleDelegate dv = new SimpleDelegate (new VirtualDelegate1 ().OnEvent);
44                 SimpleDelegate dnv = new SimpleDelegate (new NonVirtualDelegate ().OnEvent);
45
46                 if (!check (dv + dv))
47                         return 1;
48                 if (!check (dnv + dv))
49                         return 2;
50                 if (!check (dv + dnv))
51                         return 3;
52                 if (!check (dnv + dnv))
53                         return 4;
54
55                 return 0;
56         }
57 }