Files
UXP-Fixed/devtools/client/commandline/test/browser_gcli_canon.js
T
2018-02-02 04:16:08 -05:00

287 lines
7.5 KiB
JavaScript

/*
* 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");
}
}
]);
};