Merge pull request #4003 from ntherning/ignore-disconnected-interfaces-in-HttpListene...
[mono.git] / mcs / tests / dtest-033.cs
1 using System;
2
3 public class Test
4 {
5         byte Prop {
6                 get { return 4; }
7                 set { }
8         }
9
10         byte this [int arg] {
11                 get { return 2; }
12                 set { }
13         }
14         
15         byte Byte = 200;
16         static dynamic V;
17         dynamic DynamicByte;
18         byte[] ByteArray = { 1, 100 };
19
20         public static int Main ()
21         {
22                 dynamic v = 'a';
23                 dynamic a = new Test ();
24
25                 string s = "-sdfas";
26                 
27                 // dynamic compound assignment with different result type
28                 v += s;
29
30                 if (v != "a-sdfas")
31                         return 1;
32                 
33                 dynamic d2 = null;
34                 d2 += "a";
35                 if (d2 != "a")
36                         return 2;
37
38                 byte b = 4;
39                 a.Prop *= b;
40                 a[4] ^= b;
41                 
42                 dynamic d = 1;
43                 b = byte.MaxValue;
44                 try {
45                         checked {
46                                 b += d;
47                                 return 3;
48                         }
49                 } catch (OverflowException) {
50                 }
51                         
52                 b += d;
53                 
54                 try {
55                         checked {
56                                 a.Byte += 100;
57                                 return 4;
58                         }
59                 } catch (OverflowException) {
60                 }
61                 
62                 a.Byte += 100;
63                 
64                 checked {
65                         d = byte.MaxValue;
66                         d += 100;
67                 }
68
69                 checked {
70                         V = byte.MaxValue;
71                         V -= 300;
72                 }
73
74                 var t = new Test ();
75                 t.DynamicByte = byte.MaxValue;
76                 d = t;
77                 checked {
78                         d.DynamicByte -= 500;
79                 }
80                 
81                 if (t.DynamicByte != -245)
82                         return 5;
83
84                 try {
85                         checked {
86                                 d.ByteArray[1] += 200;
87                                 return 6;
88                         }                       
89                 } catch (OverflowException) {
90                 }
91
92                 return 0;
93         }
94 }