public void ConfigurationIsMutable() { var first = new V8Configuration(); var second = first.AddScriptSearchPath("foo"); Assert.Same(first, second); }
/// <summary> /// Constructs instance of adapter for Microsoft ClearScript.V8 /// </summary> /// <param name="v8Config">Configuration settings of V8 JavaScript engine</param> public V8JsEngine(V8Configuration v8Config) { V8RuntimeConstraints constraints = new V8RuntimeConstraints { MaxNewSpaceSize = v8Config.MaxNewSpaceSize, MaxOldSpaceSize = v8Config.MaxOldSpaceSize, MaxExecutableSize = v8Config.MaxExecutableSize }; V8ScriptEngineFlags flags = V8ScriptEngineFlags.None; if (v8Config.EnableDebugging && v8Config.DisableGlobalMembers) { flags = V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.DisableGlobalMembers; } else if (v8Config.EnableDebugging || v8Config.DisableGlobalMembers) { flags = v8Config.EnableDebugging ? V8ScriptEngineFlags.EnableDebugging : V8ScriptEngineFlags.DisableGlobalMembers; } int debugPort = v8Config.DebugPort; try { _jsEngine = new V8ScriptEngine(constraints, flags, debugPort); } catch (Exception e) { throw new JsEngineLoadException( string.Format(CoreStrings.Runtime_JsEngineNotLoaded, ENGINE_NAME, e.Message), ENGINE_NAME, ENGINE_VERSION, e); } }
public void ConfigurationHasEmptyScriptPathsWhenCreated() { var sut = new V8Configuration(); var expected = new[] {""}; Assert.Equal(expected, sut.ScriptSearchPaths); }
public void ConfigurationAddsScriptSearchPath() { var sut = new V8Configuration() .AddScriptSearchPath("foo"); var expected = new[] {"foo"}; Assert.Equal(expected, sut.ScriptSearchPaths); }
public void ConfigurationAddsMultipleScriptSearchPaths() { var sut = new V8Configuration() .AddScriptSearchPath("bar") .AddScriptSearchPath("baz"); var expected = new[] { "bar", "baz" }; Assert.Equal(expected, sut.ScriptSearchPaths); }
public void FileScriptLoaderLoadsFilesFromSearchPaths() { var configuration = new V8Configuration() .AddScriptSearchPath(Environment.CurrentDirectory + "\\Root"); var sut = new FileScriptLoader() { Configuration = configuration }; var result = sut.Load("scriptAtRoot.js"); Assert.Equal("baz", result); }
public void FileScriptLoaderLoadsFiles(string script, string scriptText) { var configuration = new V8Configuration() .AddScriptSearchPath(Environment.CurrentDirectory); var sut = new FileScriptLoader() { Configuration = configuration }; var result = sut.Load(script); Assert.Equal(scriptText, result); }
public void FileScriptLoaderLoadsFilesFromSearchPathsInOrder(string searchPaths, string expectedText) { var configuration = new V8Configuration(); foreach (var path in searchPaths.Split(',')) { configuration.AddScriptSearchPath(path); } var sut = new FileScriptLoader() { Configuration = configuration }; var result = sut.Load("innerScript.js"); Assert.Equal(expectedText, result); }
public void FileScriptLoaderThrowsWhenItFailsToLoadFile(string scriptName, string searchFolders, string pathsConsidered) { var paths = searchFolders.Split(','); var configuration = new V8Configuration(); foreach (var path in paths) { configuration.AddScriptSearchPath(path); } var sut = new FileScriptLoader() { Configuration = configuration }; var exception = Assert.Throws<ScriptLoadException>(() => sut.Load(scriptName)); var expectedText = "Could not find script " + scriptName + ". Paths considered:\r\n" + string.Join("\r\n", pathsConsidered.Split(',') .Select(x => Environment.CurrentDirectory + "\\" + x)); Assert.Equal(expectedText, exception.Message); }
public void FileScriptLoaderHandlesLoadErrorsGracefully(string scriptToLoad) { var configuration = new V8Configuration() .AddScriptSearchPath(""); var sut = new FileScriptLoader() { Configuration = configuration }; var exception = Assert.Throws<ScriptLoadException>(() => sut.Load(scriptToLoad)); Assert.Equal(exception.Message, "Could not load script " + scriptToLoad + ". Check inner exception for details."); Assert.IsType<ArgumentException>(exception.InnerException); }
public void LoaderHandlesUrlPaths() { var configuration = new V8Configuration() .AddScriptSearchPath("Root") .AddScriptSearchPath("Root\\Inner1"); var sut = new FileScriptLoader() { Configuration = configuration }; var actual = sut.Load("./Inner2/innerScript.js"); Assert.Equal("qux", actual); }
public void FileScriptLoaderHandlesRelativeDirectories() { var configuration = new V8Configuration() .AddScriptSearchPath("Root") .AddScriptSearchPath("Root\\Inner1"); var sut = new FileScriptLoader() { Configuration = configuration }; var actual = sut.Load("Inner2\\innerScript.js"); Assert.Equal("qux", actual); }
public void FileScriptLoaderHandlesTrailingSlashes() { var configuration = new V8Configuration() .AddScriptSearchPath("Root\\"); var sut = new FileScriptLoader() { Configuration = configuration }; var actual = sut.Load("scriptAtRoot.js"); Assert.Equal("baz", actual); }