browser/devtools/commandline/test/browser_gcli_tokenize.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:6e67e3c0b132
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 */
16
17 'use strict';
18 // <INJECTED SOURCE:START>
19
20 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
21 // DO NOT EDIT IT DIRECTLY
22
23 var exports = {};
24
25 var TEST_URI = "data:text/html;charset=utf-8,<p id='gcli-input'>gcli-testTokenize.js</p>";
26
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);
32
33 yield helpers.runTests(options, exports);
34
35 gcli.removeItems(mockCommands.items);
36 yield helpers.closeToolbar(options);
37 yield helpers.closeTab(options);
38 }).then(finish, helpers.handleError);
39 }
40
41 // <INJECTED SOURCE:END>
42
43 // var assert = require('../testharness/assert');
44 var cli = require('gcli/cli');
45
46 exports.testBlanks = function(options) {
47 var args;
48
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, '');
54
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 };
61
62 exports.testTokSimple = function(options) {
63 var args;
64
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');
71
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 };
83
84 exports.testJavascript = function(options) {
85 var args;
86
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');
93
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');
100
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');
111
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');
122
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');
129
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');
136
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 };
144
145 exports.testRegularNesting = function(options) {
146 var args;
147
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');
154
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');
161
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');
168
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 };
176
177 exports.testDeepNesting = function(options) {
178 var args;
179
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');
186
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');
193
194 args = cli.tokenize('{{w} {{{x}}}} {y} {{{z}}}');
195
196 assert.is(args.length, 3);
197
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');
202
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');
207
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');
212
213 args = cli.tokenize('{{w} {{{x}}} {y} {{{z}}}');
214
215 assert.is(args.length, 1);
216
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 };
222
223 exports.testStrangeNesting = function(options) {
224 var args;
225
226 // Note: When we get real JS parsing this should break
227 args = cli.tokenize('{"x}"}');
228
229 assert.is(args.length, 2);
230
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');
235
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 };
241
242 exports.testComplex = function(options) {
243 var args;
244
245 args = cli.tokenize(' 1234 \'12 34\'');
246
247 assert.is(args.length, 2);
248
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');
253
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');
258
259 args = cli.tokenize('12\'34 "12 34" \\'); // 12'34 "12 34" \
260
261 assert.is(args.length, 3);
262
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');
267
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');
272
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 };
278
279 exports.testPathological = function(options) {
280 var args;
281
282 args = cli.tokenize('a\\ b \\t\\n\\r \\\'x\\\" \'d'); // a_b \t\n\r \'x\" 'd
283
284 assert.is(args.length, 4);
285
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');
290
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');
295
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');
300
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