From f4fc165a344a2fb9d5f6faa8e1eb28fb51d5b869 Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Thu, 31 Jan 2008 16:54:11 +0000 Subject: [PATCH] 2008-01-31 Jb Evain * ExpressionTest_Field.cs: add field access tests. svn path=/trunk/mcs/; revision=94476 --- .../Test/System.Linq.Expressions/ChangeLog | 4 +++ .../ExpressionTest_Field.cs | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog b/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog index 557b9aee41a..34437813642 100644 --- a/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog +++ b/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog @@ -1,3 +1,7 @@ +2008-01-31 Jb Evain + + * ExpressionTest_Field.cs: add field access tests. + 2008-01-30 Jb Evain * ExpressionTest_CallWithExpression.cs: add tests for very simple calls. diff --git a/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Field.cs b/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Field.cs index d187d81b67e..bad13d0943b 100644 --- a/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Field.cs +++ b/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Field.cs @@ -85,5 +85,36 @@ namespace MonoTests.System.Linq.Expressions Assert.AreEqual ("MemberClass.StaticField", expr.ToString(), "Field#09"); } + public static string foo = "foo"; + + [Test] + public void CompileStaticField () + { + var foo = Expression.Lambda> ( + Expression.Field (null, GetType ().GetField ( + "foo", BindingFlags.Static | BindingFlags.Public))).Compile (); + + Assert.AreEqual ("foo", foo ()); + } + + public class Bar { + public string baz; + + public Bar () + { + baz = "baz"; + } + } + + [Test] + public void CompileInstanceField () + { + var p = Expression.Parameter (typeof (Bar), "bar"); + var baz = Expression.Lambda> ( + Expression.Field (p, typeof (Bar).GetField ( + "baz", BindingFlags.Public | BindingFlags.Instance)), p).Compile (); + + Assert.AreEqual ("baz", baz (new Bar ())); + } } } -- 2.25.1