| Index: test/mjsunit/get-prototype-of.js
|
| diff --git a/test/mjsunit/get-prototype-of.js b/test/mjsunit/get-prototype-of.js
|
| index c2a492a3cf3a3872c94829a97b89bd09f0e9133f..3c6c16af8ea4ecca3b68cfdc573b5508f57e6877 100644
|
| --- a/test/mjsunit/get-prototype-of.js
|
| +++ b/test/mjsunit/get-prototype-of.js
|
| @@ -25,43 +25,77 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +assertThrows(function() {
|
| + Object.getPrototypeOf(undefined);
|
| +}, TypeError);
|
|
|
| -function TryGetPrototypeOfNonObject(x) {
|
| - var caught = 0;
|
| - try {
|
| - Object.getPrototypeOf(x);
|
| - } catch (e) {
|
| - caught = e;
|
| - }
|
| +assertThrows(function() {
|
| + Object.getPrototypeOf(null);
|
| +}, TypeError);
|
|
|
| - assertTrue(caught instanceof TypeError);
|
| -};
|
| -
|
| -function GetPrototypeOfObject(x) {
|
| - assertDoesNotThrow(Object.getPrototypeOf(x));
|
| - assertNotNull(Object.getPrototypeOf(x));
|
| - assertEquals(Object.getPrototypeOf(x), x.__proto__);
|
| -}
|
|
|
| function F(){};
|
| +var y = new F();
|
|
|
| -// Non object
|
| -var x = 10;
|
| +assertSame(Object.getPrototypeOf(y), F.prototype);
|
| +assertSame(Object.getPrototypeOf(F), Function.prototype);
|
|
|
| -// Object
|
| -var y = new F();
|
| +assertSame(Object.getPrototypeOf({x: 5}), Object.prototype);
|
| +assertSame(Object.getPrototypeOf({x: 5, __proto__: null}), null);
|
| +
|
| +assertSame(Object.getPrototypeOf([1, 2]), Array.prototype);
|
| +
|
| +
|
| +assertSame(Object.getPrototypeOf(1), Number.prototype);
|
| +assertSame(Object.getPrototypeOf(true), Boolean.prototype);
|
| +assertSame(Object.getPrototypeOf(false), Boolean.prototype);
|
| +assertSame(Object.getPrototypeOf('str'), String.prototype);
|
| +assertSame(Object.getPrototypeOf(Symbol()), Symbol.prototype);
|
| +
|
| +
|
| +// Builtin constructors.
|
| +var functions = [
|
| + Array,
|
| + ArrayBuffer,
|
| + Boolean,
|
| + // DataView,
|
| + Date,
|
| + Error,
|
| + EvalError,
|
| + Float32Array,
|
| + Float64Array,
|
| + Function,
|
| + Int16Array,
|
| + Int32Array,
|
| + Int8Array,
|
| + Map,
|
| + Number,
|
| + Object,
|
| + // Promise,
|
| + RangeError,
|
| + ReferenceError,
|
| + RegExp,
|
| + Set,
|
| + String,
|
| + // Symbol, not constructible
|
| + SyntaxError,
|
| + TypeError,
|
| + URIError,
|
| + Uint16Array,
|
| + Uint32Array,
|
| + Uint8Array,
|
| + Uint8ClampedArray,
|
| + WeakMap,
|
| + WeakSet,
|
| +];
|
| +
|
| +for (var f of functions) {
|
| + assertSame(Object.getPrototypeOf(f), Function.prototype);
|
| + assertSame(Object.getPrototypeOf(new f), f.prototype);
|
| +}
|
|
|
| -// Make sure that TypeError exceptions are thrown when non-objects are passed
|
| -// as argument
|
| -TryGetPrototypeOfNonObject(0);
|
| -TryGetPrototypeOfNonObject(null);
|
| -TryGetPrototypeOfNonObject('Testing');
|
| -TryGetPrototypeOfNonObject(x);
|
| +var p = new Promise(function() {});
|
| +assertSame(Object.getPrototypeOf(p), Promise.prototype);
|
|
|
| -// Make sure the real objects have this method and that it returns the
|
| -// actual prototype object. Also test for Functions and RegExp.
|
| -GetPrototypeOfObject(this);
|
| -GetPrototypeOfObject(y);
|
| -GetPrototypeOfObject({x:5});
|
| -GetPrototypeOfObject(F);
|
| -GetPrototypeOfObject(RegExp);
|
| +var dv = new DataView(new ArrayBuffer());
|
| +assertSame(Object.getPrototypeOf(dv), DataView.prototype);
|
|
|