diff options
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_tokenize.js')
-rw-r--r-- | devtools/client/commandline/test/browser_gcli_tokenize.js | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_tokenize.js b/devtools/client/commandline/test/browser_gcli_tokenize.js new file mode 100644 index 000000000..d66b66e05 --- /dev/null +++ b/devtools/client/commandline/test/browser_gcli_tokenize.js @@ -0,0 +1,290 @@ +/* + * 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_tokenize.js"); +} + +// var assert = require('../testharness/assert'); +var cli = require("gcli/cli"); + +exports.testBlanks = function (options) { + var args; + + args = cli.tokenize(""); + assert.is(args.length, 1); + assert.is(args[0].text, ""); + assert.is(args[0].prefix, ""); + assert.is(args[0].suffix, ""); + + args = cli.tokenize(" "); + assert.is(args.length, 1); + assert.is(args[0].text, ""); + assert.is(args[0].prefix, " "); + assert.is(args[0].suffix, ""); +}; + +exports.testTokSimple = function (options) { + var args; + + args = cli.tokenize("s"); + assert.is(args.length, 1); + assert.is(args[0].text, "s"); + assert.is(args[0].prefix, ""); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "Argument"); + + args = cli.tokenize("s s"); + assert.is(args.length, 2); + assert.is(args[0].text, "s"); + assert.is(args[0].prefix, ""); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "Argument"); + assert.is(args[1].text, "s"); + assert.is(args[1].prefix, " "); + assert.is(args[1].suffix, ""); + assert.is(args[1].type, "Argument"); +}; + +exports.testJavascript = function (options) { + var args; + + args = cli.tokenize("{x}"); + assert.is(args.length, 1); + assert.is(args[0].text, "x"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{ x }"); + assert.is(args.length, 1); + assert.is(args[0].text, "x"); + assert.is(args[0].prefix, "{ "); + assert.is(args[0].suffix, " }"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{x} {y}"); + assert.is(args.length, 2); + assert.is(args[0].text, "x"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + assert.is(args[1].text, "y"); + assert.is(args[1].prefix, " {"); + assert.is(args[1].suffix, "}"); + assert.is(args[1].type, "ScriptArgument"); + + args = cli.tokenize("{x}{y}"); + assert.is(args.length, 2); + assert.is(args[0].text, "x"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + assert.is(args[1].text, "y"); + assert.is(args[1].prefix, "{"); + assert.is(args[1].suffix, "}"); + assert.is(args[1].type, "ScriptArgument"); + + args = cli.tokenize("{"); + assert.is(args.length, 1); + assert.is(args[0].text, ""); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{ "); + assert.is(args.length, 1); + assert.is(args[0].text, ""); + assert.is(args[0].prefix, "{ "); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{x"); + assert.is(args.length, 1); + assert.is(args[0].text, "x"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "ScriptArgument"); +}; + +exports.testRegularNesting = function (options) { + var args; + + args = cli.tokenize('{"x"}'); + assert.is(args.length, 1); + assert.is(args[0].text, '"x"'); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{'x'}"); + assert.is(args.length, 1); + assert.is(args[0].text, "'x'"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize('"{x}"'); + assert.is(args.length, 1); + assert.is(args[0].text, "{x}"); + assert.is(args[0].prefix, '"'); + assert.is(args[0].suffix, '"'); + assert.is(args[0].type, "Argument"); + + args = cli.tokenize("'{x}'"); + assert.is(args.length, 1); + assert.is(args[0].text, "{x}"); + assert.is(args[0].prefix, "'"); + assert.is(args[0].suffix, "'"); + assert.is(args[0].type, "Argument"); +}; + +exports.testDeepNesting = function (options) { + var args; + + args = cli.tokenize("{{}}"); + assert.is(args.length, 1); + assert.is(args[0].text, "{}"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{{x} {y}}"); + assert.is(args.length, 1); + assert.is(args[0].text, "{x} {y}"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + args = cli.tokenize("{{w} {{{x}}}} {y} {{{z}}}"); + + assert.is(args.length, 3); + + assert.is(args[0].text, "{w} {{{x}}}"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + assert.is(args[1].text, "y"); + assert.is(args[1].prefix, " {"); + assert.is(args[1].suffix, "}"); + assert.is(args[1].type, "ScriptArgument"); + + assert.is(args[2].text, "{{z}}"); + assert.is(args[2].prefix, " {"); + assert.is(args[2].suffix, "}"); + assert.is(args[2].type, "ScriptArgument"); + + args = cli.tokenize("{{w} {{{x}}} {y} {{{z}}}"); + + assert.is(args.length, 1); + + assert.is(args[0].text, "{w} {{{x}}} {y} {{{z}}}"); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "ScriptArgument"); +}; + +exports.testStrangeNesting = function (options) { + var args; + + // Note: When we get real JS parsing this should break + args = cli.tokenize('{"x}"}'); + + assert.is(args.length, 2); + + assert.is(args[0].text, '"x'); + assert.is(args[0].prefix, "{"); + assert.is(args[0].suffix, "}"); + assert.is(args[0].type, "ScriptArgument"); + + assert.is(args[1].text, "}"); + assert.is(args[1].prefix, '"'); + assert.is(args[1].suffix, ""); + assert.is(args[1].type, "Argument"); +}; + +exports.testComplex = function (options) { + var args; + + args = cli.tokenize(" 1234 '12 34'"); + + assert.is(args.length, 2); + + assert.is(args[0].text, "1234"); + assert.is(args[0].prefix, " "); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "Argument"); + + assert.is(args[1].text, "12 34"); + assert.is(args[1].prefix, " '"); + assert.is(args[1].suffix, "'"); + assert.is(args[1].type, "Argument"); + + args = cli.tokenize('12\'34 "12 34" \\'); // 12'34 "12 34" \ + + assert.is(args.length, 3); + + assert.is(args[0].text, "12'34"); + assert.is(args[0].prefix, ""); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "Argument"); + + assert.is(args[1].text, "12 34"); + assert.is(args[1].prefix, ' "'); + assert.is(args[1].suffix, '"'); + assert.is(args[1].type, "Argument"); + + assert.is(args[2].text, "\\"); + assert.is(args[2].prefix, " "); + assert.is(args[2].suffix, ""); + assert.is(args[2].type, "Argument"); +}; + +exports.testPathological = function (options) { + var args; + + args = cli.tokenize('a\\ b \\t\\n\\r \\\'x\\\" \'d'); // a_b \t\n\r \'x\" 'd + + assert.is(args.length, 4); + + assert.is(args[0].text, "a\\ b"); + assert.is(args[0].prefix, ""); + assert.is(args[0].suffix, ""); + assert.is(args[0].type, "Argument"); + + assert.is(args[1].text, "\\t\\n\\r"); + assert.is(args[1].prefix, " "); + assert.is(args[1].suffix, ""); + assert.is(args[1].type, "Argument"); + + assert.is(args[2].text, '\\\'x\\"'); + assert.is(args[2].prefix, " "); + assert.is(args[2].suffix, ""); + assert.is(args[2].type, "Argument"); + + assert.is(args[3].text, "d"); + assert.is(args[3].prefix, " '"); + assert.is(args[3].suffix, ""); + assert.is(args[3].type, "Argument"); +}; |