forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			215 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  * 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.
 | |
|  */
 | |
| 
 | |
| // define(function(require, exports, module) {
 | |
| 
 | |
| // <INJECTED SOURCE:START>
 | |
| 
 | |
| // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 | |
| // DO NOT EDIT IT DIRECTLY
 | |
| 
 | |
| var exports = {};
 | |
| 
 | |
| const TEST_URI = "data:text/html;charset=utf-8,<p id='gcli-input'>gcli-testKeyboard.js</p>";
 | |
| 
 | |
| function test() {
 | |
|   var tests = Object.keys(exports);
 | |
|   // Push setup to the top and shutdown to the bottom
 | |
|   tests.sort(function(t1, t2) {
 | |
|     if (t1 == "setup" || t2 == "shutdown") return -1;
 | |
|     if (t2 == "setup" || t1 == "shutdown") return 1;
 | |
|     return 0;
 | |
|   });
 | |
|   info("Running tests: " + tests.join(", "))
 | |
|   tests = tests.map(function(test) { return exports[test]; });
 | |
|   DeveloperToolbarTest.test(TEST_URI, tests, true);
 | |
| }
 | |
| 
 | |
| // <INJECTED SOURCE:END>
 | |
| 
 | |
| 
 | |
| var Requisition = require('gcli/cli').Requisition;
 | |
| var canon = require('gcli/canon');
 | |
| // var mockCommands = require('gclitest/mockCommands');
 | |
| var javascript = require('gcli/types/javascript');
 | |
| 
 | |
| // var assert = require('test/assert');
 | |
| 
 | |
| var tempWindow;
 | |
| var inputter;
 | |
| 
 | |
| exports.setup = function(options) {
 | |
|   tempWindow = javascript.getGlobalObject();
 | |
|   javascript.setGlobalObject(options.window);
 | |
| 
 | |
|   if (options.display) {
 | |
|     inputter = options.display.inputter;
 | |
|   }
 | |
| 
 | |
|   mockCommands.setup();
 | |
| };
 | |
| 
 | |
| exports.shutdown = function(options) {
 | |
|   mockCommands.shutdown();
 | |
| 
 | |
|   inputter = undefined;
 | |
|   javascript.setGlobalObject(tempWindow);
 | |
|   tempWindow = undefined;
 | |
| };
 | |
| 
 | |
| var COMPLETES_TO = 'complete';
 | |
| var KEY_UPS_TO = 'keyup';
 | |
| var KEY_DOWNS_TO = 'keydown';
 | |
| 
 | |
| function check(initial, action, after, choice, cursor, expectedCursor) {
 | |
|   var requisition;
 | |
|   if (inputter) {
 | |
|     requisition = inputter.requisition;
 | |
|     inputter.setInput(initial);
 | |
|   }
 | |
|   else {
 | |
|     requisition = new Requisition();
 | |
|     requisition.update(initial);
 | |
|   }
 | |
| 
 | |
|   if (cursor == null) {
 | |
|     cursor = initial.length;
 | |
|   }
 | |
|   var assignment = requisition.getAssignmentAt(cursor);
 | |
|   switch (action) {
 | |
|     case COMPLETES_TO:
 | |
|       requisition.complete({ start: cursor, end: cursor }, choice);
 | |
|       break;
 | |
| 
 | |
|     case KEY_UPS_TO:
 | |
|       requisition.increment(assignment);
 | |
|       break;
 | |
| 
 | |
|     case KEY_DOWNS_TO:
 | |
|       requisition.decrement(assignment);
 | |
|       break;
 | |
|   }
 | |
| 
 | |
|   assert.is(after, requisition.toString(),
 | |
|           initial + ' + ' + action + ' -> ' + after);
 | |
| 
 | |
|   if (expectedCursor != null) {
 | |
|     if (inputter) {
 | |
|       assert.is(expectedCursor, inputter.getInputState().cursor.start,
 | |
|               'Ending cursor position for \'' + initial + '\'');
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| exports.testComplete = function(options) {
 | |
|   if (!inputter) {
 | |
|     assert.log('Missing display, reduced checks');
 | |
|   }
 | |
| 
 | |
|   check('tsela', COMPLETES_TO, 'tselarr ', 0);
 | |
|   check('tsn di', COMPLETES_TO, 'tsn dif ', 0);
 | |
|   check('tsg a', COMPLETES_TO, 'tsg aaa ', 0);
 | |
| 
 | |
|   check('tsn e', COMPLETES_TO, 'tsn extend ', -5);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn ext ', -4);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exte ', -3);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exten ', -2);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn extend ', -1);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn ext ', 0);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exte ', 1);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exten ', 2);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn extend ', 3);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn ext ', 4);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exte ', 5);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn exten ', 6);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn extend ', 7);
 | |
|   check('tsn e', COMPLETES_TO, 'tsn ext ', 8);
 | |
| 
 | |
|   if (!canon.getCommand('{')) {
 | |
|     assert.log('Skipping exec tests because { is not registered');
 | |
|   }
 | |
|   else {
 | |
|     check('{ wind', COMPLETES_TO, '{ window', 0);
 | |
|     check('{ window.docum', COMPLETES_TO, '{ window.document', 0);
 | |
| 
 | |
|     // Bug 717228: This fails under jsdom
 | |
|     if (!options.isJsdom) {
 | |
|       check('{ window.document.titl', COMPLETES_TO, '{ window.document.title ', 0);
 | |
|     }
 | |
|     else {
 | |
|       assert.log('Skipping tests due to jsdom and bug 717228.');
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| exports.testInternalComplete = function(options) {
 | |
|   // Bug 664377
 | |
|   // check('tsela 1', COMPLETES_TO, 'tselarr 1', 0, 3, 8);
 | |
| };
 | |
| 
 | |
| exports.testIncrDecr = function() {
 | |
|   check('tsu -70', KEY_UPS_TO, 'tsu -5');
 | |
|   check('tsu -7', KEY_UPS_TO, 'tsu -5');
 | |
|   check('tsu -6', KEY_UPS_TO, 'tsu -5');
 | |
|   check('tsu -5', KEY_UPS_TO, 'tsu -3');
 | |
|   check('tsu -4', KEY_UPS_TO, 'tsu -3');
 | |
|   check('tsu -3', KEY_UPS_TO, 'tsu 0');
 | |
|   check('tsu -2', KEY_UPS_TO, 'tsu 0');
 | |
|   check('tsu -1', KEY_UPS_TO, 'tsu 0');
 | |
|   check('tsu 0', KEY_UPS_TO, 'tsu 3');
 | |
|   check('tsu 1', KEY_UPS_TO, 'tsu 3');
 | |
|   check('tsu 2', KEY_UPS_TO, 'tsu 3');
 | |
|   check('tsu 3', KEY_UPS_TO, 'tsu 6');
 | |
|   check('tsu 4', KEY_UPS_TO, 'tsu 6');
 | |
|   check('tsu 5', KEY_UPS_TO, 'tsu 6');
 | |
|   check('tsu 6', KEY_UPS_TO, 'tsu 9');
 | |
|   check('tsu 7', KEY_UPS_TO, 'tsu 9');
 | |
|   check('tsu 8', KEY_UPS_TO, 'tsu 9');
 | |
|   check('tsu 9', KEY_UPS_TO, 'tsu 10');
 | |
|   check('tsu 10', KEY_UPS_TO, 'tsu 10');
 | |
|   check('tsu 100', KEY_UPS_TO, 'tsu -5');
 | |
| 
 | |
|   check('tsu -70', KEY_DOWNS_TO, 'tsu 10');
 | |
|   check('tsu -7', KEY_DOWNS_TO, 'tsu 10');
 | |
|   check('tsu -6', KEY_DOWNS_TO, 'tsu 10');
 | |
|   check('tsu -5', KEY_DOWNS_TO, 'tsu -5');
 | |
|   check('tsu -4', KEY_DOWNS_TO, 'tsu -5');
 | |
|   check('tsu -3', KEY_DOWNS_TO, 'tsu -5');
 | |
|   check('tsu -2', KEY_DOWNS_TO, 'tsu -3');
 | |
|   check('tsu -1', KEY_DOWNS_TO, 'tsu -3');
 | |
|   check('tsu 0', KEY_DOWNS_TO, 'tsu -3');
 | |
|   check('tsu 1', KEY_DOWNS_TO, 'tsu 0');
 | |
|   check('tsu 2', KEY_DOWNS_TO, 'tsu 0');
 | |
|   check('tsu 3', KEY_DOWNS_TO, 'tsu 0');
 | |
|   check('tsu 4', KEY_DOWNS_TO, 'tsu 3');
 | |
|   check('tsu 5', KEY_DOWNS_TO, 'tsu 3');
 | |
|   check('tsu 6', KEY_DOWNS_TO, 'tsu 3');
 | |
|   check('tsu 7', KEY_DOWNS_TO, 'tsu 6');
 | |
|   check('tsu 8', KEY_DOWNS_TO, 'tsu 6');
 | |
|   check('tsu 9', KEY_DOWNS_TO, 'tsu 6');
 | |
|   check('tsu 10', KEY_DOWNS_TO, 'tsu 9');
 | |
|   check('tsu 100', KEY_DOWNS_TO, 'tsu 10');
 | |
| 
 | |
|   // Bug 707007 - GCLI increment and decrement operations cycle through
 | |
|   // selection options in the wrong order
 | |
|   check('tselarr 1', KEY_DOWNS_TO, 'tselarr 2');
 | |
|   check('tselarr 2', KEY_DOWNS_TO, 'tselarr 3');
 | |
|   check('tselarr 3', KEY_DOWNS_TO, 'tselarr 1');
 | |
| 
 | |
|   check('tselarr 3', KEY_UPS_TO, 'tselarr 2');
 | |
| };
 | |
| 
 | |
| // });
 | 
