1// META: global=window,dedicatedworker,jsshell
2// META: script=/wasm/jsapi/assertions.js
3// META: script=/wasm/jsapi/memory/assertions.js
4
5test(() => {
6  assert_throws_js(TypeError, () => new WebAssembly.Memory({ "initial": 10, "shared": true }));
7}, "Shared memory without maximum");
8
9test(t => {
10  const order = [];
11
12  new WebAssembly.Memory({
13    get maximum() {
14      order.push("maximum");
15      return {
16        valueOf() {
17          order.push("maximum valueOf");
18          return 1;
19        },
20      };
21    },
22
23    get initial() {
24      order.push("initial");
25      return {
26        valueOf() {
27          order.push("initial valueOf");
28          return 1;
29        },
30      };
31    },
32
33    get shared() {
34      order.push("shared");
35      return {
36        valueOf: t.unreached_func("should not call shared valueOf"),
37      };
38    },
39  });
40
41  assert_array_equals(order, [
42    "initial",
43    "initial valueOf",
44    "maximum",
45    "maximum valueOf",
46    "shared",
47  ]);
48}, "Order of evaluation for descriptor (with shared)");
49
50test(() => {
51  const argument = { "initial": 4, "maximum": 10, shared: true };
52  const memory = new WebAssembly.Memory(argument);
53  assert_Memory(memory, { "size": 4, "shared": true });
54}, "Shared memory");
55