binary.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. /* global assert,testRunner */ // eslint rule
  6. WScript.LoadScriptFile("../UnitTestFramework/UnitTestFramework.js");
  7. WScript.LoadScriptFile("../WasmSpec/testsuite/harness/wasm-constants.js");
  8. WScript.LoadScriptFile("../WasmSpec/testsuite/harness/wasm-module-builder.js");
  9. WScript.Flag("-off:wasmdeferred");
  10. function makeReservedTest(name, body, msg) {
  11. return {
  12. name,
  13. body() {
  14. const builder = new WasmModuleBuilder();
  15. builder.addFunction(null, kSig_v_i).addBody(body);
  16. try {
  17. new WebAssembly.Module(builder.toBuffer());
  18. assert.fail("Expected an exception");
  19. } catch (e) {
  20. if (!(e instanceof WebAssembly.CompileError) || RegExp(msg, "i").test(e.message)) {
  21. return;
  22. }
  23. assert.fail(`Expected error message: ${msg}. Got ${e.message}`);
  24. }
  25. }
  26. }
  27. }
  28. const tests = [
  29. makeReservedTest("memory.size reserved", [kExprMemorySize, 1], "memory.size reserved value must be 0"),
  30. makeReservedTest("memory.grow reserved", [kExprMemoryGrow, 1], "memory.grow reserved value must be 0"),
  31. makeReservedTest("call_indirect reserved", [kExprCallIndirect, 1], "call_indirect reserved value must be 0"),
  32. ];
  33. WScript.LoadScriptFile("../UnitTestFramework/yargs.js");
  34. const argv = yargsParse(WScript.Arguments, {
  35. boolean: ["verbose"],
  36. number: ["start", "end"],
  37. default: {
  38. verbose: true,
  39. start: 0,
  40. end: tests.length
  41. }
  42. }).argv;
  43. const todoTests = tests
  44. .slice(argv.start, argv.end);
  45. testRunner.run(todoTests, {verbose: argv.verbose});