|
@@ -15,8 +15,8 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldExportNamed()
|
|
public void ShouldExportNamed()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-module", "export const value = 'exported value';");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", "export const value = 'exported value';");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("value").AsString());
|
|
Assert.Equal("exported value", ns.Get("value").AsString());
|
|
}
|
|
}
|
|
@@ -24,8 +24,8 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldExportNamedListRenamed()
|
|
public void ShouldExportNamedListRenamed()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-module", "const value1 = 1; const value2 = 2; export { value1 as renamed1, value2 as renamed2 }");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", "const value1 = 1; const value2 = 2; export { value1 as renamed1, value2 as renamed2 }");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(1, ns.Get("renamed1").AsInteger());
|
|
Assert.Equal(1, ns.Get("renamed1").AsInteger());
|
|
Assert.Equal(2, ns.Get("renamed2").AsInteger());
|
|
Assert.Equal(2, ns.Get("renamed2").AsInteger());
|
|
@@ -34,8 +34,8 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldExportDefault()
|
|
public void ShouldExportDefault()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-module", "export default 'exported value';");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", "export default 'exported value';");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("default").AsString());
|
|
Assert.Equal("exported value", ns.Get("default").AsString());
|
|
}
|
|
}
|
|
@@ -43,9 +43,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldExportAll()
|
|
public void ShouldExportAll()
|
|
{
|
|
{
|
|
- _engine.AddModule("module1", "export const value = 'exported value';");
|
|
|
|
- _engine.AddModule("module2", "export * from 'module1';");
|
|
|
|
- var ns = _engine.ImportModule("module2");
|
|
|
|
|
|
+ _engine.Modules.Add("module1", "export const value = 'exported value';");
|
|
|
|
+ _engine.Modules.Add("module2", "export * from 'module1';");
|
|
|
|
+ var ns = _engine.Modules.Import("module2");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("value").AsString());
|
|
Assert.Equal("exported value", ns.Get("value").AsString());
|
|
}
|
|
}
|
|
@@ -53,9 +53,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldImportNamed()
|
|
public void ShouldImportNamed()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", "export const value = 'exported value';");
|
|
|
|
- _engine.AddModule("my-module", "import { value } from 'imported-module'; export const exported = value;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", "export const value = 'exported value';");
|
|
|
|
+ _engine.Modules.Add("my-module", "import { value } from 'imported-module'; export const exported = value;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -63,9 +63,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldImportRenamed()
|
|
public void ShouldImportRenamed()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", "export const value = 'exported value';");
|
|
|
|
- _engine.AddModule("my-module", "import { value as renamed } from 'imported-module'; export const exported = renamed;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", "export const value = 'exported value';");
|
|
|
|
+ _engine.Modules.Add("my-module", "import { value as renamed } from 'imported-module'; export const exported = renamed;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -73,9 +73,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldImportDefault()
|
|
public void ShouldImportDefault()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", "export default 'exported value';");
|
|
|
|
- _engine.AddModule("my-module", "import imported from 'imported-module'; export const exported = imported;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", "export default 'exported value';");
|
|
|
|
+ _engine.Modules.Add("my-module", "import imported from 'imported-module'; export const exported = imported;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -83,9 +83,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldImportAll()
|
|
public void ShouldImportAll()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", "export const value = 'exported value';");
|
|
|
|
- _engine.AddModule("my-module", "import * as imported from 'imported-module'; export const exported = imported.value;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", "export const value = 'exported value';");
|
|
|
|
+ _engine.Modules.Add("my-module", "import * as imported from 'imported-module'; export const exported = imported.value;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
Assert.Equal("exported value", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -94,10 +94,10 @@ public class ModuleTests
|
|
public void ShouldImportDynamically()
|
|
public void ShouldImportDynamically()
|
|
{
|
|
{
|
|
var received = false;
|
|
var received = false;
|
|
- _engine.AddModule("imported-module", builder => builder.ExportFunction("signal", () => received = true));
|
|
|
|
- _engine.AddModule("my-module", "import('imported-module').then(ns => { ns.signal(); });");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder.ExportFunction("signal", () => received = true));
|
|
|
|
+ _engine.Modules.Add("my-module", "import('imported-module').then(ns => { ns.signal(); });");
|
|
|
|
|
|
- _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.True(received);
|
|
Assert.True(received);
|
|
}
|
|
}
|
|
@@ -105,10 +105,10 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldPropagateParseError()
|
|
public void ShouldPropagateParseError()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported", "export const invalid;");
|
|
|
|
- _engine.AddModule("my-module", "import { invalid } from 'imported';");
|
|
|
|
|
|
+ _engine.Modules.Add("imported", "export const invalid;");
|
|
|
|
+ _engine.Modules.Add("my-module", "import { invalid } from 'imported';");
|
|
|
|
|
|
- var exc = Assert.Throws<JavaScriptException>(() => _engine.ImportModule("my-module"));
|
|
|
|
|
|
+ var exc = Assert.Throws<JavaScriptException>(() => _engine.Modules.Import("my-module"));
|
|
Assert.Equal("Error while loading module: error in module 'imported': Line 1: Missing initializer in const declaration", exc.Message);
|
|
Assert.Equal("Error while loading module: error in module 'imported': Line 1: Missing initializer in const declaration", exc.Message);
|
|
Assert.Equal("imported", exc.Location.Source);
|
|
Assert.Equal("imported", exc.Location.Source);
|
|
}
|
|
}
|
|
@@ -116,10 +116,10 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldPropagateLinkError()
|
|
public void ShouldPropagateLinkError()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported", "export invalid;");
|
|
|
|
- _engine.AddModule("my-module", "import { value } from 'imported';");
|
|
|
|
|
|
+ _engine.Modules.Add("imported", "export invalid;");
|
|
|
|
+ _engine.Modules.Add("my-module", "import { value } from 'imported';");
|
|
|
|
|
|
- var exc = Assert.Throws<JavaScriptException>(() => _engine.ImportModule("my-module"));
|
|
|
|
|
|
+ var exc = Assert.Throws<JavaScriptException>(() => _engine.Modules.Import("my-module"));
|
|
Assert.Equal("Error while loading module: error in module 'imported': Line 1: Unexpected identifier", exc.Message);
|
|
Assert.Equal("Error while loading module: error in module 'imported': Line 1: Unexpected identifier", exc.Message);
|
|
Assert.Equal("imported", exc.Location.Source);
|
|
Assert.Equal("imported", exc.Location.Source);
|
|
}
|
|
}
|
|
@@ -127,9 +127,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldPropagateExecuteError()
|
|
public void ShouldPropagateExecuteError()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-module", "throw new Error('imported successfully');");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", "throw new Error('imported successfully');");
|
|
|
|
|
|
- var exc = Assert.Throws<JavaScriptException>(() => _engine.ImportModule("my-module"));
|
|
|
|
|
|
+ var exc = Assert.Throws<JavaScriptException>(() => _engine.Modules.Import("my-module"));
|
|
Assert.Equal("imported successfully", exc.Message);
|
|
Assert.Equal("imported successfully", exc.Message);
|
|
Assert.Equal("my-module", exc.Location.Source);
|
|
Assert.Equal("my-module", exc.Location.Source);
|
|
}
|
|
}
|
|
@@ -137,18 +137,18 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldPropagateThrowStatementThroughJavaScriptImport()
|
|
public void ShouldPropagateThrowStatementThroughJavaScriptImport()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", "throw new Error('imported successfully');");
|
|
|
|
- _engine.AddModule("my-module", "import 'imported-module';");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", "throw new Error('imported successfully');");
|
|
|
|
+ _engine.Modules.Add("my-module", "import 'imported-module';");
|
|
|
|
|
|
- var exc = Assert.Throws<JavaScriptException>(() => _engine.ImportModule("my-module"));
|
|
|
|
|
|
+ var exc = Assert.Throws<JavaScriptException>(() => _engine.Modules.Import("my-module"));
|
|
Assert.Equal("imported successfully", exc.Message);
|
|
Assert.Equal("imported successfully", exc.Message);
|
|
}
|
|
}
|
|
|
|
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAddModuleFromJsValue()
|
|
public void ShouldAddModuleFromJsValue()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-module", builder => builder.ExportValue("value", JsString.Create("hello world")));
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", builder => builder.ExportValue("value", JsString.Create("hello world")));
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("hello world", ns.Get("value").AsString());
|
|
Assert.Equal("hello world", ns.Get("value").AsString());
|
|
}
|
|
}
|
|
@@ -156,12 +156,12 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAddModuleFromClrInstance()
|
|
public void ShouldAddModuleFromClrInstance()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", builder => builder.ExportObject("value", new ImportedClass
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder.ExportObject("value", new ImportedClass
|
|
{
|
|
{
|
|
Value = "instance value"
|
|
Value = "instance value"
|
|
}));
|
|
}));
|
|
- _engine.AddModule("my-module", "import { value } from 'imported-module'; export const exported = value.value;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", "import { value } from 'imported-module'; export const exported = value.value;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("instance value", ns.Get("exported").AsString());
|
|
Assert.Equal("instance value", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -169,8 +169,8 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAllowInvokeUserDefinedClass()
|
|
public void ShouldAllowInvokeUserDefinedClass()
|
|
{
|
|
{
|
|
- _engine.AddModule("user", "export class UserDefined { constructor(v) { this._v = v; } hello(c) { return `hello ${this._v}${c}`; } }");
|
|
|
|
- var ctor = _engine.ImportModule("user").Get("UserDefined");
|
|
|
|
|
|
+ _engine.Modules.Add("user", "export class UserDefined { constructor(v) { this._v = v; } hello(c) { return `hello ${this._v}${c}`; } }");
|
|
|
|
+ var ctor = _engine.Modules.Import("user").Get("UserDefined");
|
|
var instance = _engine.Construct(ctor, JsString.Create("world"));
|
|
var instance = _engine.Construct(ctor, JsString.Create("world"));
|
|
var result = instance.GetMethod("hello").Call(instance, JsString.Create("!"));
|
|
var result = instance.GetMethod("hello").Call(instance, JsString.Create("!"));
|
|
|
|
|
|
@@ -180,9 +180,9 @@ public class ModuleTests
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAddModuleFromClrType()
|
|
public void ShouldAddModuleFromClrType()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", builder => builder.ExportType<ImportedClass>());
|
|
|
|
- _engine.AddModule("my-module", "import { ImportedClass } from 'imported-module'; export const exported = new ImportedClass().value;");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder.ExportType<ImportedClass>());
|
|
|
|
+ _engine.Modules.Add("my-module", "import { ImportedClass } from 'imported-module'; export const exported = new ImportedClass().value;");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("hello world", ns.Get("exported").AsString());
|
|
Assert.Equal("hello world", ns.Get("exported").AsString());
|
|
}
|
|
}
|
|
@@ -191,7 +191,7 @@ public class ModuleTests
|
|
public void ShouldAddModuleFromClrFunction()
|
|
public void ShouldAddModuleFromClrFunction()
|
|
{
|
|
{
|
|
var received = new List<string>();
|
|
var received = new List<string>();
|
|
- _engine.AddModule("imported-module", builder => builder
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder
|
|
.ExportFunction("act_noargs", () => received.Add("act_noargs"))
|
|
.ExportFunction("act_noargs", () => received.Add("act_noargs"))
|
|
.ExportFunction("act_args", args => received.Add($"act_args:{args[0].AsString()}"))
|
|
.ExportFunction("act_args", args => received.Add($"act_args:{args[0].AsString()}"))
|
|
.ExportFunction("fn_noargs", () =>
|
|
.ExportFunction("fn_noargs", () =>
|
|
@@ -205,10 +205,10 @@ public class ModuleTests
|
|
return "ret";
|
|
return "ret";
|
|
})
|
|
})
|
|
);
|
|
);
|
|
- _engine.AddModule("my-module", @"
|
|
|
|
|
|
+ _engine.Modules.Add("my-module", @"
|
|
import * as fns from 'imported-module';
|
|
import * as fns from 'imported-module';
|
|
export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fns.fn_args('ok')];");
|
|
export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fns.fn_args('ok')];");
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(new[]
|
|
Assert.Equal(new[]
|
|
{
|
|
{
|
|
@@ -234,11 +234,11 @@ export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fn
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAllowExportMultipleImports()
|
|
public void ShouldAllowExportMultipleImports()
|
|
{
|
|
{
|
|
- _engine.AddModule("@mine/import1", builder => builder.ExportValue("value1", JsNumber.Create(1)));
|
|
|
|
- _engine.AddModule("@mine/import2", builder => builder.ExportValue("value2", JsNumber.Create(2)));
|
|
|
|
- _engine.AddModule("@mine", "export * from '@mine/import1'; export * from '@mine/import2'");
|
|
|
|
- _engine.AddModule("app", "import { value1, value2 } from '@mine'; export const result = `${value1} ${value2}`");
|
|
|
|
- var ns = _engine.ImportModule("app");
|
|
|
|
|
|
+ _engine.Modules.Add("@mine/import1", builder => builder.ExportValue("value1", JsNumber.Create(1)));
|
|
|
|
+ _engine.Modules.Add("@mine/import2", builder => builder.ExportValue("value2", JsNumber.Create(2)));
|
|
|
|
+ _engine.Modules.Add("@mine", "export * from '@mine/import1'; export * from '@mine/import2'");
|
|
|
|
+ _engine.Modules.Add("app", "import { value1, value2 } from '@mine'; export const result = `${value1} ${value2}`");
|
|
|
|
+ var ns = _engine.Modules.Import("app");
|
|
|
|
|
|
Assert.Equal("1 2", ns.Get("result").AsString());
|
|
Assert.Equal("1 2", ns.Get("result").AsString());
|
|
}
|
|
}
|
|
@@ -246,9 +246,9 @@ export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fn
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAllowNamedStarExport()
|
|
public void ShouldAllowNamedStarExport()
|
|
{
|
|
{
|
|
- _engine.AddModule("imported-module", builder => builder.ExportValue("value1", 5));
|
|
|
|
- _engine.AddModule("my-module", "export * as ns from 'imported-module';");
|
|
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder.ExportValue("value1", 5));
|
|
|
|
+ _engine.Modules.Add("my-module", "export * as ns from 'imported-module';");
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(5, ns.Get("ns").Get("value1").AsNumber());
|
|
Assert.Equal(5, ns.Get("ns").Get("value1").AsNumber());
|
|
}
|
|
}
|
|
@@ -256,13 +256,13 @@ export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fn
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAllowChaining()
|
|
public void ShouldAllowChaining()
|
|
{
|
|
{
|
|
- _engine.AddModule("dependent-module", "export const dependency = 1;");
|
|
|
|
- _engine.AddModule("my-module", builder => builder
|
|
|
|
|
|
+ _engine.Modules.Add("dependent-module", "export const dependency = 1;");
|
|
|
|
+ _engine.Modules.Add("my-module", builder => builder
|
|
.AddSource("import { dependency } from 'dependent-module';")
|
|
.AddSource("import { dependency } from 'dependent-module';")
|
|
.AddSource("export const output = dependency + 1;")
|
|
.AddSource("export const output = dependency + 1;")
|
|
.ExportValue("num", JsNumber.Create(-1))
|
|
.ExportValue("num", JsNumber.Create(-1))
|
|
);
|
|
);
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(2, ns.Get("output").AsInteger());
|
|
Assert.Equal(2, ns.Get("output").AsInteger());
|
|
Assert.Equal(-1, ns.Get("num").AsInteger());
|
|
Assert.Equal(-1, ns.Get("num").AsInteger());
|
|
@@ -272,10 +272,10 @@ export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fn
|
|
public void ShouldImportOnlyOnce()
|
|
public void ShouldImportOnlyOnce()
|
|
{
|
|
{
|
|
var called = 0;
|
|
var called = 0;
|
|
- _engine.AddModule("imported-module", builder => builder.ExportFunction("count", args => called++));
|
|
|
|
- _engine.AddModule("my-module", "import { count } from 'imported-module'; count();");
|
|
|
|
- _engine.ImportModule("my-module");
|
|
|
|
- _engine.ImportModule("my-module");
|
|
|
|
|
|
+ _engine.Modules.Add("imported-module", builder => builder.ExportFunction("count", args => called++));
|
|
|
|
+ _engine.Modules.Add("my-module", "import { count } from 'imported-module'; count();");
|
|
|
|
+ _engine.Modules.Import("my-module");
|
|
|
|
+ _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(1, called);
|
|
Assert.Equal(1, called);
|
|
}
|
|
}
|
|
@@ -283,14 +283,14 @@ export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fn
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldAllowSelfImport()
|
|
public void ShouldAllowSelfImport()
|
|
{
|
|
{
|
|
- _engine.AddModule("my-globals", "export const globals = { counter: 0 };");
|
|
|
|
- _engine.AddModule("my-module", @"
|
|
|
|
|
|
+ _engine.Modules.Add("my-globals", "export const globals = { counter: 0 };");
|
|
|
|
+ _engine.Modules.Add("my-module", @"
|
|
import { globals } from 'my-globals';
|
|
import { globals } from 'my-globals';
|
|
import {} from 'my-module';
|
|
import {} from 'my-module';
|
|
globals.counter++;
|
|
globals.counter++;
|
|
export const count = globals.counter;
|
|
export const count = globals.counter;
|
|
");
|
|
");
|
|
- var ns = _engine.ImportModule("my-module");
|
|
|
|
|
|
+ var ns = _engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal(1, ns.Get("count").AsInteger());
|
|
Assert.Equal(1, ns.Get("count").AsInteger());
|
|
}
|
|
}
|
|
@@ -300,11 +300,11 @@ export const count = globals.counter;
|
|
{
|
|
{
|
|
// https://tc39.es/ecma262/#sec-example-cyclic-module-record-graphs
|
|
// https://tc39.es/ecma262/#sec-example-cyclic-module-record-graphs
|
|
|
|
|
|
- _engine.AddModule("B", "import { a } from 'A'; export const b = 'b';");
|
|
|
|
- _engine.AddModule("A", "import { b } from 'B'; export const a = 'a';");
|
|
|
|
|
|
+ _engine.Modules.Add("B", "import { a } from 'A'; export const b = 'b';");
|
|
|
|
+ _engine.Modules.Add("A", "import { b } from 'B'; export const a = 'a';");
|
|
|
|
|
|
- var nsA = _engine.ImportModule("A");
|
|
|
|
- var nsB = _engine.ImportModule("B");
|
|
|
|
|
|
+ var nsA = _engine.Modules.Import("A");
|
|
|
|
+ var nsB = _engine.Modules.Import("B");
|
|
|
|
|
|
Assert.Equal("a", nsA.Get("a").AsString());
|
|
Assert.Equal("a", nsA.Get("a").AsString());
|
|
Assert.Equal("b", nsB.Get("b").AsString());
|
|
Assert.Equal("b", nsB.Get("b").AsString());
|
|
@@ -315,17 +315,17 @@ export const count = globals.counter;
|
|
{
|
|
{
|
|
var engine = new Engine(opts => opts.TimeoutInterval(TimeSpan.FromTicks(1)));
|
|
var engine = new Engine(opts => opts.TimeoutInterval(TimeSpan.FromTicks(1)));
|
|
|
|
|
|
- engine.AddModule("sleep", builder => builder.ExportFunction("sleep", () => Thread.Sleep(100)));
|
|
|
|
- engine.AddModule("my-module", "import { sleep } from 'sleep'; for(var i = 0; i < 100; i++) { sleep(); } export const result = 'ok';");
|
|
|
|
- Assert.Throws<TimeoutException>(() => engine.ImportModule("my-module"));
|
|
|
|
|
|
+ engine.Modules.Add("sleep", builder => builder.ExportFunction("sleep", () => Thread.Sleep(100)));
|
|
|
|
+ engine.Modules.Add("my-module", "import { sleep } from 'sleep'; for(var i = 0; i < 100; i++) { sleep(); } export const result = 'ok';");
|
|
|
|
+ Assert.Throws<TimeoutException>(() => engine.Modules.Import("my-module"));
|
|
}
|
|
}
|
|
|
|
|
|
[Fact]
|
|
[Fact]
|
|
public void CanLoadModuleImportsFromFiles()
|
|
public void CanLoadModuleImportsFromFiles()
|
|
{
|
|
{
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
- engine.AddModule("my-module", "import { User } from './modules/user.js'; export const user = new User('John', 'Doe');");
|
|
|
|
- var ns = engine.ImportModule("my-module");
|
|
|
|
|
|
+ engine.Modules.Add("my-module", "import { User } from './modules/user.js'; export const user = new User('John', 'Doe');");
|
|
|
|
+ var ns = engine.Modules.Import("my-module");
|
|
|
|
|
|
Assert.Equal("John Doe", ns["user"].Get("name").AsString());
|
|
Assert.Equal("John Doe", ns["user"].Get("name").AsString());
|
|
}
|
|
}
|
|
@@ -334,7 +334,7 @@ export const count = globals.counter;
|
|
public void CanImportFromFile()
|
|
public void CanImportFromFile()
|
|
{
|
|
{
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
- var ns = engine.ImportModule("./modules/format-name.js");
|
|
|
|
|
|
+ var ns = engine.Modules.Import("./modules/format-name.js");
|
|
var result = engine.Invoke(ns.Get("formatName"), "John", "Doe").AsString();
|
|
var result = engine.Invoke(ns.Get("formatName"), "John", "Doe").AsString();
|
|
|
|
|
|
Assert.Equal("John Doe", result);
|
|
Assert.Equal("John Doe", result);
|
|
@@ -344,7 +344,7 @@ export const count = globals.counter;
|
|
public void CanImportFromFileWithSpacesInPath()
|
|
public void CanImportFromFileWithSpacesInPath()
|
|
{
|
|
{
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
var engine = new Engine(options => options.EnableModules(GetBasePath()));
|
|
- var ns = engine.ImportModule("./dir with spaces/format name.js");
|
|
|
|
|
|
+ var ns = engine.Modules.Import("./dir with spaces/format name.js");
|
|
var result = engine.Invoke(ns.Get("formatName"), "John", "Doe").AsString();
|
|
var result = engine.Invoke(ns.Get("formatName"), "John", "Doe").AsString();
|
|
|
|
|
|
Assert.Equal("John Doe", result);
|
|
Assert.Equal("John Doe", result);
|
|
@@ -358,8 +358,8 @@ export const count = globals.counter;
|
|
for (var i = 0; i < 5; i++)
|
|
for (var i = 0; i < 5; i++)
|
|
{
|
|
{
|
|
var engine = new Engine();
|
|
var engine = new Engine();
|
|
- engine.AddModule("__main__", x => x.AddModule(module));
|
|
|
|
- var ns = engine.ImportModule("__main__");
|
|
|
|
|
|
+ engine.Modules.Add("__main__", x => x.AddModule(module));
|
|
|
|
+ var ns = engine.Modules.Import("__main__");
|
|
var result = engine.Invoke(ns.Get("formatName"), "John" + i, "Doe").AsString();
|
|
var result = engine.Invoke(ns.Get("formatName"), "John" + i, "Doe").AsString();
|
|
Assert.Equal($"John{i} Doe", result);
|
|
Assert.Equal($"John{i} Doe", result);
|
|
}
|
|
}
|