new tests
authorJb Evain <jbevain@gmail.com>
Thu, 5 Jun 2008 15:01:59 +0000 (15:01 -0000)
committerJb Evain <jbevain@gmail.com>
Thu, 5 Jun 2008 15:01:59 +0000 (15:01 -0000)
svn path=/trunk/mcs/; revision=105037

mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_AndAlso.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_OrElse.cs

index eb1f91a7ab80693c561607329ee86e66c8bcdb27..46e63211e669bd8ce25e591a4ed9a77326852f92 100644 (file)
@@ -254,6 +254,30 @@ namespace MonoTests.System.Linq.Expressions
                        Assert.AreEqual (new Slot (0), andalso (new Slot (64), new Slot (32)));
                }
 
+               [Test]
+               [Category ("NotWorking")]
+               public void UserDefinedAndAlsoLiftedToNull ()
+               {
+                       var l = Expression.Parameter (typeof (Slot?), "l");
+                       var r = Expression.Parameter (typeof (Slot?), "r");
+
+                       var method = typeof (Slot).GetMethod ("op_BitwiseAnd");
+
+                       var node = Expression.AndAlso (l, r, method);
+                       Assert.IsTrue (node.IsLifted);
+                       Assert.IsTrue (node.IsLiftedToNull);
+                       Assert.AreEqual (method, node.Method);
+
+                       var andalso = Expression.Lambda<Func<Slot?, Slot?, Slot?>> (node, l, r).Compile ();
+
+                       Assert.AreEqual (new Slot (64), andalso (new Slot (64), new Slot (64)));
+                       Assert.AreEqual (new Slot (0), andalso (new Slot (32), new Slot (64)));
+                       Assert.AreEqual (new Slot (0), andalso (new Slot (64), new Slot (32)));
+                       Assert.AreEqual (null, andalso (null, new Slot (32)));
+                       Assert.AreEqual (null, andalso (new Slot (64), null));
+                       Assert.AreEqual (null, andalso (null, null));
+               }
+
                struct Incomplete {
                        public int Value;
 
index 0ecea1a5c8d420fe33b13912ea5d5b63cfe85db9..ec263da091a1daf165147cb6e9b90debc040a0ad 100644 (file)
@@ -278,6 +278,29 @@ namespace MonoTests.System.Linq.Expressions
                        Assert.AreEqual (new Slot (32), orelse (new Slot (32), new Slot (64)));
                }
 
+               [Test]
+               [Category ("NotWorking")]
+               public void UserDefinedOrElseLiftedToNull ()
+               {
+                       var l = Expression.Parameter (typeof (Slot?), "l");
+                       var r = Expression.Parameter (typeof (Slot?), "r");
+
+                       var method = typeof (Slot).GetMethod ("op_BitwiseOr");
+
+                       var node = Expression.OrElse (l, r, method);
+                       Assert.IsTrue (node.IsLifted);
+                       Assert.IsTrue (node.IsLiftedToNull);
+                       Assert.AreEqual (method, node.Method);
+
+                       var orelse = Expression.Lambda<Func<Slot?, Slot?, Slot?>> (node, l, r).Compile ();
+
+                       Assert.AreEqual (new Slot (64), orelse (new Slot (64), new Slot (64)));
+                       Assert.AreEqual (new Slot (32), orelse (new Slot (32), new Slot (64)));
+                       Assert.AreEqual (new Slot (64), orelse (null, new Slot (64)));
+                       Assert.AreEqual (new Slot (32), orelse (new Slot (32), null));
+                       Assert.AreEqual (null, orelse (null, null));
+               }
+
                struct Incomplete {
                        public int Value;