diff options
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_canon.js')
-rw-r--r-- | devtools/client/commandline/test/browser_gcli_canon.js | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_canon.js b/devtools/client/commandline/test/browser_gcli_canon.js new file mode 100644 index 000000000..807244505 --- /dev/null +++ b/devtools/client/commandline/test/browser_gcli_canon.js @@ -0,0 +1,286 @@ +/* + * Copyright 2012, Mozilla Foundation and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +"use strict"; + +// THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT +// PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT + +const exports = {}; + +function test() { + helpers.runTestModule(exports, "browser_gcli_canon.js"); +} + +// var assert = require('../testharness/assert'); +// var helpers = require('./helpers'); +var Commands = require("gcli/commands/commands").Commands; + +var startCount; +var events; + +var commandsChange = function (ev) { + events++; +}; + +exports.setup = function (options) { + startCount = options.requisition.system.commands.getAll().length; + events = 0; +}; + +exports.shutdown = function (options) { + startCount = undefined; + events = undefined; +}; + +exports.testAddRemove1 = function (options) { + var commands = options.requisition.system.commands; + + return helpers.audit(options, [ + { + name: "testadd add", + setup: function () { + commands.onCommandsChange.add(commandsChange); + + commands.add({ + name: "testadd", + exec: function () { + return 1; + } + }); + + assert.is(commands.getAll().length, + startCount + 1, + "add command success"); + assert.is(events, 1, "add event"); + + return helpers.setInput(options, "testadd"); + }, + check: { + input: "testadd", + hints: "", + markup: "VVVVVVV", + cursor: 7, + current: "__command", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { } + }, + exec: { + output: /^1$/ + } + }, + { + name: "testadd alter", + setup: function () { + commands.add({ + name: "testadd", + exec: function () { + return 2; + } + }); + + assert.is(commands.getAll().length, + startCount + 1, + "read command success"); + assert.is(events, 2, "read event"); + + return helpers.setInput(options, "testadd"); + }, + check: { + input: "testadd", + hints: "", + markup: "VVVVVVV", + }, + exec: { + output: "2" + } + }, + { + name: "testadd remove", + setup: function () { + commands.remove("testadd"); + + assert.is(commands.getAll().length, + startCount, + "remove command success"); + assert.is(events, 3, "remove event"); + + return helpers.setInput(options, "testadd"); + }, + check: { + typed: "testadd", + cursor: 7, + current: "__command", + status: "ERROR", + unassigned: [ ], + } + } + ]); +}; + +exports.testAddRemove2 = function (options) { + var commands = options.requisition.system.commands; + + commands.add({ + name: "testadd", + exec: function () { + return 3; + } + }); + + assert.is(commands.getAll().length, + startCount + 1, + "rereadd command success"); + assert.is(events, 4, "rereadd event"); + + return helpers.audit(options, [ + { + setup: "testadd", + exec: { + output: /^3$/ + }, + post: function () { + commands.remove({ + name: "testadd" + }); + + assert.is(commands.getAll().length, + startCount, + "reremove command success"); + assert.is(events, 5, "reremove event"); + } + }, + { + setup: "testadd", + check: { + typed: "testadd", + status: "ERROR" + } + } + ]); +}; + +exports.testAddRemove3 = function (options) { + var commands = options.requisition.system.commands; + + commands.remove({ name: "nonexistant" }); + assert.is(commands.getAll().length, + startCount, + "nonexistant1 command success"); + assert.is(events, 5, "nonexistant1 event"); + + commands.remove("nonexistant"); + assert.is(commands.getAll().length, + startCount, + "nonexistant2 command success"); + assert.is(events, 5, "nonexistant2 event"); + + commands.onCommandsChange.remove(commandsChange); +}; + +exports.testAltCommands = function (options) { + var commands = options.requisition.system.commands; + var altCommands = new Commands(options.requisition.system.types); + + var tss = { + name: "tss", + params: [ + { name: "str", type: "string" }, + { name: "num", type: "number" }, + { name: "opt", type: { name: "selection", data: [ "1", "2", "3" ] } }, + ], + customProp1: "localValue", + customProp2: true, + customProp3: 42, + exec: function (args, context) { + return context.commandName + ":" + + args.str + ":" + args.num + ":" + args.opt; + } + }; + altCommands.add(tss); + + var commandSpecs = altCommands.getCommandSpecs(); + assert.is(JSON.stringify(commandSpecs), + '[{"item":"command","name":"tss","params":[' + + '{"name":"str","type":"string"},' + + '{"name":"num","type":"number"},' + + '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' + + '],"isParent":false}]', + "JSON.stringify(commandSpecs)"); + + var customProps = [ "customProp1", "customProp2", "customProp3", ]; + var commandSpecs2 = altCommands.getCommandSpecs(customProps); + assert.is(JSON.stringify(commandSpecs2), + "[{" + + '"item":"command",' + + '"name":"tss",' + + '"params":[' + + '{"name":"str","type":"string"},' + + '{"name":"num","type":"number"},' + + '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' + + "]," + + '"isParent":false,' + + '"customProp1":"localValue",' + + '"customProp2":true,' + + '"customProp3":42' + + "}]", + "JSON.stringify(commandSpecs)"); + + var remoter = function (args, context) { + assert.is(context.commandName, "tss", "commandName is tss"); + + var cmd = altCommands.get(context.commandName); + return cmd.exec(args, context); + }; + + commands.addProxyCommands(commandSpecs, remoter, "proxy", "test"); + + var parent = commands.get("proxy"); + assert.is(parent.name, "proxy", "Parent command called proxy"); + + var child = commands.get("proxy tss"); + assert.is(child.name, "proxy tss", "child command called proxy tss"); + + return helpers.audit(options, [ + { + setup: "proxy tss foo 6 3", + check: { + input: "proxy tss foo 6 3", + hints: "", + markup: "VVVVVVVVVVVVVVVVV", + cursor: 17, + status: "VALID", + args: { + str: { value: "foo", status: "VALID" }, + num: { value: 6, status: "VALID" }, + opt: { value: "3", status: "VALID" } + } + }, + exec: { + output: "tss:foo:6:3" + }, + post: function () { + commands.remove("proxy"); + commands.remove("proxy tss"); + + assert.is(commands.get("proxy"), undefined, "remove proxy"); + assert.is(commands.get("proxy tss"), undefined, "remove proxy tss"); + } + } + ]); +}; |