1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- var normalized_shortcuts = [
- 'ctrl-shift-m',
- 'alt-meta-p',
- ];
- var to_normalize = [
- ['shift-%', 'shift-5'],
- ['ShiFT-MeTa-CtRl-AlT-m', 'alt-ctrl-meta-shift-m'],
- ];
- var unshifted = "` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] \\ a s d f g h j k l ; ' z x c v b n m , . /";
- // shifted = '~ ! @ # $ % ^ & * ( ) _ + Q W E R T Y U I O P { } | A S D F G H J K L : " Z X C V B N M < > ?';
- var ambiguous_expect = function(ch){
- // `-` is ambiguous in shortcut context as a separator, so map it to `minus`
- if(ch === '-'){
- return 'minus';
- }
- return ch;
- };
- casper.notebook_test(function () {
- var that = this;
- this.then(function () {
- this.each(unshifted.split(' '), function (self, item) {
- var result = this.evaluate(function (sc) {
- var e = IPython.keyboard.shortcut_to_event(sc);
- var sc2 = IPython.keyboard.event_to_shortcut(e);
- return sc2;
- }, item);
- this.test.assertEquals(result, ambiguous_expect(item), 'Shortcut to event roundtrip: '+item);
- });
- });
- this.then(function () {
- this.each(to_normalize, function (self, item) {
- var result = this.evaluate(function (pair) {
- return IPython.keyboard.normalize_shortcut(pair[0]);
- }, item);
- this.test.assertEquals(result, item[1], 'Normalize shortcut: '+item[0]);
- });
- });
- this.then(function () {
- this.each(normalized_shortcuts, function (self, item) {
- var result = this.evaluate(function (sc) {
- var e = IPython.keyboard.shortcut_to_event(sc);
- var sc2 = IPython.keyboard.event_to_shortcut(e);
- return sc2;
- }, item);
- this.test.assertEquals(result, item, 'Shortcut to event roundtrip: '+item);
- });
- });
- this.then(function(){
- var shortcuts_test = {
- 'i,e,e,e,e,e' : '[[5E]]',
- 'i,d,d,q,d' : '[[TEST1]]',
- 'i,d,d' : '[[TEST1 WILL BE SHADOWED]]',
- 'i,d,k' : '[[SHOULD SHADOW TEST2]]',
- 'i,d,k,r,q' : '[[TEST2 NOT SHADOWED]]',
- ';,up,down,up,down,left,right,left,right,b,a' : '[[KONAMI]]',
- 'ctrl-x,meta-c,meta-b,u,t,t,e,r,f,l,y' : '[[XKCD]]'
- };
- that.msgs = [];
- that.on('remote.message', function(msg) {
- that.msgs.push(msg);
- });
- that.evaluate(function (obj) {
- for(var k in obj){
- if ({}.hasOwnProperty.call(obj, k)) {
- IPython.keyboard_manager.command_shortcuts.add_shortcut(k, function(){console.log(obj[k]);});
- }
- }
- }, shortcuts_test);
- var longer_first = false;
- var longer_last = false;
- for(var m in that.msgs){
- if ({}.hasOwnProperty.call(that.msgs, m)) {
- longer_first = longer_first||(that.msgs[m].match(/you are overriting/)!= null);
- longer_last = longer_last ||(that.msgs[m].match(/will be shadowed/) != null);
- }
- }
- this.test.assert(longer_first, 'no warning if registering shorter shortut');
- this.test.assert(longer_last , 'no warning if registering longer shortut');
- });
- });
|