| import * as assert from "../assert.js"; |
| |
| const fail = val => { throw new Error(`Expected promise to fail, instead got ${val}`); }; |
| const catcher = (errType, errMessage) => err => { |
| assert.eq(errType, err); |
| assert.eq(errMessage, err.message); |
| }; |
| |
| let neuteredArray = new Uint8Array(1); |
| transferArrayBuffer(neuteredArray.buffer); |
| |
| const testAsyncFunction = func => { |
| func(neuteredArray).then(fail).catch(catcher(TypeError, "underlying TypedArray has been detatched from the ArrayBuffer")); |
| func(neuteredArray.buffer).then(fail).catch(catcher(TypeError, "underlying TypedArray has been detatched from the ArrayBuffer")); |
| }; |
| |
| const testFunction = func => { |
| assert.throws(() => func(neuteredArray), TypeError, "underlying TypedArray has been detatched from the ArrayBuffer"); |
| assert.throws(() => func(neuteredArray.buffer), TypeError, "underlying TypedArray has been detatched from the ArrayBuffer"); |
| }; |
| |
| const testConstructor = func => { |
| assert.throws(() => new func(neuteredArray), TypeError, "underlying TypedArray has been detatched from the ArrayBuffer"); |
| assert.throws(() => new func(neuteredArray.buffer), TypeError, "underlying TypedArray has been detatched from the ArrayBuffer"); |
| }; |
| |
| testConstructor(WebAssembly.Module); |
| testAsyncFunction(WebAssembly.compile); |
| testFunction(WebAssembly.validate); |
| testAsyncFunction(WebAssembly.instantiate); |