You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hotkeys/test/hotkeys.js

306 lines
9.5 KiB
JavaScript

8 years ago
var tape = require('tape');
require('tape-dom')(tape);
var hotkeys = require('../dist/hotkeys.js');
var isff = navigator.userAgent.toLowerCase().indexOf('firefox') > 0;
8 years ago
// 模拟键盘摁键
// http://output.jsbin.com/awenaq/3
function __triggerKeyboardEvent(el, keyCode, opt) {
8 years ago
var eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent("Events");
8 years ago
if (eventObj.initEvent) {
8 years ago
eventObj.initEvent("keydown", true, true);
}
eventObj.keyCode = keyCode;
eventObj.which = keyCode;
if (opt) {
for (var a in opt) {
8 years ago
eventObj[a] = opt[a];
}
}
el.dispatchEvent ? el.dispatchEvent(eventObj) : el.fireEvent("onkeydown", eventObj);
}
8 years ago
tape('hotkeys 单元测试', function (t) {
hotkeys('w', function(e){
t.equal(e.keyCode, 87, '单个按键 w keyCode == 87');
8 years ago
});
__triggerKeyboardEvent(document.body, 87);
hotkeys('enter', function(e){
t.equal(e.keyCode, 13, '单个特殊键按键 enterenter验证 keyCode == 13');
8 years ago
});
hotkeys('return', function(e){
t.equal(e.keyCode, 13, '单个特殊键按键 returnreturn验证 keyCode == 13');
8 years ago
});
__triggerKeyboardEvent(document.body, 13);
hotkeys('space', function(e){
t.equal(e.keyCode, 32, '单个特殊键按键 spacespace验证 keyCode == 32');
8 years ago
});
__triggerKeyboardEvent(document.body, 32);
hotkeys('backspace', function(e){
t.equal(e.keyCode, 8, '单个特殊键按键 backspacebackspace 验证 keyCode == 8');
8 years ago
});
__triggerKeyboardEvent(document.body, 8);
hotkeys('tab', function(e){
t.equal(e.keyCode, 9, '单个特殊键按键 tabtab 验证 keyCode == 9');
8 years ago
});
__triggerKeyboardEvent(document.body, 9);
hotkeys('clear', function(e){
t.equal(e.keyCode, 12, '单个特殊键按键 clearclear 验证 keyCode == 12');
8 years ago
});
__triggerKeyboardEvent(document.body, 12);
hotkeys(',', function(e){
t.equal(e.keyCode, 188, '单个特殊键按键 , , 验证 keyCode == 188');
8 years ago
});
__triggerKeyboardEvent(document.body, 188);
hotkeys('.', function(e){
t.equal(e.keyCode, 190, '单个特殊键按键 . . 验证 keyCode == 190');
8 years ago
});
__triggerKeyboardEvent(document.body, 190);
hotkeys('.', function(e){
t.equal(e.keyCode, 190, '单个特殊键按键 . . 验证 keyCode == 190');
8 years ago
});
__triggerKeyboardEvent(document.body, 190);
hotkeys('/', function(e){
t.equal(e.keyCode, 191, '单个特殊键按键 / / 验证 keyCode == 191');
8 years ago
});
__triggerKeyboardEvent(document.body, 191);
hotkeys('`', function(e){
t.equal(e.keyCode, 192, '单个特殊键按键 ` ` 验证 keyCode == 192');
8 years ago
});
__triggerKeyboardEvent(document.body, 192);
hotkeys('-', function(e){
t.equal(e.keyCode, isff?173:189, '单个特殊键按键 -- 验证 keyCode == 火狐?173:189');
8 years ago
});
__triggerKeyboardEvent(document.body, isff?173:189);
hotkeys('=', function(e){
t.equal(e.keyCode, isff?61:187, '单个特殊键按键 == 验证 keyCode == 火狐?61:187');
8 years ago
});
__triggerKeyboardEvent(document.body, isff?61:187);
hotkeys(';', function(e){
t.equal(e.keyCode, isff?59:186, '单个特殊键按键 ; ; 验证 keyCode == 火狐?59:186');
8 years ago
});
__triggerKeyboardEvent(document.body, isff?59:186);
hotkeys("\'".toString(), function(e){
t.equal(e.keyCode, 222, "单个特殊键按键 \' \' 验证 keyCode == 222 ");
8 years ago
});
__triggerKeyboardEvent(document.body, 222);
hotkeys("\\".toString(), function(e){
t.equal(e.keyCode, 220, "单个特殊键按键 \\ \\ 验证 keyCode == 220 ");
8 years ago
});
__triggerKeyboardEvent(document.body, 220);
hotkeys("[".toString(), function(e){
t.equal(e.keyCode, 219, "单个特殊键按键 [ [ 验证 keyCode == 219 ");
8 years ago
});
__triggerKeyboardEvent(document.body, 219);
hotkeys("]".toString(), function(e){
t.equal(e.keyCode, 221, "单个特殊键按键 ] ] 验证 keyCode == 221 ");
8 years ago
});
__triggerKeyboardEvent(document.body, 221);
hotkeys('left', function(e){
t.equal(e.keyCode, 37, '单个特殊键按键 leftleft 验证 keyCode == 37');
8 years ago
});
__triggerKeyboardEvent(document.body, 37);
hotkeys('up', function(e){
t.equal(e.keyCode, 38, '单个特殊键按键 upup 验证 keyCode == 38');
8 years ago
});
__triggerKeyboardEvent(document.body, 38);
8 years ago
hotkeys('del', function(e){
t.equal(e.keyCode, 46, '单个特殊键按键 deldel 验证 keyCode == 46');
8 years ago
});
hotkeys('delete', function(e){
t.equal(e.keyCode, 46, '单个特殊键按键 deletedelete 验证 keyCode == 46');
8 years ago
});
__triggerKeyboardEvent(document.body, 46);
hotkeys('home', function(e){
t.equal(e.keyCode, 36, '单个特殊键按键 homehome 验证 keyCode == 36');
8 years ago
});
__triggerKeyboardEvent(document.body, 36);
hotkeys('pageup', function(e){
t.equal(e.keyCode, 33, '单个特殊键按键 pageuppageup 验证 keyCode == 33');
8 years ago
});
__triggerKeyboardEvent(document.body, 33);
hotkeys('pagedown', function(e){
t.equal(e.keyCode, 34, '单个特殊键按键 pagedownpagedown 验证 keyCode == 34');
8 years ago
});
__triggerKeyboardEvent(document.body, 34);
hotkeys('end', function(e){
t.equal(e.keyCode, 35, '单个特殊键按键 endend 验证 keyCode == 35');
8 years ago
});
__triggerKeyboardEvent(document.body, 35);
hotkeys('right', function(e){
t.equal(e.keyCode, 39, '单个特殊键按键 rightright 验证 keyCode == 39');
8 years ago
});
__triggerKeyboardEvent(document.body, 39);
hotkeys('down', function(e){
t.equal(e.keyCode, 40, '单个特殊键按键 downdown 验证 keyCode == 40');
8 years ago
});
__triggerKeyboardEvent(document.body, 40);
hotkeys('esc', function(e){
t.equal(e.keyCode, 27, '单个特殊键按键 escesc 验证 keyCode == 27');
8 years ago
});
hotkeys('escape', function(e){
t.equal(e.keyCode, 27, '单个特殊键按键 escapeescape 验证 keyCode == 27');
8 years ago
});
__triggerKeyboardEvent(document.body, 27);
hotkeys('CapsLock', function(e){
t.equal(e.keyCode, 20, '单个特殊键按键 CapsLockCapsLock验证 keyCode == 20');
8 years ago
});
hotkeys('⇪', function(e){
t.equal(e.keyCode, 20, '单个特殊键按键 ⇪,⇪验证 keyCode == 20');
8 years ago
});
__triggerKeyboardEvent(document.body, 20);
hotkeys('⌘+d', function(e){
t.equal(e.keyCode, 82, '组合键 ⌘+dd验证 keyCode == 82');
t.equal(e.metaKey, true, '组合键 ⌘+dalt验证 metaKey == true');
8 years ago
return false;
});
__triggerKeyboardEvent(document.body, 82,{
metaKey:true
});
hotkeys('alt+d', function(e){
t.equal(e.keyCode, 68, '组合键 alt+dd验证 keyCode == 68');
t.equal(e.altKey, true, '组合键 alt+dalt验证 altKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 68,{
altKey:true
});
hotkeys('shift+a', function(e){
t.equal(e.keyCode, 65, '组合键 shift+aa验证 keyCode == 65');
t.equal(e.shiftKey, true, '组合键 shift+ashift验证 shiftKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 65,{
shiftKey:true
});
hotkeys('⇧+a', function(e){
t.equal(e.keyCode, 65, '组合键 ⇧+aa验证 keyCode == 65');
t.equal(e.shiftKey, true, '组合键 ⇧+a⇧验证 shiftKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 65,{
shiftKey:true
});
hotkeys('⌘+a', function(e){
t.equal(e.keyCode, 65, '组合键 ⌘+aa验证 keyCode == 65');
t.equal(e.metaKey, true, '组合键 ⌘+a⌘验证 metaKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 65,{
metaKey:true
});
hotkeys('⌃+a', function(e){
t.equal(e.keyCode, 65, '组合键 ⌃+aa验证 keyCode == 65');
t.equal(e.ctrlKey, true, '组合键 ⌃+a⌃验证 ctrlKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 65,{
ctrlKey:true
});
8 years ago
hotkeys.unbind("⌃+a")
8 years ago
hotkeys('⌥+a', function(e){
t.equal(e.keyCode, 65, '组合键 ⌥+aa验证 keyCode == 65');
t.equal(e.altKey, true, '组合键 ⌥+a⌥验证 altKey == true');
8 years ago
});
__triggerKeyboardEvent(document.body, 65,{
altKey:true
});
hotkeys('ctrl+,,ctrl+d', function (e) {
t.equal(e.keyCode, 188, '组合键 ctrl+,,验证 keyCode == 65');
t.equal(e.ctrlKey, true, '组合键 ctrl+,ctrl验证 ctrlKey == true');
});
__triggerKeyboardEvent(document.body, 188, {
ctrlKey: true
});
8 years ago
hotkeys.unbind("ctrl+,,ctrl+d")
8 years ago
8 years ago
hotkeys('Ctrl+A', function (e) {
t.equal(e.keyCode, 65, '大小写组合键 Ctrl+AA验证 keyCode == 65');
t.equal(e.ctrlKey, true, '大小写组合键 Ctrl+ACtrl验证 ctrlKey == true');
});
__triggerKeyboardEvent(document.body, 65, {
ctrlKey: true
});
8 years ago
hotkeys.unbind("Ctrl+A")
hotkeys('CTRL+A', function (e) {
t.equal(e.keyCode, 65, '大小写组合键 CTRL+AA验证 keyCode == 65');
t.equal(e.ctrlKey, true, '大小写组合键 CTRL+ACTRL验证 ctrlKey == true');
});
__triggerKeyboardEvent(document.body, 65, {
ctrlKey: true
});
hotkeys.unbind("CTRL+A")
hotkeys('⌃+a',function(){
t.equal(hotkeys.getScope(), 'all', ' 验证 getScope() == all');
});
__triggerKeyboardEvent(document.body, 65,{
ctrlKey:true
});
hotkeys.unbind("⌃+a")
hotkeys('⌃+a','scope1',function(){
t.equal(hotkeys.getScope(), 'scope1', ' 验证 getScope() == scope1');
});
__triggerKeyboardEvent(document.body, 65,{
ctrlKey:true
});
hotkeys('⌃+a','scope2',function(){
t.equal(hotkeys.getScope(), 'scope2', ' 验证 getScope() == scope2');
});
hotkeys.setScope('scope1');
__triggerKeyboardEvent(document.body, 65,{
ctrlKey:true
});
hotkeys.setScope('scope2');
__triggerKeyboardEvent(document.body, 65,{
ctrlKey:true
});
});