private string ExecuteJs(string exeFilePath, string corlibPath, string entryPoint, out int exitCode, List <string> errors) { string jsOutput = null; exitCode = -1; using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false)) { object exitCodeObj = null; try { jsEngine.Execute(@"var braille_testlib_output = """";"); jsEngine.Execute(@"function braille_test_log(message) { braille_testlib_output += asm0.ToJavaScriptString(message) + ""\r\n""; }"); if (corlibPath != null) { jsEngine.ExecuteFile(corlibPath); } jsEngine.ExecuteFile(exeFilePath + ".js"); exitCodeObj = jsEngine.Evaluate(entryPoint + ".entryPoint()"); } catch (JsEngineLoadException e) { errors.Add("During loading of JavaScript engine an error occurred.\n" + JsErrorHelpers.Format(e)); } catch (JsRuntimeException e) { errors.Add("During execution of JavaScript code an error occurred.\n" + JsErrorHelpers.Format(e)); } if (exitCodeObj == null || exitCodeObj == MsieJavaScriptEngine.Undefined.Value) { exitCode = 0; } else { exitCode = (int)(double)exitCodeObj; } try { jsOutput = (string)jsEngine.Evaluate("braille_testlib_output"); } catch { errors.Add("Exception while evaluating script output"); } } return(jsOutput); }
public virtual void ExecutionOfFileIsCorrect() { // Arrange string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"../../Resources/square.js"); const string input = "square(6);"; const int targetOutput = 36; // Act _jsEngine.ExecuteFile(filePath); var output = _jsEngine.Evaluate <int>(input); // Assert Assert.AreEqual(targetOutput, output); }