ladybird/Libraries/LibJS/Tests/classes/class-expressions.js

68 lines
1.2 KiB
JavaScript

test("basic functionality", () => {
const A = class {
constructor(x) {
this.x = x;
}
getX() {
return this.x * 2;
}
};
expect(new A(10).getX()).toBe(20);
});
test("inline instantiation", () => {
// prettier-ignore
const a = new class {
constructor() {
this.x = 10;
}
getX() {
return this.x * 2;
}
};
expect(a.getX()).toBe(20);
});
test("inline instantiation with argument", () => {
// prettier-ignore
const a = new class {
constructor(x) {
this.x = x;
}
getX() {
return this.x * 2;
}
}(10);
expect(a.getX()).toBe(20);
});
test("extending class expressions", () => {
class A extends class {
constructor(x) {
this.x = x;
}
} {
constructor(y) {
super(y);
this.y = y * 2;
}
}
const a = new A(10);
expect(a.x).toBe(10);
expect(a.y).toBe(20);
});
test("class expression name", () => {
let A = class {};
expect(A.name).toBe("A");
let B = class C {};
expect(B.name).toBe("C");
});