Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: test/mjsunit/harmony/classes.js

Issue 687453004: Classes: Add more tests for prototype edge cases (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --harmony 5 // Flags: --harmony
6 6
7 (function TestBasics() { 7 (function TestBasics() {
8 var C = class C {} 8 var C = class C {}
9 assertEquals(typeof C, 'function'); 9 assertEquals(typeof C, 'function');
10 assertEquals(C.__proto__, Function.prototype); 10 assertEquals(C.__proto__, Function.prototype);
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 167
168 168
169 function assertMethodDescriptor(object, name) { 169 function assertMethodDescriptor(object, name) {
170 var descr = Object.getOwnPropertyDescriptor(object, name); 170 var descr = Object.getOwnPropertyDescriptor(object, name);
171 assertTrue(descr.configurable); 171 assertTrue(descr.configurable);
172 assertTrue(descr.enumerable); 172 assertTrue(descr.enumerable);
173 assertTrue(descr.writable); 173 assertTrue(descr.writable);
174 assertEquals('function', typeof descr.value); 174 assertEquals('function', typeof descr.value);
175 } 175 }
176 176
177
177 function assertGetterDescriptor(object, name) { 178 function assertGetterDescriptor(object, name) {
178 var descr = Object.getOwnPropertyDescriptor(object, name); 179 var descr = Object.getOwnPropertyDescriptor(object, name);
179 assertTrue(descr.configurable); 180 assertTrue(descr.configurable);
180 assertTrue(descr.enumerable); 181 assertTrue(descr.enumerable);
181 assertEquals('function', typeof descr.get); 182 assertEquals('function', typeof descr.get);
182 assertEquals(undefined, descr.set); 183 assertEquals(undefined, descr.set);
183 } 184 }
184 185
185 186
186 function assertSetterDescriptor(object, name) { 187 function assertSetterDescriptor(object, name) {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 } 381 }
381 static staticM() { 382 static staticM() {
382 return 2; 383 return 2;
383 } 384 }
384 } 385 }
385 386
386 assertEquals(1, new C().m()); 387 assertEquals(1, new C().m());
387 assertEquals(2, C.staticM()); 388 assertEquals(2, C.staticM());
388 })(); 389 })();
389 390
391
392 (function TestConstructableButNoPrototype() {
393 var Base = function() {}.bind();
394 assertThrows(function() {
395 class C extends Base {}
396 }, TypeError);
397 })();
398
399
400 (function TestPrototypeGetter() {
401 var calls = 0;
402 var Base = function() {}.bind();
403 Object.defineProperty(Base, 'prototype', {
404 get: function() {
405 calls++;
406 return null;
407 },
408 configurable: true
409 });
410 class C extends Base {}
411 assertEquals(1, calls);
412
413 calls = 0;
414 Object.defineProperty(Base, 'prototype', {
415 get: function() {
416 calls++;
417 return 42;
418 },
419 configurable: true
420 });
421 assertThrows(function() {
422 class C extends Base {}
423 }, TypeError);
424 assertEquals(1, calls);
425 })();
426
427
428 (function TestPrototypeSetter() {
429 var Base = function() {}.bind();
430 Object.defineProperty(Base, 'prototype', {
431 set: function() {
432 assertUnreachable();
433 }
434 });
435 assertThrows(function() {
436 class C extends Base {}
437 }, TypeError);
438 })();
439
440
390 /* TODO(arv): Implement 441 /* TODO(arv): Implement
391 (function TestNameBindingInConstructor() { 442 (function TestNameBindingInConstructor() {
392 class C { 443 class C {
393 constructor() { 444 constructor() {
394 assertThrows(function() { 445 assertThrows(function() {
395 C = 42; 446 C = 42;
396 }, ReferenceError); 447 }, ReferenceError);
397 } 448 }
398 } 449 }
399 new C(); 450 new C();
400 })(); 451 })();
401 */ 452 */
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698