123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- test("basic with statement functionality", () => {
- var object = { foo: 5, bar: 6, baz: 7 };
- var qux = 1;
- var bar = 99;
- with (object) {
- expect(foo).toBe(5);
- expect(bar).toBe(6);
- expect(baz).toBe(7);
- expect(qux).toBe(1);
- expect(typeof quz).toBe("undefined");
- bar = 2;
- }
- expect(object.bar).toBe(2);
- expect(() => foo).toThrowWithMessage(ReferenceError, "'foo' is not defined");
- expect(bar).toBe(99);
- });
- test("syntax error in strict mode", () => {
- expect("'use strict'; with (foo) {}").not.toEval();
- });
- test("restores lexical environment even when exception is thrown", () => {
- var object = {
- foo: 1,
- get bar() {
- throw Error();
- },
- };
- try {
- with (object) {
- expect(foo).toBe(1);
- bar;
- }
- expect().fail();
- } catch (e) {
- expect(() => foo).toThrowWithMessage(ReferenceError, "'foo' is not defined");
- }
- expect(() => foo).toThrowWithMessage(ReferenceError, "'foo' is not defined");
- });
|