diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/commandline/test/browser_gcli_types.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_types.js')
-rw-r--r-- | devtools/client/commandline/test/browser_gcli_types.js | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_types.js b/devtools/client/commandline/test/browser_gcli_types.js new file mode 100644 index 000000000..bbdd73c30 --- /dev/null +++ b/devtools/client/commandline/test/browser_gcli_types.js @@ -0,0 +1,118 @@ +/* + * 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_types.js"); +} + +// var assert = require('../testharness/assert'); +var util = require("gcli/util/util"); + +function forEachType(options, templateTypeSpec, callback) { + var types = options.requisition.system.types; + return util.promiseEach(types.getTypeNames(), function (name) { + var typeSpec = {}; + util.copyProperties(templateTypeSpec, typeSpec); + typeSpec.name = name; + typeSpec.requisition = options.requisition; + + // Provide some basic defaults to help selection/delegate/array work + if (name === "selection") { + typeSpec.data = [ "a", "b" ]; + } + else if (name === "delegate") { + typeSpec.delegateType = function () { + return "string"; + }; + } + else if (name === "array") { + typeSpec.subtype = "string"; + } + else if (name === "remote") { + return; + } + else if (name === "union") { + typeSpec.alternatives = [{ name: "string" }]; + } + else if (options.isRemote) { + if (name === "node" || name === "nodelist") { + return; + } + } + + var type = types.createType(typeSpec); + var reply = callback(type); + return Promise.resolve(reply); + }); +} + +exports.testDefault = function (options) { + return forEachType(options, {}, function (type) { + var context = options.requisition.executionContext; + var blank = type.getBlank(context).value; + + // boolean and array types are exempt from needing undefined blank values + if (type.name === "boolean") { + assert.is(blank, false, "blank boolean is false"); + } + else if (type.name === "array") { + assert.ok(Array.isArray(blank), "blank array is array"); + assert.is(blank.length, 0, "blank array is empty"); + } + else if (type.name === "nodelist") { + assert.ok(typeof blank.item, "function", "blank.item is function"); + assert.is(blank.length, 0, "blank nodelist is empty"); + } + else { + assert.is(blank, undefined, "default defined for " + type.name); + } + }); +}; + +exports.testNullDefault = function (options) { + var context = null; // Is this test still valid with a null context? + + return forEachType(options, { defaultValue: null }, function (type) { + var reply = type.stringify(null, context); + return Promise.resolve(reply).then(function (str) { + assert.is(str, "", "stringify(null) for " + type.name); + }); + }); +}; + +exports.testGetSpec = function (options) { + return forEachType(options, {}, function (type) { + if (type.name === "param") { + return; + } + + var spec = type.getSpec("cmd", "param"); + assert.ok(spec != null, "non null spec for " + type.name); + + var str = JSON.stringify(spec); + assert.ok(str != null, "serializable spec for " + type.name); + + var example = options.requisition.system.types.createType(spec); + assert.ok(example != null, "creatable spec for " + type.name); + }); +}; |