public void ConditionalCall_Compile_Val()
        {
            var p = Expression.Parameter(typeof(Quz?));
            var q = new Quz();

            var m1 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("X"));
            var f1 = Expression.Lambda <Func <Quz?, int?> >(m1, p);
            var d1 = f1.Compile();

            Assert.AreEqual(42, d1(q));
            Assert.IsNull(d1(null));

            var m2 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("N"));
            var f2 = Expression.Lambda <Func <Quz?, int?> >(m2, p);
            var d2 = f2.Compile();

            Assert.AreEqual(42, d2(q));
            Assert.IsNull(d2(null));

            var m3 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("S"));
            var f3 = Expression.Lambda <Func <Quz?, string> >(m3, p);
            var d3 = f3.Compile();

            Assert.AreEqual("bar", d3(q));
            Assert.IsNull(d3(null));
        }
Esempio n. 2
0
        public void ConditionalMember_Compile_Field_Val()
        {
            var p = Expression.Parameter(typeof(Quz?));
            var q = new Quz(false);

            var m1 = CSharpExpression.ConditionalField(p, "Y");
            var f1 = Expression.Lambda <Func <Quz?, int?> >(m1, p);
            var d1 = f1.Compile();

            Assert.AreEqual(42, d1(q));
            Assert.IsNull(d1(null));

            var m2 = CSharpExpression.ConditionalField(p, "O");
            var f2 = Expression.Lambda <Func <Quz?, int?> >(m2, p);
            var d2 = f2.Compile();

            Assert.AreEqual(42, d2(q));
            Assert.IsNull(d2(null));

            var m3 = CSharpExpression.ConditionalField(p, "T");
            var f3 = Expression.Lambda <Func <Quz?, string> >(m3, p);
            var d3 = f3.Compile();

            Assert.AreEqual("bar", d3(q));
            Assert.IsNull(d3(null));
        }
        public void ConditionalCall_Compile_Val()
        {
            var p = Expression.Parameter(typeof(Quz?));
            var q = new Quz();

            var m1 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("X"));
            var f1 = Expression.Lambda<Func<Quz?, int?>>(m1, p);
            var d1 = f1.Compile();

            Assert.AreEqual(42, d1(q));
            Assert.IsNull(d1(null));

            var m2 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("N"));
            var f2 = Expression.Lambda<Func<Quz?, int?>>(m2, p);
            var d2 = f2.Compile();

            Assert.AreEqual(42, d2(q));
            Assert.IsNull(d2(null));

            var m3 = CSharpExpression.ConditionalCall(p, typeof(Quz).GetMethod("S"));
            var f3 = Expression.Lambda<Func<Quz?, string>>(m3, p);
            var d3 = f3.Compile();

            Assert.AreEqual("bar", d3(q));
            Assert.IsNull(d3(null));
        }
        public void ConditionalMember_Compile_Field_Val()
        {
            var p = Expression.Parameter(typeof(Quz?));
            var q = new Quz(false);

            var m1 = CSharpExpression.ConditionalField(p, "Y");
            var f1 = Expression.Lambda<Func<Quz?, int?>>(m1, p);
            var d1 = f1.Compile();

            Assert.AreEqual(42, d1(q));
            Assert.IsNull(d1(null));

            var m2 = CSharpExpression.ConditionalField(p, "O");
            var f2 = Expression.Lambda<Func<Quz?, int?>>(m2, p);
            var d2 = f2.Compile();

            Assert.AreEqual(42, d2(q));
            Assert.IsNull(d2(null));

            var m3 = CSharpExpression.ConditionalField(p, "T");
            var f3 = Expression.Lambda<Func<Quz?, string>>(m3, p);
            var d3 = f3.Compile();

            Assert.AreEqual("bar", d3(q));
            Assert.IsNull(d3(null));
        }