summaryrefslogtreecommitdiffstats
path: root/devtools/client/commandline/test/browser_gcli_tokenize.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_tokenize.js')
-rw-r--r--devtools/client/commandline/test/browser_gcli_tokenize.js290
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");
+};