| function shouldBe(actual, expected) |
| { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| { |
| let source = { |
| get x() { |
| delete this.y; |
| return 42; |
| }, |
| y: 42 |
| }; |
| let result = Object.assign({}, source); |
| shouldBe(result.x, 42); |
| shouldBe(result.hasOwnProperty('y'), false); |
| } |
| |
| { |
| let source = { |
| get x() { |
| return 42; |
| }, |
| y: 42 |
| }; |
| var store = 0; |
| let target = { |
| set x(value) { |
| store = value; |
| delete source.y; |
| }, |
| get x() { |
| return store; |
| }, |
| }; |
| let result = Object.assign(target, source); |
| shouldBe(result.x, 42); |
| shouldBe(result.hasOwnProperty('y'), false); |
| } |
| |
| |
| { |
| let source = { |
| get x() { |
| Object.defineProperty(source, 'y', { |
| enumerable: false |
| }); |
| return 42; |
| }, |
| y: 42 |
| }; |
| let result = Object.assign({}, source); |
| shouldBe(result.x, 42); |
| shouldBe(result.hasOwnProperty('y'), false); |
| } |
| |
| { |
| let source = { |
| get x() { |
| return 42; |
| }, |
| y: 42 |
| }; |
| var store = 0; |
| let target = { |
| set x(value) { |
| store = value; |
| Object.defineProperty(source, 'y', { |
| enumerable: false |
| }); |
| }, |
| get x() { |
| return store; |
| }, |
| }; |
| let result = Object.assign(target, source); |
| shouldBe(result.x, 42); |
| shouldBe(result.hasOwnProperty('y'), false); |
| } |