| Index: test/mjsunit/harmony/object-observe.js
|
| diff --git a/test/mjsunit/harmony/object-observe.js b/test/mjsunit/harmony/object-observe.js
|
| index ba855868c78bbbd60f3128f7e38df54d89caaa18..6a0fc0dfea131f367345a1ac15ec858243377431 100644
|
| --- a/test/mjsunit/harmony/object-observe.js
|
| +++ b/test/mjsunit/harmony/object-observe.js
|
| @@ -282,3 +282,44 @@ observer.assertCallbackRecords([
|
| { object: obj, name: "a", type: "reconfigured" },
|
| { object: obj, name: "a", type: "updated", oldValue: 9 },
|
| ]);
|
| +
|
| +// Observing indexed properties.
|
| +reset();
|
| +var obj = {'1': 1}
|
| +Object.observe(obj, observer.callback);
|
| +obj[1] = 2;
|
| +obj[1] = 3;
|
| +delete obj[1];
|
| +obj[1] = 4;
|
| +obj[1] = 4; // ignored
|
| +obj[1] = 5;
|
| +Object.defineProperty(obj, "1", {value: 6});
|
| +Object.defineProperty(obj, "1", {writable: false});
|
| +obj[1] = 7; // ignored
|
| +Object.defineProperty(obj, "1", {value: 8});
|
| +Object.defineProperty(obj, "1", {value: 7, writable: true});
|
| +Object.defineProperty(obj, "1", {get: function() {}});
|
| +delete obj[1];
|
| +delete obj[1];
|
| +Object.defineProperty(obj, "1", {get: function() {}, configurable: true});
|
| +Object.defineProperty(obj, "1", {value: 9, writable: true});
|
| +obj[1] = 10;
|
| +Object.deliverChangeRecords(observer.callback);
|
| +observer.assertCallbackRecords([
|
| + { object: obj, name: "1", type: "updated", oldValue: 1 },
|
| + { object: obj, name: "1", type: "updated", oldValue: 2 },
|
| + { object: obj, name: "1", type: "deleted", oldValue: 3 },
|
| + { object: obj, name: "1", type: "new" },
|
| + { object: obj, name: "1", type: "updated", oldValue: 4 },
|
| + { object: obj, name: "1", type: "updated", oldValue: 5 },
|
| + { object: obj, name: "1", type: "reconfigured", oldValue: 6 },
|
| + { object: obj, name: "1", type: "updated", oldValue: 6 },
|
| + { object: obj, name: "1", type: "reconfigured", oldValue: 8 },
|
| + { object: obj, name: "1", type: "reconfigured", oldValue: 7 },
|
| + // TODO(observe): oldValue should not be present below.
|
| + { object: obj, name: "1", type: "deleted", oldValue: undefined },
|
| + { object: obj, name: "1", type: "new" },
|
| + // TODO(observe): oldValue should be absent below, and type = "reconfigured".
|
| + { object: obj, name: "1", type: "updated", oldValue: undefined },
|
| + { object: obj, name: "1", type: "updated", oldValue: 9 },
|
| +]);
|
|
|