babel/test/fixtures/traceur/Classes/NestedClassSuperAnimal.js
2015-01-04 19:40:09 +11:00

46 lines
1.3 KiB
JavaScript

// a = animal, n = name, sn = super name, fn = full name, wn = with name
class Animal {
constructor(n) {
this.n1 = n + ' Animal';
}
get n() { return this.n1; }
}
class Roo extends Animal {
constructor(n) {
class Koala extends Animal {
constructor(n) {
super(n);
this.n2 = n + ' Koala';
}
get n() { return this.n2; }
get sn() { return super.n; }
get fn() { return this.n + ' aka ' + this.sn; }
}
this.a = new Koala(n + ' II');
super(n);
this.n2 = n + ' Roo';
}
wn(n) {
return ' (with ' + n + ')';
}
get n() { return this.n2 + this.wn(this.a.n); }
get sn() { return super.n + this.wn(this.a.sn); }
get fn() { return this.n + ' aka ' + this.sn + this.wn(this.a.fn); }
}
// ----------------------------------------------------------------------------
var o = new Roo('Kanga');
assert.equal('Kanga II Koala', o.a.n);
assert.equal('Kanga II Animal', o.a.sn);
assert.equal('Kanga II Koala aka Kanga II Animal', o.a.fn);
assert.equal('Kanga Roo (with Kanga II Koala)', o.n);
assert.equal('Kanga Animal (with Kanga II Animal)', o.sn);
assert.equal('Kanga Roo (with Kanga II Koala) aka ' +
'Kanga Animal (with Kanga II Animal) ' +
'(with Kanga II Koala aka Kanga II Animal)', o.fn);