mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-04 07:36:50 +00:00
Everywhere: Hoist the Libraries folder to the top-level
This commit is contained in:
committed by
Andreas Kling
parent
950e819ee7
commit
93712b24bf
74
Libraries/LibJS/Tests/classes/class-static-initializers.js
Normal file
74
Libraries/LibJS/Tests/classes/class-static-initializers.js
Normal file
@@ -0,0 +1,74 @@
|
||||
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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user