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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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