Index: test/mjsunit/harmony/object-observe.js |
diff --git a/test/mjsunit/harmony/object-observe.js b/test/mjsunit/harmony/object-observe.js |
index f94ab75e9a84d2cf0d819510782b23a660057bcc..2b4f8067364fb7f4608da79db9f0469fec6ca3bd 100644 |
--- a/test/mjsunit/harmony/object-observe.js |
+++ b/test/mjsunit/harmony/object-observe.js |
@@ -300,8 +300,79 @@ observer.assertCallbackRecords([ |
{ object: obj, type: 'deleted', name: '', oldValue: ' ' }, |
]); |
+// Object.preventExtensions |
+reset(); |
+var obj = { foo: 'bar '}; |
arv (Not doing code reviews)
2013/10/29 21:58:18
bar' }
instead of
bar '}
rafaelw
2013/10/30 17:54:37
good catch. done.
On 2013/10/29 21:58:18, arv wro
|
+Object.observe(obj, observer.callback); |
+obj.baz = 'bat'; |
+Object.preventExtensions(obj); |
+ |
+Object.deliverChangeRecords(observer.callback); |
+observer.assertCallbackRecords([ |
+ { object: obj, type: 'new', name: 'baz' }, |
+ { object: obj, type: 'preventExtensions' }, |
+]); |
+ |
+// Object.freeze |
+reset(); |
+var obj = { a: 'a' }; |
+Object.defineProperty(obj, 'b', { |
+ writable: false, |
+ configurable: true, |
+ value: 'b' |
+}); |
+Object.defineProperty(obj, 'c', { |
+ writable: true, |
+ configurable: false, |
+ value: 'c' |
+}); |
+Object.defineProperty(obj, 'd', { |
+ writable: false, |
+ configurable: false, |
+ value: 'd' |
+}); |
+Object.observe(obj, observer.callback); |
+Object.freeze(obj); |
+ |
+Object.deliverChangeRecords(observer.callback); |
+observer.assertCallbackRecords([ |
+ { object: obj, type: 'reconfigured', name: 'a' }, |
+ { object: obj, type: 'reconfigured', name: 'b' }, |
+ { object: obj, type: 'reconfigured', name: 'c' }, |
+ { object: obj, type: 'preventExtensions' }, |
+]); |
+ |
+// Object.seal |
+reset(); |
+var obj = { a: 'a' }; |
+Object.defineProperty(obj, 'b', { |
+ writable: false, |
+ configurable: true, |
+ value: 'b' |
+}); |
+Object.defineProperty(obj, 'c', { |
+ writable: true, |
+ configurable: false, |
+ value: 'c' |
+}); |
+Object.defineProperty(obj, 'd', { |
+ writable: false, |
+ configurable: false, |
+ value: 'd' |
+}); |
+Object.observe(obj, observer.callback); |
+Object.seal(obj); |
+ |
+Object.deliverChangeRecords(observer.callback); |
+observer.assertCallbackRecords([ |
+ { object: obj, type: 'reconfigured', name: 'a' }, |
+ { object: obj, type: 'reconfigured', name: 'b' }, |
+ { object: obj, type: 'preventExtensions' }, |
+]); |
+ |
// Observing a continuous stream of changes, while itermittantly unobserving. |
reset(); |
+var obj = {}; |
Object.observe(obj, observer.callback); |
Object.getNotifier(obj).notify({ |
type: 'updated', |