2008-01-31 Jb Evain <jbevain@novell.com>
authorJb Evain <jbevain@gmail.com>
Thu, 31 Jan 2008 16:54:11 +0000 (16:54 -0000)
committerJb Evain <jbevain@gmail.com>
Thu, 31 Jan 2008 16:54:11 +0000 (16:54 -0000)
* ExpressionTest_Field.cs: add field access tests.

svn path=/trunk/mcs/; revision=94476

mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Field.cs

index 557b9aee41a36b15e2acbf0b47fa7ac9c0a9aa45..34437813642585d9f3f0dd85f38fc3ce6389f786 100644 (file)
@@ -1,3 +1,7 @@
+2008-01-31  Jb Evain  <jbevain@novell.com>
+
+       * ExpressionTest_Field.cs: add field access tests.
+
 2008-01-30  Jb Evain  <jbevain@novell.com>
 
        * ExpressionTest_CallWithExpression.cs: add tests for very simple calls.
index d187d81b67eff154d02d50ff0cce5b23608f3d41..bad13d0943b904f247702382a72d22fd1bc161ee 100644 (file)
@@ -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<Func<string>> (
+                               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<Func<Bar, string>> (
+                               Expression.Field (p, typeof (Bar).GetField (
+                                       "baz", BindingFlags.Public | BindingFlags.Instance)), p).Compile ();
+
+                       Assert.AreEqual ("baz", baz (new Bar ()));
+               }
        }
 }