array-length-setter.js 896 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. load("test-common.js");
  2. try {
  3. var a = [1, 2, 3];
  4. assert(a.length === 3);
  5. assert(a[0] === 1);
  6. assert(a[1] === 2);
  7. assert(a[2] === 3);
  8. a.length = 5;
  9. assert(a.length === 5);
  10. assert(a[0] === 1);
  11. assert(a[1] === 2);
  12. assert(a[2] === 3);
  13. assert(a[3] === undefined);
  14. assert(a[4] === undefined);
  15. a.length = 1;
  16. assert(a.length === 1);
  17. assert(a[0] === 1);
  18. a.length = 0;
  19. assert(a.length === 0);
  20. a.length = "42";
  21. assert(a.length === 42);
  22. a.length = [];
  23. assert(a.length === 0);
  24. a.length = true;
  25. assert(a.length === 1);
  26. [undefined, "foo", -1, Infinity, -Infinity, NaN].forEach(value => {
  27. assertThrowsError(
  28. () => {
  29. a.length = value;
  30. },
  31. {
  32. error: RangeError,
  33. message: "Invalid array length",
  34. }
  35. );
  36. assert(a.length === 1);
  37. });
  38. console.log("PASS");
  39. } catch (e) {
  40. console.log("FAIL: " + e);
  41. }