import * as assert from '../assert.js';
import Builder from '../Builder.js';

const builder = new Builder();

builder.Type().End()
    .Import()
        .Global().I32("imp", "global", "immutable").End()
    .End()
    .Function().End()
    .Global().GetGlobal("i32", 0, "mutable").End()
    .Export().Function("getGlobal").End()
    .Code()

    .Function("getGlobal", { params: [], ret: "i32" })
        .GetGlobal(1)
    .End()

    .End()

const bin = builder.WebAssembly();
bin.trim();

const module = new WebAssembly.Module(bin.get());
const instance = new WebAssembly.Instance(module, { imp: { global: 5 } });
assert.eq(instance.exports.getGlobal(), 5);
