Chromium Code Reviews| Index: test/mjsunit/wasm/js-api.js |
| diff --git a/test/mjsunit/wasm/js-api.js b/test/mjsunit/wasm/js-api.js |
| index 9279234761767f576de59fb0fa21c09acdbb7c23..ca711a0611213ef6146db8f0e43e60dad99bca25 100644 |
| --- a/test/mjsunit/wasm/js-api.js |
| +++ b/test/mjsunit/wasm/js-api.js |
| @@ -14,6 +14,14 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); |
| function assertEq(val, expected) { |
| assertEquals(expected, val); |
| } |
| +function assertArrayBuffer(val, expected) { |
| + assertTrue(val instanceof ArrayBuffer); |
| + assertEq(expected.length, val.byteLength); |
| + var input = new Int8Array(val); |
| + for (var i = 0; i < expected.length; i++) { |
| + assertEq(expected[i], input[i]); |
| + } |
| +} |
| function wasmIsSupported() { |
| return (typeof WebAssembly.Module) == "function"; |
| } |
| @@ -250,6 +258,64 @@ assertEq(arr[2].name, "c"); |
| assertEq(arr[3].kind, "global"); |
| assertEq(arr[3].name, "x"); |
| +// 'WebAssembly.Module.customSections' data property |
| +let moduleCustomSectionsDesc = |
| + Object.getOwnPropertyDescriptor(Module, 'customSections'); |
| +assertEq(typeof moduleCustomSectionsDesc.value, 'function'); |
| +assertEq(moduleCustomSectionsDesc.writable, true); |
| +assertEq(moduleCustomSectionsDesc.enumerable, false); |
| +assertEq(moduleCustomSectionsDesc.configurable, true); |
| + |
| +let moduleCustomSections = moduleCustomSectionsDesc.value; |
| +assertEq(moduleCustomSections.length, 2); |
| +assertErrorMessage( |
| + () => moduleCustomSections(), TypeError, /requires more than 0 arguments/); |
| +assertErrorMessage( |
| + () => moduleCustomSections(undefined), TypeError, |
| + /first argument must be a WebAssembly.Module/); |
| +assertErrorMessage( |
| + () => moduleCustomSections({}), TypeError, |
| + /first argument must be a WebAssembly.Module/); |
| +var arr = moduleCustomSections(emptyModule, 'x'); |
| +assertEq(arr instanceof Array, true); |
| +assertEq(arr.length, 0); |
| + |
| +assertErrorMessage( |
| + () => moduleCustomSections(1), TypeError, |
| + 'first argument must be a WebAssembly.Module'); |
| +assertErrorMessage( |
| + () => moduleCustomSections(emptyModule), TypeError, |
| + 'second argument must be a String'); |
| +assertErrorMessage( |
| + () => moduleCustomSections(emptyModule, 3), TypeError, |
| + 'second argument must be a String'); |
| + |
| +let customSectionModuleBinary2 = (() => { |
| + let builder = new WasmModuleBuilder(); |
| + builder.addExplicitSection([kUnknownSectionCode, 3, 1, 'x'.charCodeAt(0), 2]); |
| + builder.addExplicitSection([ |
| + kUnknownSectionCode, 6, 3, 'f'.charCodeAt(0), 'o'.charCodeAt(0), |
| + 'o'.charCodeAt(0), 66, 77 |
| + ]); |
| + builder.addExplicitSection([ |
|
rossberg
2017/01/24 11:34:42
Can you add another section not named "foo", to te
titzer
2017/01/24 12:38:39
Well, the section above is called 'x', but I added
|
| + kUnknownSectionCode, 7, 3, 'f'.charCodeAt(0), 'o'.charCodeAt(0), |
| + 'o'.charCodeAt(0), 91, 92, 93 |
| + ]); |
| + return new Int8Array(builder.toBuffer()); |
| +})(); |
| +var arr = moduleCustomSections(new Module(customSectionModuleBinary2), 'x'); |
| +assertEq(arr instanceof Array, true); |
| +assertEq(arr.length, 1); |
| +assertArrayBuffer(arr[0], [2]); |
| +var arr = moduleCustomSections(new Module(customSectionModuleBinary2), 'foo'); |
| +assertEq(arr instanceof Array, true); |
| +assertEq(arr.length, 2); |
| +assertArrayBuffer(arr[0], [66, 77]); |
| +assertArrayBuffer(arr[1], [91, 92, 93]); |
| +var arr = moduleCustomSections(new Module(customSectionModuleBinary2), 'bar'); |
| +assertEq(arr instanceof Array, true); |
| +assertEq(arr.length, 0); |
| + |
| // 'WebAssembly.Instance' data property |
| let instanceDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Instance'); |
| assertEq(typeof instanceDesc.value, "function"); |