tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

constructor.any.js (1912B)


      1 // META: global=window,dedicatedworker,jsshell,shadowrealm
      2 // META: script=/wasm/jsapi/wasm-module-builder.js
      3 // META: script=/wasm/jsapi/assertions.js
      4 
      5 let emptyModuleBinary;
      6 setup(() => {
      7  emptyModuleBinary = new WasmModuleBuilder().toBuffer();
      8 });
      9 
     10 test(() => {
     11  assert_function_name(WebAssembly.Module, "Module", "WebAssembly.Module");
     12 }, "name");
     13 
     14 test(() => {
     15  assert_function_length(WebAssembly.Module, 1, "WebAssembly.Module");
     16 }, "length");
     17 
     18 test(() => {
     19  assert_throws_js(TypeError, () => new WebAssembly.Module());
     20 }, "No arguments");
     21 
     22 test(() => {
     23  assert_throws_js(TypeError, () => WebAssembly.Module(emptyModuleBinary));
     24 }, "Calling");
     25 
     26 test(() => {
     27  const invalidArguments = [
     28    undefined,
     29    null,
     30    true,
     31    "test",
     32    Symbol(),
     33    7,
     34    NaN,
     35    {},
     36    ArrayBuffer,
     37    ArrayBuffer.prototype,
     38    Array.from(emptyModuleBinary),
     39  ];
     40  for (const argument of invalidArguments) {
     41    assert_throws_js(TypeError, () => new WebAssembly.Module(argument),
     42                     `new Module(${format_value(argument)})`);
     43  }
     44 }, "Invalid arguments");
     45 
     46 test(() => {
     47  const buffer = new Uint8Array();
     48  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(buffer));
     49 }, "Empty buffer");
     50 
     51 test(() => {
     52  const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
     53  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(buffer));
     54 }, "Invalid code");
     55 
     56 test(() => {
     57  const module = new WebAssembly.Module(emptyModuleBinary);
     58  assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype);
     59 }, "Prototype");
     60 
     61 test(() => {
     62  const module = new WebAssembly.Module(emptyModuleBinary);
     63  assert_true(Object.isExtensible(module));
     64 }, "Extensibility");
     65 
     66 test(() => {
     67  const module = new WebAssembly.Module(emptyModuleBinary, {});
     68  assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype);
     69 }, "Stray argument");