function-strict-mode.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // This file must not be formatted by prettier. Make sure your IDE
  2. // respects the .prettierignore file!
  3. test("non strict-mode by default", () => {
  4. expect(isStrictMode()).toBeFalse();
  5. });
  6. test("use strict with double quotes", () => {
  7. "use strict";
  8. expect(isStrictMode()).toBeTrue();
  9. });
  10. test("use strict with single quotes", () => {
  11. 'use strict';
  12. expect(isStrictMode()).toBeTrue();
  13. });
  14. test("use strict with backticks does not yield strict mode", () => {
  15. `use strict`;
  16. expect(isStrictMode()).toBeFalse();
  17. });
  18. test("use strict with single quotes after statement does not yield strict mode code", () => {
  19. ;'use strict';
  20. expect(isStrictMode()).toBeFalse();
  21. });
  22. test("use strict with double quotes after statement does not yield strict mode code", () => {
  23. ;"use strict";
  24. expect(isStrictMode()).toBeFalse();
  25. });
  26. test("strict mode propogates down the scope chain", () => {
  27. "use strict";
  28. expect(isStrictMode()).toBeTrue();
  29. (function() {
  30. expect(isStrictMode()).toBeTrue();
  31. })();
  32. });
  33. test("strict mode does not propogate up the scope chain", () => {
  34. expect(isStrictMode()).toBeFalse();
  35. (function() {
  36. "use strict";
  37. expect(isStrictMode()).toBeTrue();
  38. })();
  39. expect(isStrictMode()).toBeFalse();
  40. });
  41. test('only the string "use strict" yields strict mode code', () => {
  42. "use stric";
  43. expect(isStrictMode()).toBeFalse();
  44. });