Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: polymer_1.0.4/bower_components/iron-a11y-keys-behavior/test/basic-test.html

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!doctype html>
2 <!--
3 @license
4 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
5 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
6 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
8 Code distributed by Google as part of the polymer project is also
9 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
10 -->
11 <html>
12 <head>
13 <meta charset="UTF-8">
14 <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial- scale=1.0, user-scalable=yes">
15 <title>iron-a11y-keys</title>
16
17 <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
18 <script src="../../web-component-tester/browser.js"></script>
19 <script src="../../test-fixture/test-fixture-mocha.js"></script>
20 <script src="../../iron-test-helpers/mock-interactions.js"></script>
21
22 <link rel="import" href="../../polymer/polymer.html">
23 <link rel="import" href="../../test-fixture/test-fixture.html">
24 <link rel="import" href="../iron-a11y-keys-behavior.html">
25 </head>
26 <body>
27 <test-fixture id="BasicKeys">
28 <template>
29 <x-a11y-basic-keys></x-a11y-basic-keys>
30 </template>
31 </test-fixture>
32
33 <test-fixture id="ComboKeys">
34 <template>
35 <x-a11y-combo-keys></x-a11y-combo-keys>
36 </template>
37 </test-fixture>
38
39 <test-fixture id="AlternativeEventKeys">
40 <template>
41 <x-a11y-alternate-event-keys></x-a11y-alternate-event-keys>
42 </template>
43 </test-fixture>
44
45 <test-fixture id="BehaviorKeys">
46 <template>
47 <x-a11y-behavior-keys></x-a11y-behavior-keys>
48 </template>
49 </test-fixture>
50
51 <script>
52 suite('Polymer.IronA11yKeysBehavior', function() {
53 var keys;
54
55 suiteSetup(function() {
56 var KeysTestBehavior = [Polymer.IronA11yKeysBehavior, {
57 properties: {
58 keyCount: {
59 type: Number,
60 value: 0
61 }
62 },
63
64 _keyHandler: function(event) {
65 this.keyCount++;
66 this.lastEvent = event;
67 }
68 }];
69
70 Polymer({
71 is: 'x-a11y-basic-keys',
72
73 behaviors: [
74 KeysTestBehavior
75 ],
76
77 keyBindings: {
78 'space': '_keyHandler'
79 }
80 });
81
82 Polymer({
83 is: 'x-a11y-combo-keys',
84
85 behaviors: [
86 KeysTestBehavior
87 ],
88
89 keyBindings: {
90 'ctrl+shift+a': '_keyHandler'
91 }
92 });
93
94 Polymer({
95 is: 'x-a11y-alternate-event-keys',
96
97 behaviors: [
98 KeysTestBehavior
99 ],
100
101 keyBindings: {
102 'space:keyup': '_keyHandler'
103 }
104 });
105
106 var XA11yBehavior = {
107 keyBindings: {
108 'enter': '_keyHandler'
109 }
110 };
111
112 Polymer({
113 is: 'x-a11y-behavior-keys',
114
115 behaviors: [
116 KeysTestBehavior,
117 XA11yBehavior
118 ],
119
120 keyBindings: {
121 'space': '_keyHandler'
122 }
123 });
124 });
125
126 suite('basic keys', function() {
127 setup(function() {
128 keys = fixture('BasicKeys');
129 });
130
131 test('trigger the handler when the specified key is pressed', function() {
132 MockInteractions.pressSpace(keys);
133
134 expect(keys.keyCount).to.be.equal(1);
135 });
136
137 test('do not trigger the handler for non-specified keys', function() {
138 MockInteractions.pressEnter(keys);
139
140 expect(keys.keyCount).to.be.equal(0);
141 });
142
143 test('can have bindings added imperatively', function() {
144 keys.addOwnKeyBinding('enter', '_keyHandler');
145
146 MockInteractions.pressEnter(keys);
147 expect(keys.keyCount).to.be.equal(1);
148
149 MockInteractions.pressSpace(keys);
150 expect(keys.keyCount).to.be.equal(2);
151 });
152
153 test('can remove imperatively added bindings', function() {
154 keys.addOwnKeyBinding('enter', '_keyHandler');
155 keys.removeOwnKeyBindings();
156
157 MockInteractions.pressEnter(keys);
158 expect(keys.keyCount).to.be.equal(0);
159
160 MockInteractions.pressSpace(keys);
161 expect(keys.keyCount).to.be.equal(1);
162 });
163
164 suite('edge cases', function() {
165 test('knows that `spacebar` is the same as `space`', function() {
166 var event = new CustomEvent('keydown');
167 event.key = 'spacebar';
168 expect(keys.keyboardEventMatchesKeys(event, 'space')).to.be.equal(true);
169 });
170 });
171
172 suite('matching keyboard events to keys', function() {
173 test('can be done imperatively', function() {
174 var event = new CustomEvent('keydown');
175 event.keyCode = 65;
176 expect(keys.keyboardEventMatchesKeys(event, 'a')).to.be.equal(true);
177 });
178
179 test('can be done with a provided keyboardEvent', function() {
180 var event;
181 MockInteractions.pressSpace(keys);
182 event = keys.lastEvent;
183
184 expect(event.detail.keyboardEvent).to.be.okay;
185 expect(keys.keyboardEventMatchesKeys(event, 'space')).to.be.equal(true);
186 });
187
188 test('can handle variations in arrow key names', function() {
189 var event = new CustomEvent('keydown');
190 event.key = 'up';
191 expect(keys.keyboardEventMatchesKeys(event, 'up')).to.be.equal(true);
192 event.key = 'ArrowUp';
193 expect(keys.keyboardEventMatchesKeys(event, 'up')).to.be.equal(true);
194 });
195 });
196 });
197
198 suite('combo keys', function() {
199 setup(function() {
200 keys = fixture('ComboKeys');
201 });
202
203 test('trigger the handler when the combo is pressed', function() {
204 var event = new CustomEvent('keydown');
205
206 event.ctrlKey = true;
207 event.shiftKey = true;
208 event.keyCode = event.code = 65;
209
210 keys.dispatchEvent(event);
211
212 expect(keys.keyCount).to.be.equal(1);
213 });
214 });
215
216 suite('alternative event keys', function() {
217 setup(function() {
218 keys = fixture('AlternativeEventKeys');
219 });
220
221 test('trigger on the specified alternative keyboard event', function() {
222 MockInteractions.keyDownOn(keys, 32);
223
224 expect(keys.keyCount).to.be.equal(0);
225
226 MockInteractions.keyUpOn(keys, 32);
227
228 expect(keys.keyCount).to.be.equal(1);
229 });
230 });
231
232 suite('behavior keys', function() {
233 setup(function() {
234 keys = fixture('BehaviorKeys');
235 });
236
237 test('bindings in other behaviors are transitive', function() {
238 MockInteractions.pressEnter(keys);
239 MockInteractions.pressSpace(keys);
240
241 expect(keys.keyCount).to.be.equal(2);
242 });
243 });
244
245 });
246 </script>
247 </body>
248 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698