File: assertions.js

package info (click to toggle)
firefox 143.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,617,328 kB
  • sloc: cpp: 7,478,492; javascript: 6,417,157; ansic: 3,720,058; python: 1,396,372; xml: 627,523; asm: 438,677; java: 186,156; sh: 63,477; makefile: 19,171; objc: 13,059; perl: 12,983; yacc: 4,583; cs: 3,846; pascal: 3,405; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (40 lines) | stat: -rw-r--r-- 1,831 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function assert_ArrayBuffer(actual, { size=0, shared=false, detached=false }, message) {
  // https://github.com/WebAssembly/spec/issues/840
  // See https://github.com/whatwg/html/issues/5380 for why not `self.SharedArrayBuffer`
  const isShared = !("isView" in actual.constructor);
  assert_equals(isShared, shared, `${message}: constructor`);
  const sharedString = shared ? "Shared" : "";
  assert_equals(actual.toString(), `[object ${sharedString}ArrayBuffer]`, `${message}: toString()`);
  assert_equals(Object.getPrototypeOf(actual).toString(), `[object ${sharedString}ArrayBuffer]`, `${message}: prototype toString()`);
  if (detached) {
    // https://github.com/tc39/ecma262/issues/678
    let byteLength;
    try {
      byteLength = actual.byteLength;
    } catch (e) {
      byteLength = 0;
    }
    assert_equals(byteLength, 0, `${message}: detached size`);
  } else {
    assert_equals(actual.byteLength, 0x10000 * size, `${message}: size`);
    if (size > 0) {
      const array = new Uint8Array(actual);
      assert_equals(array[0], 0, `${message}: first element`);
      assert_equals(array[array.byteLength - 1], 0, `${message}: last element`);
    }
  }
  assert_equals(Object.isFrozen(actual), shared, "buffer frozen");
  assert_equals(Object.isExtensible(actual), !shared, "buffer extensibility");
}
globalThis.assert_ArrayBuffer = assert_ArrayBuffer;

function assert_Memory(memory, { size=0, shared=false }) {
  assert_equals(Object.getPrototypeOf(memory), WebAssembly.Memory.prototype,
                "prototype");
  assert_true(Object.isExtensible(memory), "extensible");

  // https://github.com/WebAssembly/spec/issues/840
  assert_equals(memory.buffer, memory.buffer, "buffer should be idempotent");
  assert_ArrayBuffer(memory.buffer, { size, shared });
}
globalThis.assert_Memory = assert_Memory;