Assert.AreEqual (ExpressionType.OrElse, expr.NodeType, "OrElse#01");
Assert.AreEqual (typeof (bool), expr.Type, "OrElse#02");
Assert.IsNull (expr.Method, "OrElse#03");
-#if !NET_4_0
- Assert.AreEqual ("(True || False)", expr.ToString(), "OrElse#04");
-#endif
}
[Test]
Assert.AreEqual (typeof (OpClass), expr.Type, "OrElse#06");
Assert.AreEqual (mi, expr.Method, "OrElse#07");
Assert.AreEqual ("op_BitwiseOr", expr.Method.Name, "OrElse#08");
-#if !NET_4_0
- Assert.AreEqual ("(value(MonoTests.System.Linq.Expressions.OpClass) || value(MonoTests.System.Linq.Expressions.OpClass))",
- expr.ToString(), "OrElse#09");
-#endif
}
public class BrokenMethod {
Assert.AreEqual (new Slot (64), orelse (new Slot (64), new Slot (64)));
Assert.AreEqual (new Slot (32), orelse (new Slot (32), new Slot (64)));
}
-#if !NET_4_0 // dlr bug 5867
- [Test]
- 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));
- }
-#endif
[Test]
[Category ("NotWorkingInterpreter")]
public void UserDefinedOrElseShortCircuit ()