]> git.donarmstrong.com Git - dactyl.git/blob - common/tests/functional/testDOMEvents.js
Import 1.0rc1 supporting Firefox up to 11.*
[dactyl.git] / common / tests / functional / testDOMEvents.js
1 "use strict";
2
3 var utils = require("utils");
4 const { module } = utils;
5
6 var { interfaces: Ci } = Components;
7 var { nsIDOMKeyEvent: KeyEvent } = Ci;
8
9 var controller, dactyl;
10 var dactyllib = module("dactyl");
11 var jumlib = module("resource://mozmill/modules/jum.js");
12
13 var setupModule = function (module) {
14     controller = mozmill.getBrowserController();
15     dactyl = new dactyllib.Controller(controller);
16 };
17 var teardownModule = function (module) {
18     dactyl.teardown();
19 }
20
21 var keyDefaults = {
22     keyCode: 0,
23     charCode: 0,
24     altKey: false,
25     ctrlKey: false,
26     metaKey: false,
27     shiftKey: false
28 };
29
30 var keyMap = {
31     "a": {
32         charCode: "a".charCodeAt(0)
33     },
34     "A": {
35         charCode: "A".charCodeAt(0),
36         shiftKey: true
37     },
38     "<C-a>": {
39         aliases: ["<C-A>"],
40         charCode: "a".charCodeAt(0),
41         ctrlKey: true,
42     },
43     "<C-S-A>": {
44         aliases: ["<C-S-a>"],
45         charCode: "A".charCodeAt(0),
46         ctrlKey: true,
47         shiftKey: true,
48     },
49     "<Return>": {
50         aliases: ["<CR>"],
51         keyCode: KeyEvent.DOM_VK_RETURN
52     },
53     "<S-Return>": {
54         aliases: ["<S-CR>"],
55         keyCode: KeyEvent.DOM_VK_RETURN,
56         shiftKey: true
57     },
58     "<Space>": {
59         aliases: [" ", "< >"],
60         charCode: " ".charCodeAt(0)
61     }
62 };
63
64 function testKeys() {
65     let { DOM, update } = dactyl.modules;
66
67     for (let [name, object] in Iterator(keyMap)) {
68         for each (let key in (object.aliases || []).concat(name)) {
69             dactyl.assertNoErrors(function () {
70                 let result = DOM.Event.parse(key);
71                 jumlib.assertEquals(result.length, 1);
72
73                 for (let [k, v] in Iterator(keyDefaults))
74                     if (k != "keyCode" || "keyCode" in object || result.keyCode == 0) // TODO
75                         jumlib.assertEquals(result[0][k],
76                                             k in object ? object[k] : v,
77                                             name + ":" + key + ":" + k);
78
79                 jumlib.assertEquals(DOM.Event.stringify(result[0]),
80                                     name);
81             });
82         }
83
84         jumlib.assertEquals(name,
85                             DOM.Event.stringify(
86                                 update({ type: "keypress" },
87                                        keyDefaults,
88                                        object)));
89     }
90 }
91
92 // vim: sw=4 ts=8 et: