Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / tests / dtest-006.cs
index e43d80d857226b65fdf71b61cb86319765afec3a..599c3a511fa659686839a962a77c942210d358c6 100644 (file)
@@ -309,7 +309,7 @@ class Tester
 
                dynamic d2 = (MyEnumUlong?) MyEnumUlong.Value_1;
                Assert (d2 + (byte) 1, MyEnumUlong.Value_2, "#2");
-               Assert<MyEnumUlong?> (d2 + (object) null, null, "#2a");
+               Assert<MyEnumUlong?> (d2 + null, null, "#2a");
                
                // CSC: Invalid System.InvalidOperationException
                Assert<MyEnum?> (d + null, null, "#1");
@@ -523,6 +523,11 @@ class Tester
                dynamic d3 = new MyType? (new MyType (-7));
                Assert (d3 & new MyType (6), new MyType (0), "#3a");
                Assert<MyType?> (d3 + null, null, "#3b");
+
+               dynamic a = (bool?) true;
+               dynamic b = (bool?) null;
+               Assert (a & b, (bool?)null, "#4a");
+               Assert (b & a, (bool?)null, "#4b");
        }
 
        void AndAssignedTest ()
@@ -1132,6 +1137,9 @@ class Tester
                Assert (d << v2, 0x40000000, "#2");
                dynamic d2 = (int?) -2;
                Assert (d2 << 1, -4, "#2a");
+
+               dynamic d3 = (int?) null;
+               Assert (d3 << (null << null), (int?)null, "#3");
        }
 
        void LeftShiftAssignTest ()
@@ -1605,6 +1613,11 @@ class Tester
                Assert (d != true, false, "#5");
                Assert (d != null, true, "#5a");
                Assert (d != false, true, "#5b");
+
+               d = null;
+               long? l = null;
+               Assert (d != l, false, "#6a");
+               Assert (l != d, false, "#6b");
        }
 
        void NotEqualEnumTest ()
@@ -1759,7 +1772,7 @@ class Tester
                Assert (d || d, true, "#2");
 
                dynamic d3 = new MyType (-7);
-               Assert<MyType> (d3 || new MyType (6), new MyType (-1), "#3");
+               Assert<MyType> (d3 || new MyType (6), new MyType (-7), "#3");
        }
 
        void RightShiftTest ()
@@ -1794,6 +1807,9 @@ class Tester
                Assert (d >> v2, 0, "#2");
                dynamic d2 = (int?) -200;
                Assert (d2 >> 1, -100, "#2a");
+
+               dynamic d3 = (int?) null;
+               Assert (d3 >> (null >> null), (int?) null, "#3");
        }
 
        void RightShiftAssignTest ()
@@ -1878,7 +1894,7 @@ class Tester
 
                dynamic d2 = (MyEnumUlong?) MyEnumUlong.Value_2;
                Assert (d2 - (byte) 1, MyEnumUlong.Value_1, "#2");
-               Assert<MyEnumUlong?> (d2 - (object) null, null, "#2a");
+               Assert<MyEnumUlong?> (d2 - null, null, "#2a");
                
                // CSC: Invalid System.InvalidOperationException
                Assert<MyEnum?> (d - null, null, "#3");