| 0. [[Value]] absent, set enumerable: true |
| TypeError : Attempting to change enumerable attribute of unconfigurable property. |
| length: 0 writable |
| |
| |
| 1. [[Value]] absent, set configurable: true |
| TypeError : Attempting to change configurable attribute of unconfigurable property. |
| length: 0 writable |
| |
| |
| 2. [[Value]] absent, empty descriptor |
| length: 0 writable |
| |
| |
| 3. [[Value]] absent, no change |
| length: 0 writable |
| |
| |
| 4. [[Value]] absent, set writable: true |
| length: 0 writable |
| length: 10 |
| |
| |
| 5. [[Value]] absent, set writable: false |
| length: 0 |
| length: 0 |
| |
| |
| 6. [[Value]] absent, set multiple -- configurable: false, writable: false |
| length: 0 |
| |
| |
| 7. [[Value]] absent, set multiple -- enumerable: false, writable: false |
| length: 0 |
| |
| |
| 8. [[Value]] invalid 1 |
| RangeError : Invalid array length |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 9. [[Value]] invalid 2 |
| RangeError : Invalid array length |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 10. newLen >= oldLen, set enumerable: true |
| TypeError : Attempting to change enumerable attribute of unconfigurable property. |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 11. newLen >= oldLen, set enumerable: false |
| length: 5 writable |
| 0,1,2,, |
| |
| |
| 12. newLen >= oldLen, set configurable: true |
| TypeError : Attempting to change configurable attribute of unconfigurable property. |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 13. newLen >= oldLen, set configurable: false |
| length: 5 writable |
| 0,1,2,, |
| |
| |
| 14. newLen >= oldLen, set configurable: false, enumerable: false |
| length: 5 writable |
| 0,1,2,, |
| |
| |
| 15. newLen >= oldLen, set configurable: false, enumerable: true |
| TypeError : Attempting to change enumerable attribute of unconfigurable property. |
| |
| |
| 16. newLen >= oldLen, set writable: true |
| length: 5 writable |
| 0,1,2,, |
| 0,1,2,,,,,,, |
| |
| |
| 17. newLen >= oldLen, set writable: false |
| length: 5 |
| 0,1,2,, |
| 0,1,2,, |
| |
| |
| 18. newLen < oldLen, oldLen writable: false |
| TypeError : Attempting to change writable attribute of unconfigurable property. |
| length: 3 |
| 0,1,2 |
| 0,1,2 |
| |
| |
| 19. newLen < oldLen, set enumerable: true |
| TypeError : Attempting to change enumerable attribute of unconfigurable property. |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 20. newLen < oldLen, set configurable: true |
| TypeError : Attempting to change configurable attribute of unconfigurable property. |
| length: 3 writable |
| 0,1,2 |
| |
| |
| 21. newLen < oldLen, set writable: true |
| length: 2 writable |
| 0,1 |
| 0,1,,,,,,,, |
| |
| |
| 22. newLen < oldLen, set writable: false |
| length: 2 |
| 0,1 |
| 0,1 |
| |
| |
| 23. newLen < oldLen, set writable: true, an element can't delete |
| 3: 3 enumerable writable |
| TypeError : Unable to delete property. |
| length: 4 writable |
| 0,1,2,3 |
| |
| |
| 24. newLen < oldLen, set writable: false, an element can't delete |
| 3: 3 enumerable writable |
| TypeError : Unable to delete property. |
| length: 4 |
| 0,1,2,3 |
| |
| |
| 25. newLen < oldLen, an accessor can't delete |
| 3: get 3 enumerable |
| TypeError : Unable to delete property. |
| length: 4 |
| 0,1,2,get 3 |
| |
| |
| 26. newLen < oldLen, an element can't delete, newLen == it |
| 3: 3 enumerable writable |
| TypeError : Unable to delete property. |
| length: 4 |
| 0,1,2,3 |
| |
| |
| 27. newLen < oldLen, an element can't delete, but newLen beyond it |
| 3: 3 enumerable writable |
| length: 4 |
| 0,1,2,3 |
| |
| |
| 28. newLen < oldLen, many attributes |
| 0: get0 configurable |
| 1: 1 configurable |
| 2: get2 configurable |
| 3: 3 configurable |
| 4: get4 configurable |
| 5: 5 configurable |
| 6: get6 configurable |
| 7: 7 configurable |
| 8: get8 configurable |
| 9: 9 configurable |
| get8,1,get8,3,get8,5,get8,7,get8,9 |
| length: 4 |
| get8,1,get8,3 |
| 0: get8 configurable |
| 1: 1 configurable |
| 2: get8 configurable |
| 3: 3 configurable |
| 4: undefined |
| 5: undefined |
| 6: undefined |
| 7: undefined |
| 8: undefined |
| 9: undefined |
| |
| |
| 29. newLen < oldLen, many attributes, one cannot delete |
| 0: get0 configurable |
| 1: 1 configurable |
| 2: get2 configurable |
| 3: 3 configurable |
| 4: get4 configurable |
| 5: 5 |
| 6: get6 configurable |
| 7: 7 configurable |
| 8: get8 configurable |
| 9: 9 configurable |
| get8,1,get8,3,get8,5,get8,7,get8,9 |
| TypeError : Unable to delete property. |
| length: 6 |
| get8,1,get8,3,get8,5 |
| 0: get8 configurable |
| 1: 1 configurable |
| 2: get8 configurable |
| 3: 3 configurable |
| 4: get8 configurable |
| 5: 5 |
| 6: undefined |
| 7: undefined |
| 8: undefined |
| 9: undefined |
| |
| |
| 30. newLen < oldLen, many attributes, data item cannot delete |
| get8,1,get8,3,get8,5,get8,7,get8,9,10,11,12,13,14 |
| TypeError : Unable to delete property. |
| length: 15 |
| get8,1,get8,3,get8,5,get8,7,get8,9,10,11,12,13,14 |
| |
| |
| 31. newLen < oldLen, a few attributes, one cannot delete |
| 0,1,2,3,4,5,6,7,8,9 |
| TypeError : Unable to delete property. |
| length: 6 |
| 0,1,2,3,4,5 |
| |
| |
| 32. newLen < oldLen, no attributes, data item cannot delete |
| 0,1,2,3,4,5,6,7,8,9 |
| TypeError : Unable to delete property. |
| length: 10 |
| 0,1,2,3,4,5,6,7,8,9 |
| |
| |
| 33. [[Put]] length: newLen < oldLen, many attributes |
| 0: get0 configurable |
| 1: 1 configurable |
| 2: get2 configurable |
| 3: 3 configurable |
| 4: get4 configurable |
| 5: 5 configurable |
| 6: get6 configurable |
| 7: 7 configurable |
| 8: get8 configurable |
| 9: 9 configurable |
| get8,1,get8,3,get8,5,get8,7,get8,9 |
| length: 4 writable |
| get8,1,get8,3 |
| 0: get8 configurable |
| 1: 1 configurable |
| 2: get8 configurable |
| 3: 3 configurable |
| 4: undefined |
| 5: undefined |
| 6: undefined |
| 7: undefined |
| 8: undefined |
| 9: undefined |
| |
| |
| 34. [[Put]] length: newLen < oldLen, many attributes, one cannot delete |
| 0: get0 configurable |
| 1: 1 configurable |
| 2: get2 configurable |
| 3: 3 configurable |
| 4: get4 configurable |
| 5: 5 |
| 6: get6 configurable |
| 7: 7 configurable |
| 8: get8 configurable |
| 9: 9 configurable |
| get8,1,get8,3,get8,5,get8,7,get8,9 |
| length: 6 writable |
| get8,1,get8,3,get8,5 |
| 0: get8 configurable |
| 1: 1 configurable |
| 2: get8 configurable |
| 3: 3 configurable |
| 4: get8 configurable |
| 5: 5 |
| 6: undefined |
| 7: undefined |
| 8: undefined |
| 9: undefined |
| |
| |
| 35. Add item beyond non-writable length |
| TypeError : Attempting to define numeric property on array with non-writable length property. |
| 0,1,2,3,4,5 |
| |
| |
| 36. Add accessor beyond non-writable length |
| TypeError : Attempting to define numeric property on array with non-writable length property. |
| 0,1,2,3,4,5 |
| |
| |
| 37. SetItem beyond non-writable length |
| 0,1,2,3,4,5 |
| |
| |
| 38. SetItem with name beyond non-writable length |
| 0,1,2,3,4,5 |
| |
| |
| 39. freeze should set length writable: false |
| length: 6 |
| |
| |
| 40. isFrozen should check length writable |
| isFrozen: false |
| isFrozen: true |