array-length-setter.js 955 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. a.length = value;
  29. }, {
  30. error: RangeError,
  31. message: "Invalid array length"
  32. });
  33. assert(a.length === 1);
  34. });
  35. console.log("PASS");
  36. } catch (e) {
  37. console.log("FAIL: " + e);
  38. }