[ilasm] Don't break arguments compatiblity
[mono-project.git] / mcs / tests / dtest-061.cs
blobde16049239d43f94d47f4a070d5794d60db66cb0
1 using System;
3 namespace Test
5 public class Program
7 static int[] testValues = {0, -1, 200, -200, 32, -32, 64, -128, 333, 5};
9 dynamic dynBase;
10 dynamic dynAmt;
12 int? optBase;
13 int? optAmt;
15 int normBase;
16 int normAmt;
18 dynamic uDynBase;
20 public static void Main ()
22 var tester = new Program ();
24 foreach (int baseVal in testValues)
25 foreach (int amt in testValues)
26 tester.ShiftTest (baseVal, amt);
29 public static void AreEqual<A, B> (A a, B b)
31 if (!a.Equals (b))
32 throw new Exception (
33 String.Format (
34 "Shift Equality Assertion Failed: Had {0} and expected {1}", a, b));
37 public void ShiftTest (int shiftBase, int shiftAmt)
39 optBase = dynBase = normBase = shiftBase;
40 optAmt = dynAmt = normAmt = shiftAmt;
41 int immediate = shiftBase << shiftAmt;
43 AreEqual<int?, int?> (dynBase << dynAmt, immediate);
44 AreEqual<int?, int?> (dynBase << optAmt, immediate);
45 AreEqual<int?, int?> (dynBase << normAmt, immediate);
47 AreEqual<int?, int?> (optBase << dynAmt, immediate);
48 AreEqual<int?, int?> (optBase << optAmt, immediate);
49 AreEqual<int?, int?> (optBase << normAmt, immediate);
51 AreEqual<int?, int?> (normBase << dynAmt, immediate);
52 AreEqual<int?, int?> (normBase << optAmt, immediate);
53 AreEqual<int?, int?> (normBase << normAmt, immediate);
55 uint uShiftBase = (uint)shiftBase;
56 uDynBase = uShiftBase;
58 AreEqual<uint?, uint?> (uShiftBase << dynAmt, uDynBase << dynAmt);
59 AreEqual<uint?, uint?> (uShiftBase << optAmt, uDynBase << optAmt);
60 AreEqual<uint?, uint?> (uShiftBase << normAmt, uDynBase << normAmt);