public async Task ReturnInNestedScopeWithTrailingVoidExpressionAsInt() { var script = CSharpScript.Create <int>(@" bool condition = false; if (condition) { return 1; } System.Console.WriteLine();"); var result = await script.EvaluateAsync(); Assert.Equal(0, result); script = CSharpScript.Create <int>(@" bool condition = false; if (condition) { return 1; } System.Console.WriteLine()"); using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { result = await script.EvaluateAsync(); Assert.Equal(0, result); } }
public async Task ReturnInLoadedFileTrailingVoidExpression() { using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", @" if (false) { return 1; } System.Console.WriteLine(42)")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create("#load \"a.csx\"", options); var result = await script.EvaluateAsync(); Assert.Null(result); script = CSharpScript.Create(@" #load ""a.csx"" 2", options); result = await script.EvaluateAsync(); Assert.Equal(2, result); } }
public async Task TestRunVoidScript() { using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { var state = await CSharpScript.RunAsync("System.Console.WriteLine(0);"); Assert.Null(state.ReturnValue); } }
public async Task NoReturn() { using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { var script = CSharpScript.Create <object>("System.Console.WriteLine();"); var result = await script.EvaluateAsync(); Assert.Null(result); } }
public async Task StreamWithOffset() { var resolver = new StreamOffsetResolver(); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create(@"#load ""a.csx""", options); using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { await script.EvaluateAsync(); } }
public void CompilationChain_SubmissionSlotResize() { var state = CSharpScript.RunAsync(""); for (int i = 0; i < 17; i++) { state = state.ContinueWith(@"public int i = 1;"); } using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { state.ContinueWith(@"System.Console.WriteLine(i);").Wait(); Assert.Equal(1, int.Parse(redirect.Output)); } }
public void TopLevelLambda() { var s = CSharpScript.RunAsync(@" using System; delegate void TestDelegate(string s); "); s = s.ContinueWith(@" TestDelegate testDelB = delegate (string s) { Console.WriteLine(s); }; "); using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { s.ContinueWith(@"testDelB(""hello"");").Wait(); Assert.Equal("hello", redirect.Output.Trim()); } }
public void CompilationChain_NestedTypesStruct() { var script = CSharpScript.Create(@" static string outerStr = null; public static void Foo(string str) { outerStr = str; } struct InnerStruct { public string innerStr; public void Goo() { Foo(""test""); innerStr = outerStr; } } ").ContinueWith(@" InnerStruct iS = new InnerStruct(); iS.Goo(); ").ContinueWith(@" System.Console.WriteLine(iS.innerStr); "); using (var redirect = new OutputRedirect(CultureInfo.InvariantCulture)) { script.RunAsync().Wait(); Assert.Equal("test", redirect.Output.Trim()); } }