mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
172 lines
5.3 KiB
JavaScript
172 lines
5.3 KiB
JavaScript
test("try/catch without exception", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
}
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeFalse();
|
|
});
|
|
|
|
test("try/catch with exception in try", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var tryError = Error("Error in try");
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
throw tryError;
|
|
expect().fail();
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
expect(e).toBe(tryError);
|
|
}
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch with exception in try and catch", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var tryError = Error("Error in try");
|
|
var catchError = Error("Error in catch");
|
|
expect(() => {
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
throw tryError;
|
|
expect().fail();
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
expect(e).toBe(tryError);
|
|
throw catchError;
|
|
expect().fail();
|
|
}
|
|
}).toThrow(Error, "Error in catch");
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch/finally without exception", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var finallyHasBeenExecuted = false;
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
} finally {
|
|
finallyHasBeenExecuted = true;
|
|
}
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeFalse();
|
|
expect(finallyHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch/finally with exception in try and catch", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var finallyHasBeenExecuted = false;
|
|
var tryError = Error("Error in try");
|
|
var catchError = Error("Error in catch");
|
|
expect(() => {
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
throw tryError;
|
|
expect().fail();
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
expect(e).toBe(tryError);
|
|
throw catchError;
|
|
expect().fail();
|
|
} finally {
|
|
finallyHasBeenExecuted = true;
|
|
}
|
|
}).toThrow(Error, "Error in catch");
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeTrue();
|
|
expect(finallyHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch/finally with exception in finally", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var finallyHasBeenExecuted = false;
|
|
var finallyError = Error("Error in finally");
|
|
expect(() => {
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
} finally {
|
|
finallyHasBeenExecuted = true;
|
|
throw finallyError;
|
|
expect().fail();
|
|
}
|
|
}).toThrow(Error, "Error in finally");
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeFalse();
|
|
expect(finallyHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch/finally with exception in try and finally", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var finallyHasBeenExecuted = false;
|
|
var tryError = Error("Error in try");
|
|
var finallyError = Error("Error in finally");
|
|
expect(() => {
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
throw tryError;
|
|
expect().fail();
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
expect(e).toBe(tryError);
|
|
} finally {
|
|
finallyHasBeenExecuted = true;
|
|
throw finallyError;
|
|
expect().fail();
|
|
}
|
|
}).toThrow(Error, "Error in finally");
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeTrue();
|
|
expect(finallyHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try/catch/finally with exception in try, catch and finally", () => {
|
|
var tryHasBeenExecuted = false;
|
|
var catchHasBeenExecuted = false;
|
|
var finallyHasBeenExecuted = false;
|
|
var tryError = Error("Error in try");
|
|
var catchError = Error("Error in catch");
|
|
var finallyError = Error("Error in finally");
|
|
expect(() => {
|
|
try {
|
|
tryHasBeenExecuted = true;
|
|
throw tryError;
|
|
expect().fail();
|
|
} catch (e) {
|
|
catchHasBeenExecuted = true;
|
|
expect(e).toBe(tryError);
|
|
throw catchError;
|
|
expect().fail();
|
|
} finally {
|
|
finallyHasBeenExecuted = true;
|
|
throw finallyError;
|
|
expect().fail();
|
|
}
|
|
}).toThrow(Error, "Error in finally");
|
|
expect(tryHasBeenExecuted).toBeTrue();
|
|
expect(catchHasBeenExecuted).toBeTrue();
|
|
expect(finallyHasBeenExecuted).toBeTrue();
|
|
});
|
|
|
|
test("try statement must have either 'catch' or 'finally' clause", () => {
|
|
expect("try {} catch {}").toEval();
|
|
expect("try {} catch (e) {}").toEval();
|
|
expect("try {} finally {}").toEval();
|
|
expect("try {} catch {} finally {}").toEval();
|
|
expect("try {} catch (e) {} finally {}").toEval();
|
|
expect("try {}").not.toEval();
|
|
});
|