// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax

load("test/mjsunit/wasm/wasm-module-builder.js");

const kReturnValue = 15;

function getBuilder() {
  var builder = new WasmModuleBuilder();

  builder.addFunction("main", kSig_i_i)
    .addBody([kExprI32Const, kReturnValue])
    .exportFunc();
  return builder;
}

(function BasicTest() {
  var builder = getBuilder();
  var main = builder.instantiate().exports.main;
  assertEquals(kReturnValue, main());
})();

(function AsyncTest() {
  var builder = getBuilder();
  var buffer = builder.toBuffer();
  assertPromiseResult(
    WebAssembly.instantiate(buffer)
      .then(pair => pair.instance.exports.main(), assertUnreachable)
      .then(result => assertEquals(kReturnValue, result), assertUnreachable));
})();