mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
126 lines
2.2 KiB
JavaScript
126 lines
2.2 KiB
JavaScript
test("basic functionality", () => {
|
|
class A {
|
|
number() {
|
|
return 2;
|
|
}
|
|
|
|
string() {
|
|
return "foo";
|
|
}
|
|
}
|
|
|
|
const a = new A();
|
|
expect(a.number()).toBe(2);
|
|
expect(a.string()).toBe("foo");
|
|
});
|
|
|
|
test("length", () => {
|
|
class A {
|
|
method1() {}
|
|
|
|
method2(a, b, c, d) {}
|
|
|
|
method3(a, b, ...c) {}
|
|
}
|
|
|
|
const a = new A();
|
|
expect(a.method1).toHaveLength(0);
|
|
expect(a.method2).toHaveLength(4);
|
|
expect(a.method3).toHaveLength(2);
|
|
});
|
|
|
|
test("extended name syntax", () => {
|
|
class A {
|
|
"method with space"() {
|
|
return 1;
|
|
}
|
|
|
|
12() {
|
|
return 2;
|
|
}
|
|
|
|
[`he${"llo"}`]() {
|
|
return 3;
|
|
}
|
|
}
|
|
|
|
const a = new A();
|
|
expect(a["method with space"]()).toBe(1);
|
|
expect(a[12]()).toBe(2);
|
|
expect(a.hello()).toBe(3);
|
|
});
|
|
|
|
test("method named 'async'", () => {
|
|
class A {
|
|
async() {
|
|
return "function named async";
|
|
}
|
|
}
|
|
|
|
const a = new A();
|
|
expect("async" in a).toBeTrue();
|
|
expect(a.async()).toBe("function named async");
|
|
});
|
|
|
|
test("can call other private methods from methods", () => {
|
|
class A {
|
|
#a() {
|
|
return 1;
|
|
}
|
|
|
|
async #b() {
|
|
return 2;
|
|
}
|
|
|
|
syncA() {
|
|
return this.#a();
|
|
}
|
|
|
|
async asyncA() {
|
|
return this.#a();
|
|
}
|
|
|
|
syncB() {
|
|
return this.#b();
|
|
}
|
|
|
|
async asyncB() {
|
|
return this.#b();
|
|
}
|
|
}
|
|
|
|
var called = false;
|
|
|
|
async function check() {
|
|
called = true;
|
|
const a = new A();
|
|
|
|
expect(a.syncA()).toBe(1);
|
|
expect(await a.asyncA()).toBe(1);
|
|
expect(await a.syncB()).toBe(2);
|
|
expect(await a.asyncB()).toBe(2);
|
|
return 3;
|
|
}
|
|
|
|
var error = null;
|
|
var failed = false;
|
|
|
|
check().then(
|
|
value => {
|
|
expect(called).toBeTrue();
|
|
expect(value).toBe(3);
|
|
},
|
|
thrownError => {
|
|
failed = true;
|
|
error = thrownError;
|
|
}
|
|
);
|
|
|
|
runQueuedPromiseJobs();
|
|
|
|
expect(called).toBeTrue();
|
|
|
|
if (failed) throw error;
|
|
|
|
expect(failed).toBeFalse();
|
|
});
|