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