import * as assert from '../assert.js'; import * as WASM from '../WASM.js'; assert.isNotUndef(WASM.description); assert.isNotUndef(WASM.type); assert.ge(WASM.type.length, 7); for (const v of WASM.type) if (!WASM.isValidType(v)) throw new Error(`Expected value ${v} to be a valid type`); const expectedFields = [ "preamble", "type", "external_kind", "section", "opcode", ]; for (const e of expectedFields) { assert.isNotUndef(WASM.description[e]); if (typeof(WASM.description[e]) !== "object") throw new Error(`Expected description to contain field "${e}"`); } const expectedOpFields = [ "category", "value", "return", "parameter", "immediate", ]; for (const op in WASM.description.opcode) for (const e of expectedOpFields) assert.isNotUndef(WASM.description.opcode[op][e]); // FIXME: test for field "b3op" when all arithmetic/ comparison ops have them. https://bugs.webkit.org/show_bug.cgi?id=146064 assert.isNotUndef(WASM.sections); assert.isNotUndef(WASM.sectionEncodingType); for (const section of WASM.sections) assert.eq(WASM.sectionEncodingType, WASM.description.section[section].type);