| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| Object.defineProperty(Array.prototype, '0', { |
| get() { |
| throw new Error('out'); |
| }, |
| set(value) { |
| throw new Error('out'); |
| } |
| }); |
| |
| { |
| let object = { |
| a: 42, |
| b: 42, |
| c: 42 |
| }; |
| { |
| let result = Object.keys(object); |
| shouldBe(JSON.stringify(result), `["a","b","c"]`); |
| } |
| { |
| let result = Object.values(object); |
| shouldBe(JSON.stringify(result), `[42,42,42]`); |
| } |
| } |
| { |
| let object = { |
| [Symbol.iterator]: 42, |
| b: 42, |
| c: 42 |
| }; |
| { |
| let result = Object.getOwnPropertyNames(object); |
| shouldBe(JSON.stringify(result), `["b","c"]`); |
| } |
| { |
| let result = Object.getOwnPropertySymbols(object); |
| shouldBe(result.length, 1); |
| shouldBe(result[0], Symbol.iterator); |
| } |
| } |