public void WriteFormatStringWithThreeArguments() { var value = "{0} - {1} + {2}"; var arg1 = 10; var arg2 = 5; var arg3 = 7; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual( string.Format( CultureInfo.CurrentCulture, value, arg1, arg2, arg3), e.Text); }; pipe.Write(value, arg1, arg2, arg3); } Assert.IsTrue(eventWasRaised); }
public void Execute() { var filePaths = new List<string>(); var directoryPaths = new List<string> { Assembly.GetExecutingAssembly().LocalDirectoryPath() }; var resolutionPaths = AppDomainResolutionPaths.WithFilesAndDirectories( Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), filePaths, directoryPaths); Func<string, AppDomainPaths, AppDomain> builder = (name, paths) => AppDomainBuilder.Assemble(name, resolutionPaths); var projects = new Mock<ILinkToProjects>(); using (var host = new ScriptHost(projects.Object, builder)) { var output = string.Empty; using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => output += e.Text; var tuple = host.Execute(ScriptLanguage.IronPython, "print \"hello\"", writer); Assert.IsTrue(host.IsExecutingScript); tuple.Item1.Wait(); Assert.IsFalse(host.IsExecutingScript); Assert.AreEqual("hello" + Environment.NewLine, output); } } }
public void Execute() { var filePaths = new List <string>(); var directoryPaths = new List <string> { Assembly.GetExecutingAssembly().LocalDirectoryPath() }; var resolutionPaths = AppDomainResolutionPaths.WithFilesAndDirectories( Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), filePaths, directoryPaths); Func <string, AppDomainPaths, AppDomain> builder = (name, paths) => AppDomainBuilder.Assemble(name, resolutionPaths); var projects = new Mock <ILinkToProjects>(); using (var host = new ScriptHost(projects.Object, builder)) { var output = string.Empty; using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => output += e.Text; var tuple = host.Execute(ScriptLanguage.IronPython, "print \"hello\"", writer); Assert.IsTrue(host.IsExecutingScript); tuple.Item1.Wait(); Assert.IsFalse(host.IsExecutingScript); Assert.AreEqual("hello" + Environment.NewLine, output); } } }
public void WriteFormatStringWithArgumentArray() { var value = "{0}{1}{2}{3}"; var arg1 = 10; var arg2 = 20; var arg3 = 30; var arg4 = 40; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual( string.Format( CultureInfo.CurrentCulture, value, arg1, arg2, arg3, arg4), e.Text); }; pipe.Write(value, arg1, arg2, arg3, arg4); } Assert.IsTrue(eventWasRaised); }
public void VerifySyntaxWithMultipleSyntaxErrors() { var projects = new Mock <ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => { }; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "prin 10" + Environment.NewLine + "prin 20"; var errors = runner.VerifySyntax(script); Assert.AreEqual(2, errors.Count()); var error = errors.First(); Assert.AreEqual(1, error.Line); Assert.AreEqual(6, error.Column); Assert.AreEqual(SyntaxVerificationSeverity.Error, error.Severity); error = errors.Last(); Assert.AreEqual(2, error.Line); Assert.AreEqual(6, error.Column); Assert.AreEqual(SyntaxVerificationSeverity.Error, error.Severity); } }
public void ExecuteWithExecutionFailure() { var projects = new Mock<ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { bool hasOutput = false; writer.OnScriptOutput += (s, e) => hasOutput = true; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "foobar()"; Assert.Throws<ScriptExecutionFailureException>(() => runner.Execute(script, new CancelScriptToken())); Assert.IsFalse(hasOutput); } }
public void VerifySyntaxWithoutSyntaxErrors() { var projects = new Mock <ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => { }; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "print \"Hello\""; var errors = runner.VerifySyntax(script); Assert.AreEqual(0, errors.Count()); } }
public void WriteCharacter() { var value = 'c'; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual(value.ToString(CultureInfo.InvariantCulture), e.Text); }; pipe.Write(value); } Assert.IsTrue(eventWasRaised); }
public void ExecuteWithOutput() { var projects = new Mock<ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { var output = string.Empty; writer.OnScriptOutput += (s, e) => output += e.Text; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "print \"Hello\""; runner.Execute(script, new CancelScriptToken()); Assert.AreEqual("Hello" + Environment.NewLine, output); } }
public void ExecuteWithExecutionFailure() { var projects = new Mock <ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { bool hasOutput = false; writer.OnScriptOutput += (s, e) => hasOutput = true; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "foobar()"; Assert.Throws <ScriptExecutionFailureException>(() => runner.Execute(script, new CancelScriptToken())); Assert.IsFalse(hasOutput); } }
public void ExecuteWithOutput() { var projects = new Mock <ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { var output = string.Empty; writer.OnScriptOutput += (s, e) => output += e.Text; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "print \"Hello\""; runner.Execute(script, new CancelScriptToken()); Assert.AreEqual("Hello" + Environment.NewLine, output); } }
public void WriteUnsignedLong() { var value = 10UL; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual(value.ToString(CultureInfo.InvariantCulture), e.Text); }; pipe.Write(value); } Assert.IsTrue(eventWasRaised); }
public void WriteCharacterArray() { var value = new[] { 'a', 'b', 'c' }; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual("abc", e.Text); }; pipe.Write(value); } Assert.IsTrue(eventWasRaised); }
public void WriteObject() { var value = new object(); bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual(value.ToString(), e.Text); }; pipe.Write(value); } Assert.IsTrue(eventWasRaised); }
public void WritePartOfCharacterArray() { var value = new[] { 'a', 'b', 'c' }; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual("b", e.Text); }; pipe.Write(value, 1, 1); } Assert.IsTrue(eventWasRaised); }
public void ExecuteWithoutOutput() { var projects = new Mock<ILinkScriptsToProjects>(); { projects.Setup(p => p.NewProject()) .Verifiable(); } using (var writer = new ScriptOutputPipe()) { bool hasOutput = false; writer.OnScriptOutput += (s, e) => hasOutput = true; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "projects.NewProject()"; runner.Execute(script, new CancelScriptToken()); Assert.IsFalse(hasOutput); projects.Verify(p => p.NewProject(), Times.Once()); } }
public void ExecuteWithoutOutput() { var projects = new Mock <ILinkScriptsToProjects>(); { projects.Setup(p => p.NewProject()) .Verifiable(); } using (var writer = new ScriptOutputPipe()) { bool hasOutput = false; writer.OnScriptOutput += (s, e) => hasOutput = true; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "projects.NewProject()"; runner.Execute(script, new CancelScriptToken()); Assert.IsFalse(hasOutput); projects.Verify(p => p.NewProject(), Times.Once()); } }
public void WriteObject() { var value = new object(); bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual(value.ToString(), e.Text); }; pipe.Write(value); } Assert.IsTrue(eventWasRaised); }
public void VerifySyntaxWithoutSyntaxErrors() { var projects = new Mock<ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => { }; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "print \"Hello\""; var errors = runner.VerifySyntax(script); Assert.AreEqual(0, errors.Count()); } }
public void WriteFormatStringWithTwoArguments() { var value = "{0} - {1}"; var arg1 = 10; var arg2 = 5; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual( string.Format( CultureInfo.CurrentCulture, value, arg1, arg2), e.Text); }; pipe.Write(value, arg1, arg2); } Assert.IsTrue(eventWasRaised); }
public void VerifySyntaxWithMultipleSyntaxErrors() { var projects = new Mock<ILinkScriptsToProjects>(); using (var writer = new ScriptOutputPipe()) { writer.OnScriptOutput += (s, e) => { }; var engine = Python.CreateEngine(); var runner = new RemoteScriptRunner(projects.Object, writer, engine); var script = "prin 10" + Environment.NewLine + "prin 20"; var errors = runner.VerifySyntax(script); Assert.AreEqual(2, errors.Count()); var error = errors.First(); Assert.AreEqual(1, error.Line); Assert.AreEqual(6, error.Column); Assert.AreEqual(SyntaxVerificationSeverity.Error, error.Severity); error = errors.Last(); Assert.AreEqual(2, error.Line); Assert.AreEqual(6, error.Column); Assert.AreEqual(SyntaxVerificationSeverity.Error, error.Severity); } }
public void WriteFormatStringWithArgumentArray() { var value = "{0}{1}{2}{3}"; var arg1 = 10; var arg2 = 20; var arg3 = 30; var arg4 = 40; bool eventWasRaised = false; using (var pipe = new ScriptOutputPipe()) { pipe.OnScriptOutput += (s, e) => { eventWasRaised = true; Assert.AreEqual( string.Format( CultureInfo.CurrentCulture, value, arg1, arg2, arg3, arg4), e.Text); }; pipe.Write(value, arg1, arg2, arg3, arg4); } Assert.IsTrue(eventWasRaised); }