{ "testCollection": { "name": "12.10.1", "numTests": 15, "tests": [ { "id": "12.10.1-1-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-1-s.js", "description": "with statement in strict mode throws SyntaxError (strict function)", "test": "assertTrue((function testcase() {\n\n try {\n // wrapping it in eval since this needs to be a syntax error. The\n // exception thrown must be a SyntaxError exception.\n eval(\"\\\n function f() {\\\n \\'use strict\\';\\\n var o = {}; \\\n with (o) {};\\\n }\\\n \");\n return false;\n }\n catch (e) {\n return(e instanceof SyntaxError); \n\t}\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-10-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-10-s.js", "description": "with statement in strict mode throws SyntaxError (eval, where the container function is strict)", "test": "assertTrue((function testcase() {\n 'use strict';\n \n // wrapping it in eval since this needs to be a syntax error. The\n // exception thrown must be a SyntaxError exception. Note that eval\n // inherits the strictness of its calling context. \n try {\n eval(\"\\\n var o = {};\\\n with (o) {}\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-11-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-11-s.js", "description": "Strict Mode - SyntaxError is thrown when using WithStatement in strict mode code", "test": "assertTrue((function testcase() {\n \"use strict\";\n try {\n eval(\"with ({}) { throw new Error();}\");\n\n return false;\n } catch (e) {\n return e instanceof SyntaxError;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-12-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-12-s.js", "description": "with statement in strict mode throws SyntaxError (strict eval)", "test": "assertTrue((function testcase() {\n try {\n eval(\"\\\n 'use strict'; \\\n var o = {}; \\\n with (o) {}\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError) ;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-13-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-13-s.js", "description": "Strict Mode - SyntaxError isn't thrown when WithStatement body is in strict mode code", "test": "assertTrue((function testcase() {\n with ({}) {\n \"use strict\";\n }\n return true;\n }).call(this));\n", "strict_only": "" }, { "id": "12.10.1-14-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-14-s.js", "description": "Strict Mode - SyntaxError is thrown when the getter of a literal object utilizes WithStatement", "test": "assertTrue((function testcase() {\n \"use strict\";\n\n try {\n eval(\"var obj = { get: function (a) { with(a){} } }; \");\n\n return false;\n } catch (e) {\n return e instanceof SyntaxError;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-15-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-15-s.js", "description": "Strict Mode - SyntaxError is thrown when the RHS of a dot property assignment utilizes WithStatement", "test": "assertTrue((function testcase() {\n \"use strict\";\n\n try {\n eval(\"var obj = {}; obj.get = function (a) { with(a){} }; \");\n return false;\n } catch (e) {\n return e instanceof SyntaxError;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-16-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-16-s.js", "description": "Strict Mode - SyntaxError is thrown when the RHS of an object indexer assignment utilizes WithStatement", "test": "assertTrue((function testcase() {\n \"use strict\";\n\n try {\n eval(\"var obj = {}; obj['get'] = function (a) { with(a){} }; \");\n return false;\n } catch (e) {\n return e instanceof SyntaxError;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-2-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-2-s.js", "description": "with statement in strict mode throws SyntaxError (nested function where container is strict)", "test": "assertTrue((function testcase() {\n try {\n // wrapping it in eval since this needs to be a syntax error. The\n // exception thrown must be a SyntaxError exception.\n eval(\"\\\n function foo() {\\\n \\'use strict\\'; \\\n function f() {\\\n var o = {}; \\\n with (o) {};\\\n }\\\n }\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-3-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-3-s.js", "description": "with statement in strict mode throws SyntaxError (nested strict function)", "test": "assertTrue((function testcase() {\n try {\n // wrapping it in eval since this needs to be a syntax error. The\n // exception thrown must be a SyntaxError exception.\n eval(\"\\\n function foo() {\\\n function f() {\\\n \\'use strict\\'; \\\n var o = {}; \\\n with (o) {};\\\n }\\\n }\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-4-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-4-s.js", "description": "with statement in strict mode throws SyntaxError (strict Function)", "test": "assertTrue((function testcase() {\n try {\n var f = Function(\"\\\n \\'use strict\\'; \\\n var o = {}; \\\n with (o) {};\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n\t\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-5-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-5-s.js", "description": "with statement allowed in nested Function even if its container Function is strict)", "test": "assertTrue((function testcase() {\n \n Function(\"\\'use strict\\'; var f1 = Function( \\\"var o = {}; with (o) {};\\\")\");\n return true;\n \n }).call(this));\n", "strict_only": "" }, { "id": "12.10.1-7-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-7-s.js", "description": "with statement in strict mode throws SyntaxError (function expression, where the container function is directly evaled from strict code)", "test": "assertTrue((function testcase() {\n 'use strict';\n\n try {\n eval(\"var f = function () {\\\n var o = {}; \\\n with (o) {}; \\\n }\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-8-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-8-s.js", "description": "with statement in strict mode throws SyntaxError (function expression, where the container Function is strict)", "test": "assertTrue((function testcase() {\n try {\n Function(\"\\\n \\'use strict\\'; \\\n var f1 = function () {\\\n var o = {}; \\\n with (o) {}; \\\n }\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError);\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" }, { "id": "12.10.1-9-s", "path": "TestCases/chapter12/12.10/12.10.1/12.10.1-9-s.js", "description": "with statement in strict mode throws SyntaxError (strict function expression)", "test": "assertTrue((function testcase() {\n try {\n eval(\"\\\n var f = function () {\\\n \\'use strict\\';\\\n var o = {}; \\\n with (o) {}; \\\n }\\\n \");\n return false;\n }\n catch (e) {\n return (e instanceof SyntaxError) ;\n }\n }).call(this));\n", "precondition": "(fnSupportsStrict())", "strict_only": "" } ] } }