mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
74 lines
1.4 KiB
JavaScript
74 lines
1.4 KiB
JavaScript
test("basic functionality", () => {
|
|
var called = false;
|
|
class A {
|
|
static {
|
|
expect(called).toBeFalse();
|
|
expect(this.name).toBe("A");
|
|
called = true;
|
|
}
|
|
}
|
|
|
|
expect(called).toBeTrue();
|
|
new A();
|
|
expect(called).toBeTrue();
|
|
});
|
|
|
|
test("called in order", () => {
|
|
var i = 0;
|
|
class A {
|
|
static {
|
|
expect(i).toBe(0);
|
|
i++;
|
|
}
|
|
|
|
static method() {
|
|
return 2;
|
|
}
|
|
|
|
static {
|
|
expect(i).toBe(1);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
expect(i).toBe(2);
|
|
new A();
|
|
expect(i).toBe(2);
|
|
});
|
|
|
|
test("correct this", () => {
|
|
var thisValue = null;
|
|
class A {
|
|
static {
|
|
thisValue = this;
|
|
}
|
|
}
|
|
|
|
expect(thisValue).toBe(A);
|
|
});
|
|
|
|
describe("class like constructs can be used inside", () => {
|
|
test("can use new.target", () => {
|
|
let value = 1;
|
|
class C {
|
|
static {
|
|
value = new.target;
|
|
}
|
|
}
|
|
expect(value).toBeUndefined();
|
|
});
|
|
|
|
test("can use super property lookup", () => {
|
|
function parent() {}
|
|
parent.val = 3;
|
|
|
|
let hit = false;
|
|
class C extends parent {
|
|
static {
|
|
hit = true;
|
|
expect(super.val).toBe(3);
|
|
}
|
|
}
|
|
expect(hit).toBeTrue();
|
|
});
|
|
});
|