123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Tests that creating, collapsing and expanding variables in the
- * variables view works as expected.
- */
- const TAB_URL = EXAMPLE_URL + "doc_recursion-stack.html";
- function test() {
- let options = {
- source: TAB_URL,
- line: 1
- };
- initDebugger(TAB_URL, options).then(([aTab,, aPanel]) => {
- let variables = aPanel.panelWin.DebuggerView.Variables;
- let testScope = variables.addScope("test");
- let testVar = testScope.addItem("something");
- let duplVar = testScope.addItem("something");
- info("Scope id: " + testScope.id);
- info("Scope name: " + testScope.name);
- info("Variable id: " + testVar.id);
- info("Variable name: " + testVar.name);
- ok(testScope,
- "Should have created a scope.");
- is(duplVar, testVar,
- "Shouldn't be able to duplicate variables in the same scope.");
- ok(testVar,
- "Should have created a variable.");
- ok(testVar.id.includes("something"),
- "The newly created variable should have the default id set.");
- is(testVar.name, "something",
- "The newly created variable should have the desired name set.");
- ok(!testVar.displayValue,
- "The newly created variable should not have a displayed value yet (1).");
- ok(!testVar.displayValueClassName,
- "The newly created variable should not have a displayed value yet (2).");
- ok(testVar.target,
- "The newly created scope should point to a target node.");
- ok(testVar.target.id.includes("something"),
- "Should have the correct variable id on the element.");
- is(testVar.target.querySelector(".name").getAttribute("value"), "something",
- "Any new variable should have the designated name.");
- is(testVar.target.querySelector(".variables-view-element-details.enum").childNodes.length, 0,
- "Any new variable should have a container with no enumerable child nodes.");
- is(testVar.target.querySelector(".variables-view-element-details.nonenum").childNodes.length, 0,
- "Any new variable should have a container with no non-enumerable child nodes.");
- ok(!testVar.expanded,
- "Any new created scope should be initially collapsed.");
- ok(testVar.visible,
- "Any new created scope should be initially visible.");
- let expandCallbackArg = null;
- let collapseCallbackArg = null;
- let toggleCallbackArg = null;
- let hideCallbackArg = null;
- let showCallbackArg = null;
- testVar.onexpand = aScope => expandCallbackArg = aScope;
- testVar.oncollapse = aScope => collapseCallbackArg = aScope;
- testVar.ontoggle = aScope => toggleCallbackArg = aScope;
- testVar.onhide = aScope => hideCallbackArg = aScope;
- testVar.onshow = aScope => showCallbackArg = aScope;
- testVar.expand();
- ok(testVar.expanded,
- "The testVar shouldn't be collapsed anymore.");
- is(expandCallbackArg, testVar,
- "The expandCallback wasn't called as it should.");
- testVar.collapse();
- ok(!testVar.expanded,
- "The testVar should be collapsed again.");
- is(collapseCallbackArg, testVar,
- "The collapseCallback wasn't called as it should.");
- testVar.expanded = true;
- ok(testVar.expanded,
- "The testVar shouldn't be collapsed anymore.");
- testVar.toggle();
- ok(!testVar.expanded,
- "The testVar should be collapsed again.");
- is(toggleCallbackArg, testVar,
- "The toggleCallback wasn't called as it should.");
- testVar.hide();
- ok(!testVar.visible,
- "The testVar should be invisible after hiding.");
- is(hideCallbackArg, testVar,
- "The hideCallback wasn't called as it should.");
- testVar.show();
- ok(testVar.visible,
- "The testVar should be visible again.");
- is(showCallbackArg, testVar,
- "The showCallback wasn't called as it should.");
- testVar.visible = false;
- ok(!testVar.visible,
- "The testVar should be invisible after hiding.");
- ok(!testVar.expanded,
- "The testVar should remember it is collapsed even if it is hidden.");
- testVar.visible = true;
- ok(testVar.visible,
- "The testVar should be visible after reshowing.");
- ok(!testVar.expanded,
- "The testVar should remember it is collapsed after it is reshown.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testVar.target.querySelector(".name"),
- aPanel.panelWin);
- ok(testVar.expanded,
- "Clicking the testVar name should expand it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testVar.target.querySelector(".name"),
- aPanel.panelWin);
- ok(!testVar.expanded,
- "Clicking again the testVar name should collapse it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testVar.target.querySelector(".arrow"),
- aPanel.panelWin);
- ok(testVar.expanded,
- "Clicking the testVar arrow should expand it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testVar.target.querySelector(".arrow"),
- aPanel.panelWin);
- ok(!testVar.expanded,
- "Clicking again the testVar arrow should collapse it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testVar.target.querySelector(".title"),
- aPanel.panelWin);
- ok(testVar.expanded,
- "Clicking the testVar title should expand it again.");
- testVar.addItem("child", {
- value: {
- type: "object",
- class: "Object"
- }
- });
- let testChild = testVar.get("child");
- ok(testChild,
- "Should have created a child property.");
- ok(testChild.id.includes("child"),
- "The newly created property should have the default id set.");
- is(testChild.name, "child",
- "The newly created property should have the desired name set.");
- is(testChild.displayValue, "Object",
- "The newly created property should not have a displayed value yet (1).");
- is(testChild.displayValueClassName, "token-other",
- "The newly created property should not have a displayed value yet (2).");
- ok(testChild.target,
- "The newly created scope should point to a target node.");
- ok(testChild.target.id.includes("child"),
- "Should have the correct property id on the element.");
- is(testChild.target.querySelector(".name").getAttribute("value"), "child",
- "Any new property should have the designated name.");
- is(testChild.target.querySelector(".variables-view-element-details.enum").childNodes.length, 0,
- "Any new property should have a container with no enumerable child nodes.");
- is(testChild.target.querySelector(".variables-view-element-details.nonenum").childNodes.length, 0,
- "Any new property should have a container with no non-enumerable child nodes.");
- ok(!testChild.expanded,
- "Any new created scope should be initially collapsed.");
- ok(testChild.visible,
- "Any new created scope should be initially visible.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testChild.target.querySelector(".name"),
- aPanel.panelWin);
- ok(testChild.expanded,
- "Clicking the testChild name should expand it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testChild.target.querySelector(".name"),
- aPanel.panelWin);
- ok(!testChild.expanded,
- "Clicking again the testChild name should collapse it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testChild.target.querySelector(".arrow"),
- aPanel.panelWin);
- ok(testChild.expanded,
- "Clicking the testChild arrow should expand it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testChild.target.querySelector(".arrow"),
- aPanel.panelWin);
- ok(!testChild.expanded,
- "Clicking again the testChild arrow should collapse it.");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- testChild.target.querySelector(".title"),
- aPanel.panelWin);
- closeDebuggerAndFinish(aPanel);
- });
- }
|