Home | History | Annotate | Download | only in es7
      1 // Copyright 2014 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --harmony-object-observe
      6 // Flags: --expose-debug-as debug
      7 
      8 Debug = debug.Debug;
      9 
     10 var base_id = -1;
     11 var exception = null;
     12 var expected = [
     13   "enqueue #1",
     14   "willHandle #1",
     15   "didHandle #1",
     16 ];
     17 
     18 function assertLog(msg) {
     19   print(msg);
     20   assertTrue(expected.length > 0);
     21   assertEquals(expected.shift(), msg);
     22   if (!expected.length) {
     23     Debug.setListener(null);
     24   }
     25 }
     26 
     27 function listener(event, exec_state, event_data, data) {
     28   if (event != Debug.DebugEvent.AsyncTaskEvent) return;
     29   try {
     30     if (base_id < 0)
     31       base_id = event_data.id();
     32     var id = event_data.id() - base_id + 1;
     33     assertEquals("Object.observe", event_data.name());
     34     assertLog(event_data.type() + " #" + id);
     35   } catch (e) {
     36     print(e + e.stack)
     37     exception = e;
     38   }
     39 }
     40 
     41 Debug.setListener(listener);
     42 
     43 var obj = {};
     44 Object.observe(obj, function(changes) {
     45   print(change.type + " " + change.name + " " + change.oldValue);
     46 });
     47 
     48 obj.foo = 1;
     49 obj.zoo = 2;
     50 obj.foo = 3;
     51 
     52 assertNull(exception);
     53