Merge pull request #3142 from henricm/fix-for-win-mono_string_to_utf8
[mono.git] / mcs / class / Mono.CSharp / Test / Evaluator / ExpressionsTest.cs
index 977e9a5aa4ef059ecb4924eb89911be0bc6ae21d..8c414dad79feaced6c3d48e6a4b7ff4865e0e3ff 100644 (file)
@@ -83,6 +83,26 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Evaluate ("File.Exists (\"/etc/passwd\");");
                }
 
+               [Test]
+               public void UsingWithError ()
+               {
+                       try {
+                               Evaluator.Run ("using System.DateTime;");
+                               Assert.Fail ("#1");
+                       } catch {
+                       }
+
+                       Evaluator.Evaluate ("1+1");
+               }
+
+               [Test]
+               public void UsingAlias ()
+               {
+                       Evaluator.Run("using System;");
+                       Evaluator.Run("using MyConsole = System.Console;");
+                       Evaluator.Run("Console.WriteLine(\"Hello World\")");
+               }
+
                [Test]
                public void WithTypeBuilders ()
                {
@@ -100,7 +120,8 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("var a = new int[]{1,2,3};");
 
                        object res = Evaluator.Evaluate ("from x in a select x + 1;");
-                       CollectionAssert.AreEqual (new int[] { 2, 3, 4 }, ((IEnumerable<int>) res).ToArray ());
+
+                       Assert.AreEqual (new int[] { 2, 3, 4 }, ((IEnumerable<int>) res).ToArray ());
                }
 
                [Test]
@@ -130,7 +151,31 @@ namespace MonoTests.EvaluatorTest
                        Assert.AreEqual ("1+", sres, "The result should have been the input string, since we have a partial input");
                }
 
-#if NET_4_0
+               [Test]
+               public void GotoWithUnreachableStatement ()
+               {
+                       Evaluator.Run ("using System;");
+
+                       string code = "var x = new Action(() => {" +
+                       "Console.WriteLine(\"beforeGoto\");" +
+                       "goto L;" +
+               "L:" +
+                       "Console.WriteLine(\"afterGoto\");" +
+                       "});";
+
+                       Assert.IsTrue (Evaluator.Run (code), "#1");
+                       Assert.IsTrue (Evaluator.Run ("x();"), "#2");
+               }
+
+               [Test]
+               public void CapturedLocalVariable ()
+               {
+                       Evaluator.Run ("using System;");
+
+                       var res = Evaluator.Evaluate("var x = 123; Action a = () => x++; a(); x;");
+                       Assert.AreEqual (124, res);     
+               }
+
                [Test]
                public void DynamicStatement ()
                {
@@ -138,6 +183,23 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("d = 'a';");
                        Evaluator.Run ("d.GetType ();");
                }
-#endif
+
+               [Test]
+               public void AwaitExpression ()
+               {
+                       Evaluator.WaitOnTask = true;
+                       var res = Evaluator.Evaluate("var res = await System.Threading.Tasks.Task.FromResult (1) + await System.Threading.Tasks.Task.FromResult (2);");
+                       res = Evaluator.Evaluate ("res;");
+                       Assert.AreEqual (3, res, "#1");
+               }
+
+               [Test]
+               public void UsingStatic ()
+               {
+                       Evaluator.Run ("using static System.String;");
+                       var res = Evaluator.Evaluate("Join (\"--\", new [] { \"a\", \"b\" } );");
+                       Assert.AreEqual ("a--b", res);
+               }
+
        }
-}
\ No newline at end of file
+}