WebAssembly JS API: implement more sections
[WebKit-https.git] / JSTests / wasm / self-test / test_WASM.js
1 import * as assert from '../assert.js';
2 import * as WASM from '../WASM.js';
3
4 assert.isNotUndef(WASM.description);
5 assert.isNotUndef(WASM.valueType);
6 assert.ge(WASM.valueType.length, 4);
7
8 for (const v of WASM.valueType)
9     if (!WASM.isValidValueType(v))
10         throw new Error(`Expected value ${v} to be a valid value type`);
11
12 const expectedFields = [
13     "preamble",
14     "value_type",
15     "inline_signature_type",
16     "external_kind",
17     "section",
18     "opcode",
19 ];
20 for (const e of expectedFields) {
21     assert.isNotUndef(WASM.description[e]);
22     if (typeof(WASM.description[e]) !== "object")
23         throw new Error(`Expected description to contain field "${e}"`);
24 }
25
26 const expectedOpFields = [
27     "category",
28     "value",
29     "return",
30     "parameter",
31     "immediate",
32 ];
33 for (const op in WASM.description.opcode)
34     for (const e of expectedOpFields)
35         assert.isNotUndef(WASM.description.opcode[op][e]);
36
37 // FIXME: test for field "b3op" when all arithmetic/ comparison ops have them. https://bugs.webkit.org/show_bug.cgi?id=146064
38
39 assert.isNotUndef(WASM.sections);
40 assert.isNotUndef(WASM.sectionEncodingType);
41 for (const section of WASM.sections)
42     assert.eq(WASM.sectionEncodingType, WASM.description.section[section].type);