blob: 06123b8dc2796b492696de37e840432c7af4a545 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00005// Flags: --harmony-object-observe
Ben Murdochb8a8cc12014-11-26 15:28:44 +00006// Flags: --expose-debug-as debug
7
8Debug = debug.Debug;
9
10var base_id = -1;
11var exception = null;
12var expected = [
13 "enqueue #1",
14 "willHandle #1",
15 "didHandle #1",
16];
17
18function 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
27function 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
41Debug.setListener(listener);
42
43var obj = {};
44Object.observe(obj, function(changes) {
45 print(change.type + " " + change.name + " " + change.oldValue);
46});
47
48obj.foo = 1;
49obj.zoo = 2;
50obj.foo = 3;
51
52assertNull(exception);