test("throw literal", () => {
    try {
        throw 1;
        expect().fail();
    } catch (e) {
        if (e.name === "ExpectationError") throw e;
        expect(e).toBe(1);
    }
});

test("throw array", () => {
    try {
        throw [99];
        expect().fail();
    } catch (e) {
        if (e.name === "ExpectationError") throw e;
        expect(e).toEqual([99]);
    }
});

test("call function that throws", () => {
    function foo() {
        throw "hello";
        expect().fail();
    }

    try {
        foo();
        expect().fail();
    } catch (e) {
        if (e.name === "ExpectationError") throw e;
        expect(e).toBe("hello");
    }
});