describe("switch statement is a valid statement and gets executed", () => {
    test("switch statement in a block", () => {
        let hit = false;
        {
            switch (true) {
                case true:
                    hit = true;
            }
            expect(hit).toBeTrue();
        }
    });

    test("switch statement in an if statement when true", () => {
        let hit = false;
        var a = true;
        if (a)
            switch (true) {
                case true:
                    hit = true;
            }
        else
            switch (true) {
                case true:
                    expect().fail();
            }

        expect(hit).toBeTrue();
    });

    test("switch statement in an if statement when false", () => {
        let hit = false;
        var a = false;
        if (a)
            switch (a) {
                default:
                    expect().fail();
            }
        else
            switch (a) {
                default:
                    hit = true;
            }

        expect(hit).toBeTrue();
    });

    test("switch statement in an while statement", () => {
        var a = 0;
        var loops = 0;
        while (a < 1 && loops++ < 5)
            switch (a) {
                case 0:
                    a = 1;
            }

        expect(a).toBe(1);
    });

    test("switch statement in an for statement", () => {
        var loops = 0;
        for (let a = 0; a < 1 && loops++ < 5; )
            switch (a) {
                case 0:
                    a = 1;
            }

        expect(loops).toBe(1);
    });
});