to-fixed-length-buffer.any.js (1268B)
1 // META: global=window,dedicatedworker,jsshell 2 // META: script=/wasm/jsapi/wasm-module-builder.js 3 4 test(() => { 5 const thisValues = [ 6 undefined, 7 null, 8 true, 9 "", 10 Symbol(), 11 1, 12 {}, 13 WebAssembly.Memory, 14 WebAssembly.Memory.prototype, 15 ]; 16 17 const desc = Object.getOwnPropertyDescriptor(WebAssembly.Memory.prototype, "toFixedLengthBuffer"); 18 assert_equals(typeof desc, "object"); 19 20 const fun = desc.value; 21 assert_equals(typeof desc.value, "function"); 22 23 for (const thisValue of thisValues) { 24 assert_throws_js(TypeError, () => fun.call(thisValue), `this=${format_value(thisValue)}`); 25 } 26 }, "API surface"); 27 28 test(() => { 29 const memory = new WebAssembly.Memory({ initial: 0, maximum: 1 }); 30 const buffer1 = memory.buffer; 31 32 assert_false(buffer1.resizable, "By default the AB is initially not resizable"); 33 34 const buffer2 = memory.toFixedLengthBuffer(); 35 assert_equals(buffer1, buffer2, "Not changing resizability does not make a new object"); 36 37 const buffer3 = memory.toResizableBuffer(); 38 assert_not_equals(buffer2, buffer3, "Changing resizability makes a new object"); 39 assert_true(buffer3.resizable); 40 assert_true(buffer2.detached); 41 assert_equals(memory.buffer, buffer3); 42 }, "toFixedLengthBuffer caching behavior");