mirror of
https://github.com/tc39/test262.git
synced 2025-05-04 06:50:32 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
import Builder from '../Builder.js';
|
|
import * as assert from '../assert.js';
|
|
|
|
assert.throws(() => WebAssembly.Module.customSections(undefined, ""), TypeError, `WebAssembly.Module.customSections called with non WebAssembly.Module argument`);
|
|
assert.eq(WebAssembly.Module.customSections.length, 2);
|
|
|
|
{
|
|
const empty = new WebAssembly.Module((new Builder()).WebAssembly().get());
|
|
assert.isArray(WebAssembly.Module.customSections(empty, ""));
|
|
assert.eq(WebAssembly.Module.customSections(empty, "").length, 0);
|
|
}
|
|
|
|
{
|
|
const single = new WebAssembly.Module((new Builder())
|
|
.Unknown("hello").Byte(0x00).Byte(0x42).Byte(0xFF).End()
|
|
.WebAssembly().get());
|
|
assert.eq(WebAssembly.Module.customSections(single, "").length, 0);
|
|
const hello = WebAssembly.Module.customSections(single, "hello");
|
|
assert.eq(hello.length, 1);
|
|
assert.eq(hello[0].byteLength, 3);
|
|
const helloI8 = new Int8Array(hello[0]);
|
|
assert.eq(helloI8[0], 0x00);
|
|
assert.eq(helloI8[1], 0x42);
|
|
assert.eq(helloI8[2], -1);
|
|
}
|
|
|
|
{
|
|
const unicode = new WebAssembly.Module((new Builder())
|
|
.Unknown("👨❤️💋👨").Byte(42).End()
|
|
.WebAssembly().get());
|
|
const family = WebAssembly.Module.customSections(unicode, "👨❤️💋👨");
|
|
assert.eq(family.length, 1);
|
|
assert.eq(family[0].byteLength, 1);
|
|
const familyI8 = new Int8Array(family[0]);
|
|
assert.eq(familyI8[0], 42);
|
|
}
|
|
|
|
{
|
|
const many = new WebAssembly.Module((new Builder())
|
|
.Unknown("zero").Byte(0).End()
|
|
.Unknown("one").Byte(1).Byte(1).End()
|
|
.Unknown("one").Byte(2).Byte(2).Byte(2).End()
|
|
.Unknown("two").Byte(3).Byte(3).Byte(3).Byte(3).End()
|
|
.Unknown("one").Byte(4).Byte(4).Byte(4).Byte(4).Byte(4).End()
|
|
.WebAssembly().get());
|
|
|
|
const zero = WebAssembly.Module.customSections(many, "zero");
|
|
assert.eq(zero.length, 1);
|
|
assert.eq(zero[0].byteLength, 1);
|
|
const zeroI8 = new Int8Array(zero[0]);
|
|
assert.eq(zeroI8[0], 0);
|
|
|
|
const two = WebAssembly.Module.customSections(many, "two");
|
|
assert.eq(two.length, 1);
|
|
assert.eq(two[0].byteLength, 4);
|
|
const twoI8 = new Int8Array(two[0]);
|
|
assert.eq(twoI8[0], 3);
|
|
assert.eq(twoI8[1], 3);
|
|
assert.eq(twoI8[2], 3);
|
|
assert.eq(twoI8[3], 3);
|
|
|
|
const one = WebAssembly.Module.customSections(many, "one");
|
|
assert.eq(one.length, 3);
|
|
let seen = 0;
|
|
const expect = [
|
|
[1, 1],
|
|
[2, 2, 2],
|
|
[4, 4, 4, 4, 4],
|
|
];
|
|
for (const section of one) {
|
|
assert.eq(section.byteLength, expect[seen].length);
|
|
const I8 = new Int8Array(section);
|
|
for (let i = 0; i < expect[seen].length; ++i)
|
|
assert.eq(I8[i], expect[seen][i]);
|
|
++seen;
|
|
}
|
|
}
|