compile.any.js (2344B)
1 // META: global=window,dedicatedworker,jsshell,shadowrealm 2 // META: script=/wasm/jsapi/wasm-module-builder.js 3 4 function assert_Module(module) { 5 assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype, 6 "Prototype"); 7 assert_true(Object.isExtensible(module), "Extensibility"); 8 } 9 10 let emptyModuleBinary; 11 setup(() => { 12 emptyModuleBinary = new WasmModuleBuilder().toBuffer(); 13 }); 14 15 promise_test(t => { 16 return promise_rejects_js(t, TypeError, WebAssembly.compile()); 17 }, "Missing argument"); 18 19 promise_test(t => { 20 const invalidArguments = [ 21 undefined, 22 null, 23 true, 24 "", 25 Symbol(), 26 1, 27 {}, 28 ArrayBuffer, 29 ArrayBuffer.prototype, 30 Array.from(emptyModuleBinary), 31 ]; 32 return Promise.all(invalidArguments.map(argument => { 33 return promise_rejects_js(t, TypeError, WebAssembly.compile(argument), 34 `compile(${format_value(argument)})`); 35 })); 36 }, "Invalid arguments"); 37 38 promise_test(() => { 39 const fn = WebAssembly.compile; 40 const thisValues = [ 41 undefined, 42 null, 43 true, 44 "", 45 Symbol(), 46 1, 47 {}, 48 WebAssembly, 49 ]; 50 return Promise.all(thisValues.map(thisValue => { 51 return fn.call(thisValue, emptyModuleBinary).then(assert_Module); 52 })); 53 }, "Branding"); 54 55 test(() => { 56 const promise = WebAssembly.compile(emptyModuleBinary); 57 assert_equals(Object.getPrototypeOf(promise), Promise.prototype, "prototype"); 58 assert_true(Object.isExtensible(promise), "extensibility"); 59 }, "Promise type"); 60 61 promise_test(t => { 62 const buffer = new Uint8Array(); 63 return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(buffer)); 64 }, "Empty buffer"); 65 66 promise_test(t => { 67 const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0])); 68 return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(buffer)); 69 }, "Invalid code"); 70 71 promise_test(() => { 72 return WebAssembly.compile(emptyModuleBinary).then(assert_Module); 73 }, "Result type"); 74 75 promise_test(() => { 76 return WebAssembly.compile(emptyModuleBinary, {}).then(assert_Module); 77 }, "Stray argument"); 78 79 promise_test(() => { 80 const buffer = new WasmModuleBuilder().toBuffer(); 81 assert_equals(buffer[0], 0); 82 const promise = WebAssembly.compile(buffer); 83 buffer[0] = 1; 84 return promise.then(assert_Module); 85 }, "Changing the buffer");