예제 #1
0
		public void TestCSharpScript()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.CSharp, "class Program { static void Main() { System.Console.WriteLine(\"From C#\"); } }"))
			{
				StringWriter sw = new StringWriter();
				runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { sw.WriteLine(e.Data); };
				Assert.AreEqual(0, runner.Run());
				Assert.AreEqual("From C#", sw.ToString().Trim());
			}
		}
예제 #2
0
		public void TestCmdScript()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.Cmd, "@ECHO From CMD.exe"))
			{
				StringWriter sw = new StringWriter();
				runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { sw.WriteLine(e.Data); };
				Assert.AreEqual(0, runner.Run());
				Assert.AreEqual("From CMD.exe", sw.ToString().Trim());
			}
		}
예제 #3
0
        public void TestWorkingDir()
        {
            using (TempDirectory dir = new TempDirectory())
            using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.Cmd, "@ECHO %cd%"))
            {
                string output = String.Empty;
                runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { output += e.Data; };

                Assert.AreNotEqual(dir.TempPath, runner.WorkingDirectory);
                runner.WorkingDirectory = dir.TempPath;
                Assert.AreEqual(dir.TempPath, runner.WorkingDirectory);
                runner.Run();
                Assert.AreEqual(dir.TempPath.TrimEnd('\\', '/'), output.TrimEnd('\\', '/'));
            }
        }
예제 #4
0
		public void TestExeScript()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.Exe, @"cmd.exe"))
			{
				StringWriter sw = new StringWriter();
				runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { sw.WriteLine(e.Data); };
				Assert.AreEqual(0, runner.Run("/c", "@echo From EXE"));
				Assert.AreEqual("From EXE", sw.ToString().Trim());
			}
		}
예제 #5
0
		public void TestRemoveExitedEvent()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.Cmd, "@ECHO From CMD.exe"))
			{
				ManualResetEvent mre = new ManualResetEvent(false);
				ProcessExitedEventHandler h = delegate(object o, ProcessExitedEventArgs e) { mre.Set(); };
				runner.ProcessExited += h;
				runner.ProcessExited -= h;
				Assert.AreEqual(0, runner.Run());
				Assert.IsFalse(mre.WaitOne(250, false));
			}
		}
예제 #6
0
		public void TestVbScriptScript()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.JScript, "WScript.StdOut.WriteLine(\"From VBScript\")"))
			{
				StringWriter sw = new StringWriter();
				runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { sw.WriteLine(e.Data); };
				Assert.AreEqual(0, runner.Run());
				Assert.AreEqual("From VBScript", sw.ToString().Trim());
			}
		}
예제 #7
0
		public void TestVbNetScript()
		{
			using (ScriptRunner runner = new ScriptRunner(ScriptEngine.Language.VBNet,
@"Module Module1
    Sub Main()
        System.Console.WriteLine(""From VB.Net"")
    End Sub
End Module
"))
			{
				StringWriter sw = new StringWriter();
				runner.OutputReceived += delegate(object o, ProcessOutputEventArgs e) { sw.WriteLine(e.Data); };
				Assert.AreEqual(0, runner.Run());
				Assert.AreEqual("From VB.Net", sw.ToString().Trim());
			}
		}