Ejemplo n.º 1
0
 public void TestRunScriptWithScriptState()
 {
     // run a script using another scripts end state as the starting state (globals)
     var result = CSharpScript.Run("int X = 100;");
     var result2 = CSharpScript.Run("X + X", result);
     Assert.Equal(200, result2.ReturnValue);
 }
Ejemplo n.º 2
0
            public void ShouldNotMarkSubmissionsAsIncompleteWhenRunningScript(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "class test {";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                engine.FileName = "test.csx";

                // Act
                var result = engine.Execute(
                    Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.IsCompleteSubmission.ShouldBeTrue();
                result.CompileExceptionInfo.ShouldNotBeNull();
            }
Ejemplo n.º 3
0
        public void ShouldCompileWhenUsingClassesFromAPassedAssemblyInstance(
            [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
            [Frozen] ScriptPackSession scriptPackSession)
        {
            // Arrange
            const string Code = "var x = new ScriptCs.Tests.TestMarkerClass();";

            scriptHostFactory.Setup(f => f.CreateScriptHost(It.IsAny <IScriptPackManager>(), It.IsAny <string[]>()))
            .Returns <IScriptPackManager, string[]>((p, q) => new ScriptHost(p, new ScriptEnvironment(q)));

            var engine  = new CSharpScriptEngine(scriptHostFactory.Object, new TestLogProvider());
            var session = new SessionState <ScriptState> {
                Session = CSharpScript.Run("")
            };

            scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
            var refs = new AssemblyReferences(new[] { Assembly.GetExecutingAssembly() }, new[] { "System" });

            // Act
            var result = engine.Execute(Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

            // Assert
            result.CompileExceptionInfo.ShouldBeNull();
            result.ExecuteExceptionInfo.ShouldBeNull();
        }
Ejemplo n.º 4
0
        public void TestRunScriptWithGlobals()
        {
            var result = CSharpScript.Run("X + Y", new Globals {
                X = 1, Y = 2
            });

            Assert.Equal(3, result.ReturnValue);
        }
Ejemplo n.º 5
0
 public void TestCreateMethodDelegate()
 {
     // create a delegate to a method declared in the script
     var state = CSharpScript.Run("int Times(int x) { return x * x; }");
     var fn = state.CreateDelegate<Func<int, int>>("Times");
     var result = fn(5);
     Assert.Equal(25, result);
 }
Ejemplo n.º 6
0
 public void TestGetScriptVariableAfterRunningScript()
 {
     var result = CSharpScript.Run("int x = 100;");
     var globals = result.Variables.Names.ToList();
     Assert.Equal(1, globals.Count);
     Assert.Equal(true, globals.Contains("x"));
     Assert.Equal(true, result.Variables.ContainsVariable("x"));
     Assert.Equal(100, (int)result.Variables["x"].Value);
 }
Ejemplo n.º 7
0
 private void ExecuteCommand(CSharpScript script, TwitchChat.User user = null, String arguments = "")
 {
     try
     {
         script.Run(State, user, arguments);
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 8
0
 public Task <ScriptResult> ExecuteAsync(string code)
 {
     return(Task.Run(() =>
     {
         var result = CSharpScript.Run(code, state);
         state = result;
         return new ScriptResult
         {
             ReturnValue = result.ReturnValue
         };
     }));
 }
Ejemplo n.º 9
0
        public void Execute()
        {
            SourceText text;

            if (GetCurrentDocument().TryGetText(out text))
            {
                CSharpScript.Run(text.ToString(),
                                 ScriptOptions.Default
                                 .AddNamespaces(_assemblyTypes.Select(x => x.Namespace))
                                 .AddReferences(_assemblyTypes.Select(x => x.Assembly)));
            }
        }
Ejemplo n.º 10
0
        public void TestRunDynamicVoidScriptWithoutTerminatingSemicolon()
        {
            var result = CSharpScript.Run(@"
class SomeClass
{
    public void Do()
    {
    }
}
dynamic d = new SomeClass();
d.Do()"
                                          , ScriptOptions.Default.WithReferences(MscorlibRef, SystemRef, SystemCoreRef, CSharpRef));
        }
            public void ShouldReturnOnlyLastValueOfVariablesDeclaredManyTimes([NoAutoProperties] CSharpReplEngine engine, ScriptPackSession scriptPackSession)
            {
                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;

                engine.Execute("int x = 1;", new string[0], new AssemblyReferences(), Enumerable.Empty <string>(), scriptPackSession);
                engine.Execute("int x = 2;", new string[0], new AssemblyReferences(), Enumerable.Empty <string>(), scriptPackSession);

                engine.GetLocalVariables(scriptPackSession).ShouldEqual(new Collection <string> {
                    "System.Int32 x"
                });
            }
Ejemplo n.º 12
0
        public void TestBranchingSubscripts()
        {
            // run script to create declaration of M
            var result1 = CSharpScript.Run("int M(int x) { return x + x; }");

            // run second script starting from first script's end state
            // this script's new declaration should hide the old declaration
            var result2 = CSharpScript.Run("int M(int x) { return x * x; } M(5)", result1);
            Assert.Equal(25, result2.ReturnValue);

            // run third script also starting from first script's end state
            // it should not see any declarations made by the second script.
            var result3 = CSharpScript.Run("M(5)", result1);
            Assert.Equal(10, result3.ReturnValue);
        }
Ejemplo n.º 13
0
            //todo: filip: this feature is not supported in Roslyn 1.0.0-rc2: see https://github.com/dotnet/roslyn/issues/1012
            //[Theory, ScriptCsAutoData]
            public void ShouldReturnInvalidNamespacesIfCS0241Encountered(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;

                // Act
                var result = engine.Execute(string.Empty, new string[0], new AssemblyReferences(), new[] { "foo" }, scriptPackSession);

                // Assert
                result.CompileExceptionInfo.ShouldNotBeNull();
                result.InvalidNamespaces.ShouldContain("foo");
            }
            public void ShouldReturn0VariablesAfterReset([NoAutoProperties] CSharpReplEngine engine, ScriptPackSession scriptPackSession)
            {
                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;

                engine.Execute("int x = 1;", new string[0], new AssemblyReferences(), Enumerable.Empty <string>(),
                               scriptPackSession);
                engine.Execute(@"var y = ""www"";", new string[0], new AssemblyReferences(), Enumerable.Empty <string>(),
                               scriptPackSession);

                scriptPackSession.State[CommonScriptEngine.SessionKey] = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                engine.GetLocalVariables(scriptPackSession).ShouldBeEmpty();
            }
Ejemplo n.º 15
0
        public void TestRepl()
        {
            string[] submissions = new[]
            {
                "int x = 100;",
                "int y = x * x;",
                "x + y"
            };

            object input = null;
            ScriptState result = null;
            foreach (var submission in submissions)
            {
                result = CSharpScript.Run(submission, input);
                input = result;
            }

            Assert.Equal(10100, result.ReturnValue);
        }
            public void ShouldSetIsCompleteSubmissionToFalseIfCodeIsMissingCurlyBracket(
                [NoAutoProperties] CSharpReplEngine engine, ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "class test {";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                var result = engine.Execute(
                    Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.IsCompleteSubmission.ShouldBeFalse();
            }
Ejemplo n.º 17
0
            public void ShouldReturnReturnValueIfCodeExecutionReturnsValue(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                const string Code = "\"Hello\" //this should return \"Hello\"";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                var result = engine.Execute(Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.ReturnValue.ShouldEqual("Hello");
            }
Ejemplo n.º 18
0
            public void ShouldNotReturnReturnValueIfCodeExecutionDoesNotReturnValue(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "var theNumber = 42; //this should not return a value";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                var result = engine.Execute(Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.ReturnValue.ShouldBeNull();
            }
Ejemplo n.º 19
0
            public void ShouldAddNewReferencesIfTheyAreProvided(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpTestScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "var a = 0;";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                engine.Execute(Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                ((SessionState <ScriptState>)scriptPackSession.State[CommonScriptEngine.SessionKey]).References.Paths.Count().ShouldEqual(1);
            }
Ejemplo n.º 20
0
            public void ShouldReturnExecuteExceptionIfCodeExecutionThrowsException(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "throw new System.Exception(); //this should throw an Exception";

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                var result = engine.Execute(Code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.ExecuteExceptionInfo.ShouldNotBeNull();
            }
Ejemplo n.º 21
0
            public void ShouldReturnAScriptResult(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpTestScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                var code = string.Empty;

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;
                var refs = new AssemblyReferences(new[] { "System" });

                // Act
                var result = engine.Execute(code, new string[0], refs, Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                result.ShouldBeType <ScriptResult>();
            }
Ejemplo n.º 22
0
            public void ShouldReuseExistingSessionIfProvided(
                [Frozen] Mock <IScriptHostFactory> scriptHostFactory,
                [NoAutoProperties] CSharpTestScriptEngine engine,
                ScriptPackSession scriptPackSession)
            {
                // Arrange
                const string Code = "var a = 0;";

                scriptHostFactory.Setup(f => f.CreateScriptHost(It.IsAny <IScriptPackManager>(), It.IsAny <string[]>()))
                .Returns <IScriptPackManager, string[]>((p, q) => new ScriptHost(p, new ScriptEnvironment(q)));

                var session = new SessionState <ScriptState> {
                    Session = CSharpScript.Run("")
                };

                scriptPackSession.State[CommonScriptEngine.SessionKey] = session;

                // Act
                engine.Execute(Code, new string[0], new AssemblyReferences(), Enumerable.Empty <string>(), scriptPackSession);

                // Assert
                engine.Session.ShouldEqual(session.Session);
            }
Ejemplo n.º 23
0
        public void TestRunScript()
        {
            var result = CSharpScript.Run("1 + 2");

            Assert.Equal(3, result.ReturnValue);
        }
Ejemplo n.º 24
0
 protected override ScriptState GetScriptState(string code, object globals)
 {
     return(CSharpScript.Run(code, ScriptOptions, globals));
 }
 protected override ScriptState ExecuteScript(string text, ScriptOptions options)
 {
     return(CSharpScript.Run(text, options, new FiddlerScriptGlobals()));
 }
Ejemplo n.º 26
0
 public void TestRunVoidScript()
 {
     var result = CSharpScript.Run("Console.WriteLine(0);");
 }