MCPcopy Create free account
hub / github.com/buke/quickjs-go / TestModuleBuilder_Basic

Function TestModuleBuilder_Basic

module_test.go:15–71  ·  view source on GitHub ↗

============================================================================= BASIC MODULE FUNCTIONALITY TESTS =============================================================================

(t *testing.T)

Source from the content-addressed store, hash-verified

13// =============================================================================
14
15func TestModuleBuilder_Basic(t *testing.T) {
16 useStableOwnerHooksForLegacySubtests(t)
17
18 rt := NewRuntime()
19 defer rt.Close()
20 ctx := rt.NewContext()
21 defer ctx.Close()
22
23 t.Run("ModuleWithExports", func(t *testing.T) {
24 addFunc := ctx.NewFunction(func(ctx *Context, this *Value, args []*Value) *Value {
25 if len(args) >= 2 {
26 return ctx.NewFloat64(args[0].ToFloat64() + args[1].ToFloat64())
27 }
28 return ctx.NewFloat64(0)
29 })
30
31 module := NewModuleBuilder("math").
32 Export("PI", ctx.NewFloat64(3.14159)).
33 Export("add", addFunc).
34 Export("version", ctx.NewString("1.0.0")).
35 Export("default", ctx.NewString("Math Module"))
36
37 err := module.Build(ctx)
38 require.NoError(t, err)
39
40 result := ctx.Eval(`
41 (async function() {
42 const { PI, add, version } = await import('math');
43 return add(PI, 1.0);
44 })()
45 `, EvalAwait(true))
46 defer result.Free()
47
48 require.False(t, result.IsException())
49 require.InDelta(t, 4.14159, result.ToFloat64(), 0.0001)
50 })
51
52 t.Run("DefaultExport", func(t *testing.T) {
53 module := NewModuleBuilder("default-test").
54 Export("default", ctx.NewString("Default Export Value")).
55 Export("name", ctx.NewString("test"))
56
57 err := module.Build(ctx)
58 require.NoError(t, err)
59
60 result := ctx.Eval(`
61 (async function() {
62 const defaultValue = await import('default-test');
63 return defaultValue.default;
64 })()
65 `, EvalAwait(true))
66 defer result.Free()
67
68 require.False(t, result.IsException())
69 require.Equal(t, "Default Export Value", result.ToString())
70 })
71}
72

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
NewFunctionMethod · 0.95
NewFloat64Method · 0.95
NewStringMethod · 0.95
EvalMethod · 0.95
NewRuntimeFunction · 0.85
NewModuleBuilderFunction · 0.85
EvalAwaitFunction · 0.85
ToFloat64Method · 0.80

Tested by

no test coverage detected