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); |