browser/devtools/commandline/test/browser_gcli_tokenize.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /*
     2  * Copyright 2012, Mozilla Foundation and contributors
     3  *
     4  * Licensed under the Apache License, Version 2.0 (the "License");
     5  * you may not use this file except in compliance with the License.
     6  * You may obtain a copy of the License at
     7  *
     8  * http://www.apache.org/licenses/LICENSE-2.0
     9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    17 'use strict';
    18 // <INJECTED SOURCE:START>
    20 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
    21 // DO NOT EDIT IT DIRECTLY
    23 var exports = {};
    25 var TEST_URI = "data:text/html;charset=utf-8,<p id='gcli-input'>gcli-testTokenize.js</p>";
    27 function test() {
    28   return Task.spawn(function() {
    29     let options = yield helpers.openTab(TEST_URI);
    30     yield helpers.openToolbar(options);
    31     gcli.addItems(mockCommands.items);
    33     yield helpers.runTests(options, exports);
    35     gcli.removeItems(mockCommands.items);
    36     yield helpers.closeToolbar(options);
    37     yield helpers.closeTab(options);
    38   }).then(finish, helpers.handleError);
    39 }
    41 // <INJECTED SOURCE:END>
    43 // var assert = require('../testharness/assert');
    44 var cli = require('gcli/cli');
    46 exports.testBlanks = function(options) {
    47   var args;
    49   args = cli.tokenize('');
    50   assert.is(args.length, 1);
    51   assert.is(args[0].text, '');
    52   assert.is(args[0].prefix, '');
    53   assert.is(args[0].suffix, '');
    55   args = cli.tokenize(' ');
    56   assert.is(args.length, 1);
    57   assert.is(args[0].text, '');
    58   assert.is(args[0].prefix, ' ');
    59   assert.is(args[0].suffix, '');
    60 };
    62 exports.testTokSimple = function(options) {
    63   var args;
    65   args = cli.tokenize('s');
    66   assert.is(args.length, 1);
    67   assert.is(args[0].text, 's');
    68   assert.is(args[0].prefix, '');
    69   assert.is(args[0].suffix, '');
    70   assert.is(args[0].type, 'Argument');
    72   args = cli.tokenize('s s');
    73   assert.is(args.length, 2);
    74   assert.is(args[0].text, 's');
    75   assert.is(args[0].prefix, '');
    76   assert.is(args[0].suffix, '');
    77   assert.is(args[0].type, 'Argument');
    78   assert.is(args[1].text, 's');
    79   assert.is(args[1].prefix, ' ');
    80   assert.is(args[1].suffix, '');
    81   assert.is(args[1].type, 'Argument');
    82 };
    84 exports.testJavascript = function(options) {
    85   var args;
    87   args = cli.tokenize('{x}');
    88   assert.is(args.length, 1);
    89   assert.is(args[0].text, 'x');
    90   assert.is(args[0].prefix, '{');
    91   assert.is(args[0].suffix, '}');
    92   assert.is(args[0].type, 'ScriptArgument');
    94   args = cli.tokenize('{ x }');
    95   assert.is(args.length, 1);
    96   assert.is(args[0].text, 'x');
    97   assert.is(args[0].prefix, '{ ');
    98   assert.is(args[0].suffix, ' }');
    99   assert.is(args[0].type, 'ScriptArgument');
   101   args = cli.tokenize('{x} {y}');
   102   assert.is(args.length, 2);
   103   assert.is(args[0].text, 'x');
   104   assert.is(args[0].prefix, '{');
   105   assert.is(args[0].suffix, '}');
   106   assert.is(args[0].type, 'ScriptArgument');
   107   assert.is(args[1].text, 'y');
   108   assert.is(args[1].prefix, ' {');
   109   assert.is(args[1].suffix, '}');
   110   assert.is(args[1].type, 'ScriptArgument');
   112   args = cli.tokenize('{x}{y}');
   113   assert.is(args.length, 2);
   114   assert.is(args[0].text, 'x');
   115   assert.is(args[0].prefix, '{');
   116   assert.is(args[0].suffix, '}');
   117   assert.is(args[0].type, 'ScriptArgument');
   118   assert.is(args[1].text, 'y');
   119   assert.is(args[1].prefix, '{');
   120   assert.is(args[1].suffix, '}');
   121   assert.is(args[1].type, 'ScriptArgument');
   123   args = cli.tokenize('{');
   124   assert.is(args.length, 1);
   125   assert.is(args[0].text, '');
   126   assert.is(args[0].prefix, '{');
   127   assert.is(args[0].suffix, '');
   128   assert.is(args[0].type, 'ScriptArgument');
   130   args = cli.tokenize('{ ');
   131   assert.is(args.length, 1);
   132   assert.is(args[0].text, '');
   133   assert.is(args[0].prefix, '{ ');
   134   assert.is(args[0].suffix, '');
   135   assert.is(args[0].type, 'ScriptArgument');
   137   args = cli.tokenize('{x');
   138   assert.is(args.length, 1);
   139   assert.is(args[0].text, 'x');
   140   assert.is(args[0].prefix, '{');
   141   assert.is(args[0].suffix, '');
   142   assert.is(args[0].type, 'ScriptArgument');
   143 };
   145 exports.testRegularNesting = function(options) {
   146   var args;
   148   args = cli.tokenize('{"x"}');
   149   assert.is(args.length, 1);
   150   assert.is(args[0].text, '"x"');
   151   assert.is(args[0].prefix, '{');
   152   assert.is(args[0].suffix, '}');
   153   assert.is(args[0].type, 'ScriptArgument');
   155   args = cli.tokenize('{\'x\'}');
   156   assert.is(args.length, 1);
   157   assert.is(args[0].text, '\'x\'');
   158   assert.is(args[0].prefix, '{');
   159   assert.is(args[0].suffix, '}');
   160   assert.is(args[0].type, 'ScriptArgument');
   162   args = cli.tokenize('"{x}"');
   163   assert.is(args.length, 1);
   164   assert.is(args[0].text, '{x}');
   165   assert.is(args[0].prefix, '"');
   166   assert.is(args[0].suffix, '"');
   167   assert.is(args[0].type, 'Argument');
   169   args = cli.tokenize('\'{x}\'');
   170   assert.is(args.length, 1);
   171   assert.is(args[0].text, '{x}');
   172   assert.is(args[0].prefix, '\'');
   173   assert.is(args[0].suffix, '\'');
   174   assert.is(args[0].type, 'Argument');
   175 };
   177 exports.testDeepNesting = function(options) {
   178   var args;
   180   args = cli.tokenize('{{}}');
   181   assert.is(args.length, 1);
   182   assert.is(args[0].text, '{}');
   183   assert.is(args[0].prefix, '{');
   184   assert.is(args[0].suffix, '}');
   185   assert.is(args[0].type, 'ScriptArgument');
   187   args = cli.tokenize('{{x} {y}}');
   188   assert.is(args.length, 1);
   189   assert.is(args[0].text, '{x} {y}');
   190   assert.is(args[0].prefix, '{');
   191   assert.is(args[0].suffix, '}');
   192   assert.is(args[0].type, 'ScriptArgument');
   194   args = cli.tokenize('{{w} {{{x}}}} {y} {{{z}}}');
   196   assert.is(args.length, 3);
   198   assert.is(args[0].text, '{w} {{{x}}}');
   199   assert.is(args[0].prefix, '{');
   200   assert.is(args[0].suffix, '}');
   201   assert.is(args[0].type, 'ScriptArgument');
   203   assert.is(args[1].text, 'y');
   204   assert.is(args[1].prefix, ' {');
   205   assert.is(args[1].suffix, '}');
   206   assert.is(args[1].type, 'ScriptArgument');
   208   assert.is(args[2].text, '{{z}}');
   209   assert.is(args[2].prefix, ' {');
   210   assert.is(args[2].suffix, '}');
   211   assert.is(args[2].type, 'ScriptArgument');
   213   args = cli.tokenize('{{w} {{{x}}} {y} {{{z}}}');
   215   assert.is(args.length, 1);
   217   assert.is(args[0].text, '{w} {{{x}}} {y} {{{z}}}');
   218   assert.is(args[0].prefix, '{');
   219   assert.is(args[0].suffix, '');
   220   assert.is(args[0].type, 'ScriptArgument');
   221 };
   223 exports.testStrangeNesting = function(options) {
   224   var args;
   226   // Note: When we get real JS parsing this should break
   227   args = cli.tokenize('{"x}"}');
   229   assert.is(args.length, 2);
   231   assert.is(args[0].text, '"x');
   232   assert.is(args[0].prefix, '{');
   233   assert.is(args[0].suffix, '}');
   234   assert.is(args[0].type, 'ScriptArgument');
   236   assert.is(args[1].text, '}');
   237   assert.is(args[1].prefix, '"');
   238   assert.is(args[1].suffix, '');
   239   assert.is(args[1].type, 'Argument');
   240 };
   242 exports.testComplex = function(options) {
   243   var args;
   245   args = cli.tokenize(' 1234  \'12 34\'');
   247   assert.is(args.length, 2);
   249   assert.is(args[0].text, '1234');
   250   assert.is(args[0].prefix, ' ');
   251   assert.is(args[0].suffix, '');
   252   assert.is(args[0].type, 'Argument');
   254   assert.is(args[1].text, '12 34');
   255   assert.is(args[1].prefix, '  \'');
   256   assert.is(args[1].suffix, '\'');
   257   assert.is(args[1].type, 'Argument');
   259   args = cli.tokenize('12\'34 "12 34" \\'); // 12'34 "12 34" \
   261   assert.is(args.length, 3);
   263   assert.is(args[0].text, '12\'34');
   264   assert.is(args[0].prefix, '');
   265   assert.is(args[0].suffix, '');
   266   assert.is(args[0].type, 'Argument');
   268   assert.is(args[1].text, '12 34');
   269   assert.is(args[1].prefix, ' "');
   270   assert.is(args[1].suffix, '"');
   271   assert.is(args[1].type, 'Argument');
   273   assert.is(args[2].text, '\\');
   274   assert.is(args[2].prefix, ' ');
   275   assert.is(args[2].suffix, '');
   276   assert.is(args[2].type, 'Argument');
   277 };
   279 exports.testPathological = function(options) {
   280   var args;
   282   args = cli.tokenize('a\\ b \\t\\n\\r \\\'x\\\" \'d'); // a_b \t\n\r \'x\" 'd
   284   assert.is(args.length, 4);
   286   assert.is(args[0].text, 'a\\ b');
   287   assert.is(args[0].prefix, '');
   288   assert.is(args[0].suffix, '');
   289   assert.is(args[0].type, 'Argument');
   291   assert.is(args[1].text, '\\t\\n\\r');
   292   assert.is(args[1].prefix, ' ');
   293   assert.is(args[1].suffix, '');
   294   assert.is(args[1].type, 'Argument');
   296   assert.is(args[2].text, '\\\'x\\"');
   297   assert.is(args[2].prefix, ' ');
   298   assert.is(args[2].suffix, '');
   299   assert.is(args[2].type, 'Argument');
   301   assert.is(args[3].text, 'd');
   302   assert.is(args[3].prefix, ' \'');
   303   assert.is(args[3].suffix, '');
   304   assert.is(args[3].type, 'Argument');
   305 };

mercurial