summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js')
-rw-r--r--js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js b/js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js
new file mode 100644
index 0000000000..f87a0abc13
--- /dev/null
+++ b/js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js
@@ -0,0 +1,26 @@
+// Smoke tests for bound function things.
+
+var g = newGlobal({newCompartment: true});
+var dbg = new Debugger;
+var gw = dbg.addDebuggee(g);
+var arrw = gw.executeInGlobal("var arr = []; arr;").return;
+var pushw = gw.executeInGlobal("var push = arr.push.bind(arr); push;").return;
+assertEq(pushw.isBoundFunction, true);
+assertEq(pushw.boundThis, arrw);
+assertEq(pushw.boundArguments.length, 0);
+
+var arr2 = gw.executeInGlobal("var arr2 = []; arr2").return;
+assertEq(pushw.call(arr2, "tuesday").return, 1);
+g.eval("assertEq(arr.length, 1);");
+g.eval("assertEq(arr[0], 'tuesday');");
+g.eval("assertEq(arr2.length, 0);");
+
+g.eval("push = arr.push.bind(arr, 1, 'seven', {x: 'q'});");
+pushw = gw.getOwnPropertyDescriptor("push").value;
+assertEq(pushw.isBoundFunction, true);
+var args = pushw.boundArguments;
+assertEq(args.length, 3);
+assertEq(args[0], 1);
+assertEq(args[1], 'seven');
+assertEq(args[2] instanceof Debugger.Object, true);
+assertEq(args[2].getOwnPropertyDescriptor("x").value, "q");