Object.preventExtensions.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. load("test-common.js");
  2. try {
  3. assert(Object.preventExtensions() === undefined);
  4. assert(Object.preventExtensions(undefined) === undefined);
  5. assert(Object.preventExtensions(null) === null);
  6. assert(Object.preventExtensions(true) === true);
  7. assert(Object.preventExtensions(6) === 6);
  8. assert(Object.preventExtensions("test") === "test");
  9. let s = Symbol();
  10. assert(Object.preventExtensions(s) === s);
  11. let o = { foo: "foo" };
  12. assert(o.foo === "foo");
  13. o.bar = "bar";
  14. assert(o.bar === "bar");
  15. assert(Object.preventExtensions(o) === o);
  16. assert(o.foo === "foo");
  17. assert(o.bar === "bar");
  18. o.baz = "baz";
  19. assert(o.baz === undefined);
  20. assertThrowsError(() => {
  21. Object.defineProperty(o, "baz", { value: "baz" });
  22. }, {
  23. error: TypeError,
  24. message: "Cannot define property baz on non-extensible object",
  25. });
  26. assert(o.baz === undefined);
  27. assertThrowsError(() => {
  28. "use strict";
  29. o.baz = "baz";
  30. }, {
  31. error: TypeError,
  32. message: "Cannot define property baz on non-extensible object",
  33. });
  34. assertThrowsError(() => {
  35. "use strict";
  36. Object.defineProperty(o, "baz", { value: "baz" });
  37. }, {
  38. error: TypeError,
  39. message: "Cannot define property baz on non-extensible object",
  40. });
  41. console.log("PASS");
  42. } catch (e) {
  43. console.log("FAIL: " + e);
  44. }