| Index: test/mjsunit/get-prototype-of.js
|
| diff --git a/test/mjsunit/get-prototype-of.js b/test/mjsunit/get-prototype-of.js
|
| index 3c6c16af8ea4ecca3b68cfdc573b5508f57e6877..c2a492a3cf3a3872c94829a97b89bd09f0e9133f 100644
|
| --- a/test/mjsunit/get-prototype-of.js
|
| +++ b/test/mjsunit/get-prototype-of.js
|
| @@ -25,77 +25,43 @@
|
| // (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);
|
|
|
| -assertThrows(function() {
|
| - Object.getPrototypeOf(null);
|
| -}, TypeError);
|
| +function TryGetPrototypeOfNonObject(x) {
|
| + var caught = 0;
|
| + try {
|
| + Object.getPrototypeOf(x);
|
| + } catch (e) {
|
| + caught = e;
|
| + }
|
|
|
| + assertTrue(caught instanceof TypeError);
|
| +};
|
| +
|
| +function GetPrototypeOfObject(x) {
|
| + assertDoesNotThrow(Object.getPrototypeOf(x));
|
| + assertNotNull(Object.getPrototypeOf(x));
|
| + assertEquals(Object.getPrototypeOf(x), x.__proto__);
|
| +}
|
|
|
| function F(){};
|
| +
|
| +// Non object
|
| +var x = 10;
|
| +
|
| +// Object
|
| var y = new F();
|
|
|
| -assertSame(Object.getPrototypeOf(y), F.prototype);
|
| -assertSame(Object.getPrototypeOf(F), Function.prototype);
|
| +// Make sure that TypeError exceptions are thrown when non-objects are passed
|
| +// as argument
|
| +TryGetPrototypeOfNonObject(0);
|
| +TryGetPrototypeOfNonObject(null);
|
| +TryGetPrototypeOfNonObject('Testing');
|
| +TryGetPrototypeOfNonObject(x);
|
|
|
| -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);
|
| -}
|
| -
|
| -var p = new Promise(function() {});
|
| -assertSame(Object.getPrototypeOf(p), Promise.prototype);
|
| -
|
| -var dv = new DataView(new ArrayBuffer());
|
| -assertSame(Object.getPrototypeOf(dv), DataView.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);
|
|
|