1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/commandline/test/browser_gcli_incomplete.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,454 @@ 1.4 +/* 1.5 + * Copyright 2012, Mozilla Foundation and contributors 1.6 + * 1.7 + * Licensed under the Apache License, Version 2.0 (the "License"); 1.8 + * you may not use this file except in compliance with the License. 1.9 + * You may obtain a copy of the License at 1.10 + * 1.11 + * http://www.apache.org/licenses/LICENSE-2.0 1.12 + * 1.13 + * Unless required by applicable law or agreed to in writing, software 1.14 + * distributed under the License is distributed on an "AS IS" BASIS, 1.15 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1.16 + * See the License for the specific language governing permissions and 1.17 + * limitations under the License. 1.18 + */ 1.19 + 1.20 +'use strict'; 1.21 +// <INJECTED SOURCE:START> 1.22 + 1.23 +// THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT 1.24 +// DO NOT EDIT IT DIRECTLY 1.25 + 1.26 +var exports = {}; 1.27 + 1.28 +var TEST_URI = "data:text/html;charset=utf-8,<p id='gcli-input'>gcli-testIncomplete.js</p>"; 1.29 + 1.30 +function test() { 1.31 + return Task.spawn(function() { 1.32 + let options = yield helpers.openTab(TEST_URI); 1.33 + yield helpers.openToolbar(options); 1.34 + gcli.addItems(mockCommands.items); 1.35 + 1.36 + yield helpers.runTests(options, exports); 1.37 + 1.38 + gcli.removeItems(mockCommands.items); 1.39 + yield helpers.closeToolbar(options); 1.40 + yield helpers.closeTab(options); 1.41 + }).then(finish, helpers.handleError); 1.42 +} 1.43 + 1.44 +// <INJECTED SOURCE:END> 1.45 + 1.46 +// var assert = require('../testharness/assert'); 1.47 +// var helpers = require('./helpers'); 1.48 + 1.49 +exports.testBasic = function(options) { 1.50 + return helpers.audit(options, [ 1.51 + { 1.52 + setup: 'tsu 2 extra', 1.53 + check: { 1.54 + args: { 1.55 + num: { value: 2, type: 'Argument' } 1.56 + } 1.57 + }, 1.58 + post: function() { 1.59 + var requisition = options.requisition; 1.60 + 1.61 + assert.is(requisition._unassigned.length, 1.62 + 1, 1.63 + 'single unassigned: tsu 2 extra'); 1.64 + assert.is(requisition._unassigned[0].param.type.isIncompleteName, 1.65 + false, 1.66 + 'unassigned.isIncompleteName: tsu 2 extra'); 1.67 + } 1.68 + }, 1.69 + { 1.70 + setup: 'tsu', 1.71 + check: { 1.72 + args: { 1.73 + num: { value: undefined, type: 'BlankArgument' } 1.74 + } 1.75 + } 1.76 + }, 1.77 + { 1.78 + setup: 'tsg', 1.79 + check: { 1.80 + args: { 1.81 + solo: { type: 'BlankArgument' }, 1.82 + txt1: { type: 'BlankArgument' }, 1.83 + bool: { type: 'BlankArgument' }, 1.84 + txt2: { type: 'BlankArgument' }, 1.85 + num: { type: 'BlankArgument' } 1.86 + } 1.87 + } 1.88 + } 1.89 + ]); 1.90 +}; 1.91 + 1.92 +exports.testCompleted = function(options) { 1.93 + return helpers.audit(options, [ 1.94 + { 1.95 + setup: 'tsela<TAB>', 1.96 + check: { 1.97 + args: { 1.98 + command: { name: 'tselarr', type: 'Argument' }, 1.99 + num: { type: 'BlankArgument' }, 1.100 + arr: { type: 'ArrayArgument' } 1.101 + } 1.102 + } 1.103 + }, 1.104 + { 1.105 + setup: 'tsn dif ', 1.106 + check: { 1.107 + input: 'tsn dif ', 1.108 + hints: '<text>', 1.109 + markup: 'VVVVVVVV', 1.110 + cursor: 8, 1.111 + status: 'ERROR', 1.112 + args: { 1.113 + command: { name: 'tsn dif', type: 'MergedArgument' }, 1.114 + text: { type: 'BlankArgument', status: 'INCOMPLETE' } 1.115 + } 1.116 + } 1.117 + }, 1.118 + { 1.119 + setup: 'tsn di<TAB>', 1.120 + check: { 1.121 + input: 'tsn dif ', 1.122 + hints: '<text>', 1.123 + markup: 'VVVVVVVV', 1.124 + cursor: 8, 1.125 + status: 'ERROR', 1.126 + args: { 1.127 + command: { name: 'tsn dif', type: 'Argument' }, 1.128 + text: { type: 'BlankArgument', status: 'INCOMPLETE' } 1.129 + } 1.130 + } 1.131 + }, 1.132 + // The above 2 tests take different routes to 'tsn dif '. 1.133 + // The results should be similar. The difference is in args.command.type. 1.134 + { 1.135 + setup: 'tsg -', 1.136 + check: { 1.137 + input: 'tsg -', 1.138 + hints: '-txt1 <solo> [options]', 1.139 + markup: 'VVVVI', 1.140 + cursor: 5, 1.141 + status: 'ERROR', 1.142 + args: { 1.143 + solo: { value: undefined, status: 'INCOMPLETE' }, 1.144 + txt1: { value: undefined, status: 'VALID' }, 1.145 + bool: { value: false, status: 'VALID' }, 1.146 + txt2: { value: undefined, status: 'VALID' }, 1.147 + num: { value: undefined, status: 'VALID' } 1.148 + } 1.149 + } 1.150 + }, 1.151 + { 1.152 + setup: 'tsg -<TAB>', 1.153 + check: { 1.154 + input: 'tsg --txt1 ', 1.155 + hints: '<string> <solo> [options]', 1.156 + markup: 'VVVVIIIIIIV', 1.157 + cursor: 11, 1.158 + status: 'ERROR', 1.159 + args: { 1.160 + solo: { value: undefined, status: 'INCOMPLETE' }, 1.161 + txt1: { value: undefined, status: 'INCOMPLETE' }, 1.162 + bool: { value: false, status: 'VALID' }, 1.163 + txt2: { value: undefined, status: 'VALID' }, 1.164 + num: { value: undefined, status: 'VALID' } 1.165 + } 1.166 + } 1.167 + }, 1.168 + { 1.169 + setup: 'tsg --txt1 fred', 1.170 + check: { 1.171 + input: 'tsg --txt1 fred', 1.172 + hints: ' <solo> [options]', 1.173 + markup: 'VVVVVVVVVVVVVVV', 1.174 + status: 'ERROR', 1.175 + args: { 1.176 + solo: { value: undefined, status: 'INCOMPLETE' }, 1.177 + txt1: { value: 'fred', status: 'VALID' }, 1.178 + bool: { value: false, status: 'VALID' }, 1.179 + txt2: { value: undefined, status: 'VALID' }, 1.180 + num: { value: undefined, status: 'VALID' } 1.181 + } 1.182 + } 1.183 + }, 1.184 + { 1.185 + setup: 'tscook key value --path path --', 1.186 + check: { 1.187 + input: 'tscook key value --path path --', 1.188 + hints: 'domain [options]', 1.189 + markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVII', 1.190 + status: 'ERROR', 1.191 + args: { 1.192 + key: { value: 'key', status: 'VALID' }, 1.193 + value: { value: 'value', status: 'VALID' }, 1.194 + path: { value: 'path', status: 'VALID' }, 1.195 + domain: { value: undefined, status: 'VALID' }, 1.196 + secure: { value: false, status: 'VALID' } 1.197 + } 1.198 + } 1.199 + }, 1.200 + { 1.201 + setup: 'tscook key value --path path --domain domain --', 1.202 + check: { 1.203 + input: 'tscook key value --path path --domain domain --', 1.204 + hints: 'secure [options]', 1.205 + markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVII', 1.206 + status: 'ERROR', 1.207 + args: { 1.208 + key: { value: 'key', status: 'VALID' }, 1.209 + value: { value: 'value', status: 'VALID' }, 1.210 + path: { value: 'path', status: 'VALID' }, 1.211 + domain: { value: 'domain', status: 'VALID' }, 1.212 + secure: { value: false, status: 'VALID' } 1.213 + } 1.214 + } 1.215 + } 1.216 + ]); 1.217 + 1.218 +}; 1.219 + 1.220 +exports.testCase = function(options) { 1.221 + return helpers.audit(options, [ 1.222 + { 1.223 + setup: 'tsg AA', 1.224 + check: { 1.225 + input: 'tsg AA', 1.226 + hints: ' [options] -> aaa', 1.227 + markup: 'VVVVII', 1.228 + status: 'ERROR', 1.229 + args: { 1.230 + solo: { value: undefined, text: 'AA', status: 'INCOMPLETE' }, 1.231 + txt1: { value: undefined, status: 'VALID' }, 1.232 + bool: { value: false, status: 'VALID' }, 1.233 + txt2: { value: undefined, status: 'VALID' }, 1.234 + num: { value: undefined, status: 'VALID' } 1.235 + } 1.236 + } 1.237 + } 1.238 + ]); 1.239 +}; 1.240 + 1.241 +exports.testIncomplete = function(options) { 1.242 + return helpers.audit(options, [ 1.243 + { 1.244 + setup: 'tsm a a -', 1.245 + check: { 1.246 + args: { 1.247 + abc: { value: 'a', type: 'Argument' }, 1.248 + txt: { value: 'a', type: 'Argument' }, 1.249 + num: { value: undefined, arg: ' -', type: 'Argument', status: 'INCOMPLETE' } 1.250 + } 1.251 + } 1.252 + }, 1.253 + { 1.254 + setup: 'tsg -', 1.255 + check: { 1.256 + args: { 1.257 + solo: { type: 'BlankArgument' }, 1.258 + txt1: { type: 'BlankArgument' }, 1.259 + bool: { type: 'BlankArgument' }, 1.260 + txt2: { type: 'BlankArgument' }, 1.261 + num: { type: 'BlankArgument' } 1.262 + } 1.263 + }, 1.264 + post: function() { 1.265 + var requisition = options.requisition; 1.266 + 1.267 + assert.is(requisition._unassigned[0], 1.268 + requisition.getAssignmentAt(5), 1.269 + 'unassigned -'); 1.270 + assert.is(requisition._unassigned.length, 1.271 + 1, 1.272 + 'single unassigned - tsg -'); 1.273 + assert.is(requisition._unassigned[0].param.type.isIncompleteName, 1.274 + true, 1.275 + 'unassigned.isIncompleteName: tsg -'); 1.276 + } 1.277 + } 1.278 + ]); 1.279 +}; 1.280 + 1.281 +exports.testRepeated = function(options) { 1.282 + return helpers.audit(options, [ 1.283 + { 1.284 + setup: 'tscook key value --path jjj --path kkk', 1.285 + check: { 1.286 + input: 'tscook key value --path jjj --path kkk', 1.287 + hints: ' [options]', 1.288 + markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVEEEEEEVEEE', 1.289 + cursor: 38, 1.290 + current: '__unassigned', 1.291 + status: 'ERROR', 1.292 + options: [ ], 1.293 + message: '', 1.294 + predictions: [ ], 1.295 + unassigned: [ ' --path', ' kkk' ], 1.296 + args: { 1.297 + command: { name: 'tscook' }, 1.298 + key: { 1.299 + value: 'key', 1.300 + arg: ' key', 1.301 + status: 'VALID', 1.302 + message: '' 1.303 + }, 1.304 + value: { 1.305 + value: 'value', 1.306 + arg: ' value', 1.307 + status: 'VALID', 1.308 + message: '' 1.309 + }, 1.310 + path: { 1.311 + value: 'jjj', 1.312 + arg: ' --path jjj', 1.313 + status: 'VALID', 1.314 + message: '' 1.315 + }, 1.316 + domain: { 1.317 + value: undefined, 1.318 + arg: '', 1.319 + status: 'VALID', 1.320 + message: '' 1.321 + }, 1.322 + secure: { 1.323 + value: false, 1.324 + arg: '', 1.325 + status: 'VALID', 1.326 + message: '' 1.327 + }, 1.328 + } 1.329 + } 1.330 + } 1.331 + ]); 1.332 +}; 1.333 + 1.334 +exports.testHidden = function(options) { 1.335 + return helpers.audit(options, [ 1.336 + { 1.337 + setup: 'tshidde', 1.338 + check: { 1.339 + input: 'tshidde', 1.340 + hints: ' -> tse', 1.341 + status: 'ERROR' 1.342 + } 1.343 + }, 1.344 + { 1.345 + setup: 'tshidden', 1.346 + check: { 1.347 + input: 'tshidden', 1.348 + hints: ' [options]', 1.349 + markup: 'VVVVVVVV', 1.350 + status: 'VALID', 1.351 + args: { 1.352 + visible: { value: undefined, status: 'VALID' }, 1.353 + invisiblestring: { value: undefined, status: 'VALID' }, 1.354 + invisibleboolean: { value: false, status: 'VALID' } 1.355 + } 1.356 + } 1.357 + }, 1.358 + { 1.359 + setup: 'tshidden --vis', 1.360 + check: { 1.361 + input: 'tshidden --vis', 1.362 + hints: 'ible [options]', 1.363 + markup: 'VVVVVVVVVIIIII', 1.364 + status: 'ERROR', 1.365 + args: { 1.366 + visible: { value: undefined, status: 'VALID' }, 1.367 + invisiblestring: { value: undefined, status: 'VALID' }, 1.368 + invisibleboolean: { value: false, status: 'VALID' } 1.369 + } 1.370 + } 1.371 + }, 1.372 + { 1.373 + setup: 'tshidden --invisiblestrin', 1.374 + check: { 1.375 + input: 'tshidden --invisiblestrin', 1.376 + hints: ' [options]', 1.377 + markup: 'VVVVVVVVVEEEEEEEEEEEEEEEE', 1.378 + status: 'ERROR', 1.379 + args: { 1.380 + visible: { value: undefined, status: 'VALID' }, 1.381 + invisiblestring: { value: undefined, status: 'VALID' }, 1.382 + invisibleboolean: { value: false, status: 'VALID' } 1.383 + } 1.384 + } 1.385 + }, 1.386 + { 1.387 + setup: 'tshidden --invisiblestring', 1.388 + check: { 1.389 + input: 'tshidden --invisiblestring', 1.390 + hints: ' <string> [options]', 1.391 + markup: 'VVVVVVVVVIIIIIIIIIIIIIIIII', 1.392 + status: 'ERROR', 1.393 + args: { 1.394 + visible: { value: undefined, status: 'VALID' }, 1.395 + invisiblestring: { value: undefined, status: 'INCOMPLETE' }, 1.396 + invisibleboolean: { value: false, status: 'VALID' } 1.397 + } 1.398 + } 1.399 + }, 1.400 + { 1.401 + setup: 'tshidden --invisiblestring x', 1.402 + check: { 1.403 + input: 'tshidden --invisiblestring x', 1.404 + hints: ' [options]', 1.405 + markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV', 1.406 + status: 'VALID', 1.407 + args: { 1.408 + visible: { value: undefined, status: 'VALID' }, 1.409 + invisiblestring: { value: 'x', status: 'VALID' }, 1.410 + invisibleboolean: { value: false, status: 'VALID' } 1.411 + } 1.412 + } 1.413 + }, 1.414 + { 1.415 + setup: 'tshidden --invisibleboolea', 1.416 + check: { 1.417 + input: 'tshidden --invisibleboolea', 1.418 + hints: ' [options]', 1.419 + markup: 'VVVVVVVVVEEEEEEEEEEEEEEEEE', 1.420 + status: 'ERROR', 1.421 + args: { 1.422 + visible: { value: undefined, status: 'VALID' }, 1.423 + invisiblestring: { value: undefined, status: 'VALID' }, 1.424 + invisibleboolean: { value: false, status: 'VALID' } 1.425 + } 1.426 + } 1.427 + }, 1.428 + { 1.429 + setup: 'tshidden --invisibleboolean', 1.430 + check: { 1.431 + input: 'tshidden --invisibleboolean', 1.432 + hints: ' [options]', 1.433 + markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVV', 1.434 + status: 'VALID', 1.435 + args: { 1.436 + visible: { value: undefined, status: 'VALID' }, 1.437 + invisiblestring: { value: undefined, status: 'VALID' }, 1.438 + invisibleboolean: { value: true, status: 'VALID' } 1.439 + } 1.440 + } 1.441 + }, 1.442 + { 1.443 + setup: 'tshidden --visible xxx', 1.444 + check: { 1.445 + input: 'tshidden --visible xxx', 1.446 + markup: 'VVVVVVVVVVVVVVVVVVVVVV', 1.447 + status: 'VALID', 1.448 + hints: '', 1.449 + args: { 1.450 + visible: { value: 'xxx', status: 'VALID' }, 1.451 + invisiblestring: { value: undefined, status: 'VALID' }, 1.452 + invisibleboolean: { value: false, status: 'VALID' } 1.453 + } 1.454 + } 1.455 + } 1.456 + ]); 1.457 +};