OLD | NEW |
(Empty) | |
| 1 Tests for ES6 class syntax "extends" |
| 2 |
| 3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
". |
| 4 |
| 5 |
| 6 PASS (new Base) instanceof Base is true |
| 7 PASS Object.getPrototypeOf(new Base) is Base.prototype |
| 8 PASS (new Derived) instanceof Derived is true |
| 9 PASS Object.getPrototypeOf(new Derived) is Derived.prototype |
| 10 PASS Object.getPrototypeOf(Derived.prototype) is Base.prototype |
| 11 PASS (new Derived).baseMethod() is "base" |
| 12 PASS (new Derived).overridenMethod() is "derived" |
| 13 PASS Derived.staticBaseMethod() is "base" |
| 14 PASS Derived.staticOverridenMethod() is "derived" |
| 15 PASS x = class extends threw exception SyntaxError: Unexpected end of input. |
| 16 PASS x = class extends threw exception SyntaxError: Unexpected end of input. |
| 17 PASS x = class extends Base { threw exception SyntaxError: Unexpected end of inp
ut. |
| 18 PASS x = class extends Base { } did not throw exception. |
| 19 PASS x = class extends Base { constructor() { } } did not throw exception. |
| 20 PASS x.__proto__ is Base |
| 21 PASS Object.getPrototypeOf(x) is Base |
| 22 PASS x.prototype.__proto__ is Base.prototype |
| 23 PASS Object.getPrototypeOf(x.prototype) is Base.prototype |
| 24 PASS x = class extends null { constructor() { } }; x.__proto__ is Function.proto
type |
| 25 PASS x.__proto__ is Function.prototype |
| 26 PASS x = class extends 3 { constructor() { } }; x.__proto__ threw exception Type
Error: Class extends value 3 is not a function or null. |
| 27 PASS x = class extends "abc" { constructor() { } }; x.__proto__ threw exception
TypeError: Class extends value abc is not a function or null. |
| 28 PASS baseWithBadPrototype = function () {}; baseWithBadPrototype.prototype = 3;
new baseWithBadPrototype did not throw exception. |
| 29 PASS x = class extends baseWithBadPrototype { constructor() { } } threw exceptio
n TypeError: Class extends value does not have valid prototype property 3. |
| 30 PASS baseWithBadPrototype.prototype = "abc" did not throw exception. |
| 31 PASS x = class extends baseWithBadPrototype { constructor() { } } threw exceptio
n TypeError: Class extends value does not have valid prototype property abc. |
| 32 PASS baseWithBadPrototype.prototype = null; x = class extends baseWithBadPrototy
pe { constructor() { } } did not throw exception. |
| 33 PASS x = 1; c = class extends ++x { constructor() { } }; threw exception SyntaxE
rror: Unexpected token ++. |
| 34 PASS x = 1; c = class extends x++ { constructor() { } }; threw exception SyntaxE
rror: Unexpected token ++. |
| 35 PASS x = 1; c = class extends (++x) { constructor() { } }; threw exception TypeE
rror: Class extends value 2 is not a function or null. |
| 36 PASS x = 1; c = class extends (x++) { constructor() { } }; threw exception TypeE
rror: Class extends value 1 is not a function or null. |
| 37 PASS x = 1; try { c = class extends (++x) { constructor() { } } } catch (e) { };
x is 2 |
| 38 PASS x = 1; try { c = class extends (x++) { constructor() { } } } catch (e) { };
x is 2 |
| 39 PASS namespace = {}; namespace.A = class { }; namespace.B = class extends namesp
ace.A { } did not throw exception. |
| 40 PASS namespace = {}; namespace.A = class A { }; namespace.B = class B extends na
mespace.A { } did not throw exception. |
| 41 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends namespace.A { constructor() { } } did not throw exception. |
| 42 PASS namespace = {}; namespace.A = class A { constructor() { } }; namespace.B =
class B extends namespace.A { constructor() { } } did not throw exception. |
| 43 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends (namespace.A) { constructor() { } } did not throw exception. |
| 44 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends namespace["A"] { constructor() { } } did not throw exception. |
| 45 PASS namespace = {}; namespace.A = class { constructor() { } }; function getClas
sA() { return namespace.A }; namespace.B = class extends getClassA() { construct
or() { } } did not throw exception. |
| 46 PASS namespace = {}; namespace.A = class { constructor() { } }; function getClas
s(prop) { return namespace[prop] }; namespace.B = class extends getClass("A") {
constructor() { } } did not throw exception. |
| 47 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends (false||null||namespace.A) { constructor() { } } did not throw excep
tion. |
| 48 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends false||null||namespace.A { constructor() { } } threw exception Synta
xError: Unexpected token ||. |
| 49 PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; namespace
.B = class extends (x++, namespace.A) { constructor() { } }; did not throw excep
tion. |
| 50 PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; namespace
.B = class extends (namespace.A, x++) { constructor() { } }; threw exception Typ
eError: Class extends value 1 is not a function or null. |
| 51 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends new namespace.A { constructor() { } } threw exception TypeError: Cla
ss extends value [object Object] is not a function or null. |
| 52 PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = cl
ass extends new namespace.A() { constructor() { } } threw exception TypeError: C
lass extends value [object Object] is not a function or null. |
| 53 PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; try { nam
espace.B = class extends (x++, namespace.A) { constructor() { } } } catch (e) {
} x is 2 |
| 54 PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; try { nam
espace.B = class extends (namespace.A, x++) { constructor() { } } } catch (e) {
} x is 2 |
| 55 PASS Object.getPrototypeOf((class { constructor () { } }).prototype) is Object.p
rototype |
| 56 PASS Object.getPrototypeOf((class extends null { constructor () { super(); } }).
prototype) is null |
| 57 PASS new (class extends undefined { constructor () { this } }) threw exception T
ypeError: Class extends value undefined is not a function or null. |
| 58 PASS new (class extends undefined { constructor () { super(); } }) threw excepti
on TypeError: Class extends value undefined is not a function or null. |
| 59 PASS x = {}; new (class extends undefined { constructor () { return x; } }) thre
w exception TypeError: Class extends value undefined is not a function or null. |
| 60 PASS y = 12; new (class extends undefined { constructor () { return y; } }) thre
w exception TypeError: Class extends value undefined is not a function or null. |
| 61 FAIL class x {}; new (class extends null { constructor () { return new x; } }) i
nstanceof x should be true. Threw exception TypeError: x is not a function |
| 62 PASS new (class extends null { constructor () { this; } }) threw exception Refer
enceError: this is not defined. |
| 63 PASS new (class extends null { constructor () { super(); } }) threw exception Ty
peError: function () {} is not a constructor. |
| 64 PASS x = {}; new (class extends null { constructor () { return x } }) is x |
| 65 PASS y = 12; new (class extends null { constructor () { return y; } }) threw exc
eption TypeError: Derived constructors may only return object or undefined. |
| 66 FAIL class x {}; new (class extends null { constructor () { return new x; } }) i
nstanceof x should be true. Threw exception TypeError: x is not a function |
| 67 PASS x = null; Object.getPrototypeOf((class extends x { }).prototype) is null |
| 68 PASS Object.prototype.isPrototypeOf(class { }) is true |
| 69 PASS Function.prototype.isPrototypeOf(class { }) is true |
| 70 PASS successfullyParsed is true |
| 71 |
| 72 TEST COMPLETE |
OLD | NEW |