toolkit/devtools/server/tests/unit/test_functiongrips-01.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:3a05e1b48408
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 var gDebuggee;
5 var gClient;
6 var gThreadClient;
7
8 function run_test()
9 {
10 initTestDebuggerServer();
11 gDebuggee = addTestGlobal("test-grips");
12 gDebuggee.eval(function stopMe(arg1) {
13 debugger;
14 }.toString());
15
16 gClient = new DebuggerClient(DebuggerServer.connectPipe());
17 gClient.connect(function() {
18 attachTestTabAndResume(gClient, "test-grips", function(aResponse, aTabClient, aThreadClient) {
19 gThreadClient = aThreadClient;
20 test_named_function();
21 });
22 });
23 do_test_pending();
24 }
25
26 function test_named_function()
27 {
28 gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) {
29 let args = aPacket.frame.arguments;
30
31 do_check_eq(args[0].class, "Function");
32 do_check_eq(args[0].name, "stopMe");
33 do_check_eq(args[0].displayName, "stopMe");
34
35 let objClient = gThreadClient.pauseGrip(args[0]);
36 objClient.getParameterNames(function(aResponse) {
37 do_check_eq(aResponse.parameterNames.length, 1);
38 do_check_eq(aResponse.parameterNames[0], "arg1");
39
40 gThreadClient.resume(test_inferred_name_function);
41 });
42
43 });
44
45 gDebuggee.eval("stopMe(stopMe)");
46 }
47
48 function test_inferred_name_function() {
49 gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) {
50 let args = aPacket.frame.arguments;
51
52 do_check_eq(args[0].class, "Function");
53 // No name for an anonymous function, but it should have an inferred name.
54 do_check_eq(args[0].name, undefined);
55 do_check_eq(args[0].displayName, "o.m");
56
57 let objClient = gThreadClient.pauseGrip(args[0]);
58 objClient.getParameterNames(function(aResponse) {
59 do_check_eq(aResponse.parameterNames.length, 3);
60 do_check_eq(aResponse.parameterNames[0], "foo");
61 do_check_eq(aResponse.parameterNames[1], "bar");
62 do_check_eq(aResponse.parameterNames[2], "baz");
63
64 gThreadClient.resume(test_anonymous_function);
65 });
66 });
67
68 gDebuggee.eval("var o = { m: function(foo, bar, baz) { } }; stopMe(o.m)");
69 }
70
71 function test_anonymous_function() {
72 gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) {
73 let args = aPacket.frame.arguments;
74
75 do_check_eq(args[0].class, "Function");
76 // No name for an anonymous function, and no inferred name, either.
77 do_check_eq(args[0].name, undefined);
78 do_check_eq(args[0].displayName, undefined);
79
80 let objClient = gThreadClient.pauseGrip(args[0]);
81 objClient.getParameterNames(function(aResponse) {
82 do_check_eq(aResponse.parameterNames.length, 3);
83 do_check_eq(aResponse.parameterNames[0], "foo");
84 do_check_eq(aResponse.parameterNames[1], "bar");
85 do_check_eq(aResponse.parameterNames[2], "baz");
86
87 gThreadClient.resume(function() {
88 finishClient(gClient);
89 });
90 });
91 });
92
93 gDebuggee.eval("stopMe(function(foo, bar, baz) { })");
94 }
95

mercurial