WebAssembly: test module namespace object for WebAssembly.Instance
authorjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Mar 2017 17:54:36 +0000 (17:54 +0000)
committerjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Mar 2017 17:54:36 +0000 (17:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=169951

Reviewed by Saam Barati.

* wasm/js-api/test_basic_api.js:
(const.c.in.constructorProperties.switch):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@214260 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JSTests/ChangeLog
JSTests/wasm/js-api/test_basic_api.js

index 7ed5914..6636410 100644 (file)
@@ -1,5 +1,15 @@
 2017-03-22  JF Bastien  <jfbastien@apple.com>
 
+        WebAssembly: test module namespace object for WebAssembly.Instance
+        https://bugs.webkit.org/show_bug.cgi?id=169951
+
+        Reviewed by Saam Barati.
+
+        * wasm/js-api/test_basic_api.js:
+        (const.c.in.constructorProperties.switch):
+
+2017-03-22  JF Bastien  <jfbastien@apple.com>
+
         WebAssembly: constructors without new don't throw
         https://bugs.webkit.org/show_bug.cgi?id=165995
 
index 2ff7159..fb5d559 100644 (file)
@@ -72,11 +72,13 @@ for (const c in constructorProperties) {
             assert.throws(() => new WebAssembly[c](new WebAssembly.Module(emptyModuleArray), invalid), TypeError, `second argument to WebAssembly.Instance must be undefined or an Object (evaluating 'new WebAssembly[c](new WebAssembly.Module(emptyModuleArray), invalid)')`);
         assert.isNotUndef(instance.exports);
         checkOwnPropertyDescriptor(instance, "exports", { typeofvalue: "object", writable: true, configurable: true, enumerable: true });
-        // FIXME these should pass, requires a module namespace object. https://bugs.webkit.org/show_bug.cgi?id=165121
-        // assert.isUndef(instance.exports.__proto__);
-        // assert.eq(Reflect.isExtensible(instance.exports), false);
-        // assert.eq(Symbol.iterator in instance.exports, true);
-        // assert.eq(Symbol.toStringTag in instance.exports, true);
+        assert.isUndef(instance.exports.__proto__);
+        assert.eq(Reflect.isExtensible(instance.exports), false);
+        assert.eq(Symbol.iterator in instance.exports, false);
+        assert.eq(Symbol.toStringTag in instance.exports, true);
+        assert.eq(Object.getOwnPropertySymbols(instance.exports).length, 1);
+        assert.eq(Object.getOwnPropertySymbols(instance.exports)[0], Symbol.toStringTag);
+        assert.throws(() => instance.exports[Symbol.toStringTag] = 42, TypeError, `Attempted to assign to readonly property.`);
         break;
     case "Memory":
         new WebAssembly.Memory({initial: 20});