• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// META: global=window,dedicatedworker,jsshell
2
3test(() => {
4  const thisValues = [
5    undefined,
6    null,
7    true,
8    "",
9    Symbol(),
10    1,
11    {},
12    WebAssembly.Memory,
13    WebAssembly.Memory.prototype,
14  ];
15
16  const desc = Object.getOwnPropertyDescriptor(WebAssembly.Memory.prototype, "buffer");
17  assert_equals(typeof desc, "object");
18
19  const getter = desc.get;
20  assert_equals(typeof getter, "function");
21
22  assert_equals(typeof desc.set, "undefined");
23
24  for (const thisValue of thisValues) {
25    assert_throws_js(TypeError, () => getter.call(thisValue), `this=${format_value(thisValue)}`);
26  }
27}, "Branding");
28
29test(() => {
30  const argument = { "initial": 0 };
31  const memory = new WebAssembly.Memory(argument);
32  const buffer = memory.buffer;
33
34  const desc = Object.getOwnPropertyDescriptor(WebAssembly.Memory.prototype, "buffer");
35  assert_equals(typeof desc, "object");
36
37  const getter = desc.get;
38  assert_equals(typeof getter, "function");
39
40  assert_equals(getter.call(memory, {}), buffer);
41}, "Stray argument");
42
43test(() => {
44  const argument = { "initial": 0 };
45  const memory = new WebAssembly.Memory(argument);
46  const memory2 = new WebAssembly.Memory(argument);
47  const buffer = memory.buffer;
48  assert_not_equals(buffer, memory2.buffer, "Need two distinct buffers");
49  memory.buffer = memory2.buffer;
50  assert_equals(memory.buffer, buffer, "Should not change the buffer");
51}, "Setting (sloppy mode)");
52
53test(() => {
54  const argument = { "initial": 0 };
55  const memory = new WebAssembly.Memory(argument);
56  const memory2 = new WebAssembly.Memory(argument);
57  const buffer = memory.buffer;
58  assert_not_equals(buffer, memory2.buffer, "Need two distinct buffers");
59  assert_throws_js(TypeError, () => {
60    "use strict";
61    memory.buffer = memory2.buffer;
62  });
63  assert_equals(memory.buffer, buffer, "Should not change the buffer");
64}, "Setting (strict mode)");
65