Chromium Code Reviews| Index: test/mjsunit/harmony/classes-maps.js |
| diff --git a/test/mjsunit/harmony/classes-maps.js b/test/mjsunit/harmony/classes-maps.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..40d3811e2ae4695e433e4906f8cb504e6f619f3b |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/classes-maps.js |
| @@ -0,0 +1,69 @@ |
| +// Copyright 2014 the V8 project authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| +// |
| +// Flags: --harmony-classes --allow-natives-syntax |
| +'use strict'; |
| + |
| +(function TestMaps() { |
| + class Base {} |
| + class Derived extends Base {} |
| + |
| + let d1 = new Derived(); |
| + let d2 = new Derived(); |
| + |
| + assertTrue(%HaveSameMap(d1, d2)); |
| +}()); |
| + |
| + |
| +(function TestProtoModificationArray() { |
| + let called = 0; |
| + function F() { |
| + called++; |
| + assertFalse(Array.isArray(this)); |
| + } |
| + class Derived extends Array {} |
| + assertSame(Derived.__proto__, Array); |
| + |
| + let d1 = new Derived(); |
| + assertTrue(Array.isArray(d1)); |
| + |
| + Derived.__proto__ = F; |
| + called = 0; |
| + let d2 = new Derived(); |
| + assertSame(1, called); |
| + assertFalse(Array.isArray(d2)); |
| + |
| + assertFalse(%HaveSameMap(d1, d2)); |
| +}()); |
| + |
| + |
| +(function TestProtoModification() { |
| + let called = 0; |
| + function F() { |
| + called++; |
| + let exn = null; |
| + try { |
| + this.byteLength; |
| + } |
|
arv (Not doing code reviews)
2015/04/13 15:59:39
nit:
} catch (e) {
Dmitry Lomov (no reviews)
2015/04/14 09:34:27
Done.
|
| + catch (e) { |
| + exn = e; |
| + } |
| + assertTrue(exn instanceof TypeError); |
| + } |
| + class Derived extends Uint8Array { |
| + constructor() { super(10); } |
| + } |
| + assertSame(Derived.__proto__, Uint8Array); |
| + |
| + let d1 = new Derived(); |
| + assertSame(10, d1.byteLength); |
| + |
| + Derived.__proto__ = F; |
| + called = 0; |
| + let d2 = new Derived(); |
| + assertSame(1, called); |
| + assertThrows(function() { d2.byteLength; }, TypeError); |
| + |
| + assertFalse(%HaveSameMap(d1, d2)); |
| +}()); |