3
<title>event-simulate tests</title>
4
<link type="text/css" rel="stylesheet" href="../../../build/logreader/assets/skins/sam/logreader.css" />
5
<script type="text/javascript" src="../../../build/yui/yui.js"></script>
7
<body class="yui3-skin-sam">
8
<h1>Event-Simulate Tests</h1>
10
<script type="text/javascript">
14
logInclude: { TestRunner: 1}
15
}).use('test', 'event-simulate', 'console', function (Y) {
19
Y.Tests.EventSimulate = (function(){
21
var Assert = Y.Assert,
22
ObjectAssert = Y.ObjectAssert;
25
//-------------------------------------------------------------------------
26
// Generic Event Test Case
27
//-------------------------------------------------------------------------
28
function GenericEventTestCase(type /*:String*/){
29
GenericEventTestCase.superclass.constructor.call(this);
30
this.eventType = type;
31
this.name = "Event '" + type + "' Tests";
34
this.elementTagName = "div";
37
Y.extend(GenericEventTestCase, Y.Test.Case, {
39
//---------------------------------------------------------------------
40
// Setup and teardown of test harnesses
41
//---------------------------------------------------------------------
44
* Sets up several event handlers used to test UserAction mouse events.
46
setUp : function() /*:Void*/{
49
this.element = document.createElement(this.elementTagName);
50
document.body.appendChild(this.element);
55
this.element["on" + this.eventType] = Y.bind(function(event){
56
this.handleEvent(event || window.event);
58
//assign event handler
59
//this.handler = Y.on(this.eventType, Y.bind(this.handleEvent,this), this.element);
63
* Removes event handlers that were used during the test.
65
tearDown : function() /*:Void*/{
68
document.body.removeChild(this.element);
70
//remove event handler
71
this.element["on" + this.eventType] = null;
74
//---------------------------------------------------------------------
76
//---------------------------------------------------------------------
79
* Uses to trap and assign the event object for interrogation.
80
* @param {Event} event The event object created from the event.
82
handleEvent : function(event /*:Event*/) /*:Void*/ {
87
//-------------------------------------------------------------------------
89
//-------------------------------------------------------------------------
91
function UIEventTestCase(type){
92
UIEventTestCase.superclass.constructor.call(this, type);
93
this.elementTagName = "input";
96
Y.extend(UIEventTestCase, GenericEventTestCase, {
98
* Tests with default options.
100
testDefault : function () /*:Void*/{
102
//fire the click event
103
Y.Event.simulate(this.element, this.eventType);
105
//test the data coming back
106
Assert.isObject(this.result, "No event object created.");
107
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
108
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
109
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
110
Assert.isFalse(this.result.cancelable, "Cancelable is incorrect.");
111
Assert.areSame(window, this.result.view, "View is incorrect.");
112
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
117
//-------------------------------------------------------------------------
118
// Focus/Blur Event Test Case
119
//-------------------------------------------------------------------------
121
function FocusBlurEventTestCase(type){
122
FocusBlurEventTestCase.superclass.constructor.call(this, type);
123
this.elementTagName = "input";
126
Y.extend(FocusBlurEventTestCase, GenericEventTestCase, {
128
* Tests with default options.
130
testDefault : function () /*:Void*/{
132
//fire the click event
133
Y.Event.simulate(this.element, this.eventType);
135
//test the data coming back
136
Assert.isObject(this.result, "No event object created.");
137
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
138
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
139
Assert.isFalse(this.result.bubbles, "bubbles is incorrect.");
140
Assert.isFalse(this.result.cancelable, "Cancelable is incorrect.");
141
Assert.areSame(window, this.result.view, "View is incorrect.");
142
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
148
//-------------------------------------------------------------------------
149
// MouseButtonEvent Test Case
150
//-------------------------------------------------------------------------
152
function MouseButtonEventTestCase(type /*:String*/){
153
MouseButtonEventTestCase.superclass.constructor.call(this, type);
156
Y.extend(MouseButtonEventTestCase, GenericEventTestCase, {
158
//---------------------------------------------------------------------
160
//---------------------------------------------------------------------
163
* Tests with default options.
165
testDefault : function () /*:Void*/{
167
//fire the click event
168
Y.Event.simulate(this.element, this.eventType);
170
//test the data coming back
171
Assert.isObject(this.result, "No event object created.");
172
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
173
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
174
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
175
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
176
Assert.areSame(window, this.result.view, "View is incorrect.");
177
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
178
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
183
* Tests when using the right mouse button.
185
testRightBtn : function () /*:Void*/{
187
//fire the click event
188
Y.Event.simulate(this.element, this.eventType, { button: 2 });
190
//test the data coming back
191
Assert.isObject(this.result, "No event object created.");
192
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
193
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
194
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
195
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
196
Assert.areSame(window, this.result.view, "View is incorrect.");
197
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
198
//Assert.areEqual(2, this.result.button, "Button is incorrect.");
202
* Tests when using coordinates.
204
testCoords : function () /*:Void*/{
206
//fire the click event
207
Y.Event.simulate(this.element, this.eventType, { clientX: 100, clientY: 150, screenX: 200, screenY: 250 });
209
//test the data coming back
210
Assert.isObject(this.result, "No event object created.");
211
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
212
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
213
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
214
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
215
Assert.areSame(window, this.result.view, "View is incorrect.");
216
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
217
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
218
Assert.areEqual(100, this.result.clientX, "ClientX is incorrect.");
219
Assert.areEqual(150, this.result.clientY, "ClientX is incorrect.");
220
Assert.areEqual(200, this.result.screenX, "ScreenX is incorrect.");
221
Assert.areEqual(250, this.result.screenY, "ScreenY is incorrect.");
225
* Tests UserAction.click() when using CTRL key.
227
testCtrlKey : function () /*:Void*/{
229
//fire the click event
230
Y.Event.simulate(this.element, this.eventType, { ctrlKey: true });
232
//test the data coming back
233
Assert.isObject(this.result, "No event object created.");
234
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
235
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
236
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
237
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
238
Assert.areSame(window, this.result.view, "View is incorrect.");
239
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
240
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
241
Assert.isTrue(this.result.ctrlKey, "CtrlKey is incorrect.");
242
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
243
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
244
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
248
* Tests when using ALT key.
250
testAltKey : function () /*:Void*/{
252
//fire the click event
253
Y.Event.simulate(this.element, this.eventType, { altKey: true });
255
//test the data coming back
256
Assert.isObject(this.result, "No event object created.");
257
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
258
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
259
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
260
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
261
Assert.areSame(window, this.result.view, "View is incorrect.");
262
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
263
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
264
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
265
Assert.isTrue(this.result.altKey, "AltKey is incorrect.");
266
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
267
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
271
* Tests when using Shift key.
273
testShiftKey : function () /*:Void*/{
275
//fire the click event
276
Y.Event.simulate(this.element, this.eventType, { shiftKey: true });
278
//test the data coming back
279
Assert.isObject(this.result, "No event object created.");
280
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
281
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
282
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
283
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
284
Assert.areSame(window, this.result.view, "View is incorrect.");
285
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
286
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
287
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
288
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
289
Assert.isTrue(this.result.shiftKey, "ShiftKey is incorrect.");
290
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
294
* Tests when using Meta key.
296
testMetaKey : function () /*:Void*/{
298
//fire the click event
299
Y.Event.simulate(this.element, this.eventType, { metaKey: true });
301
//test the data coming back
302
Assert.isObject(this.result, "No event object created.");
303
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
304
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
305
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
306
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
307
Assert.areSame(window, this.result.view, "View is incorrect.");
308
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
309
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
310
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
311
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
312
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
313
Assert.isTrue(this.result.metaKey, "MetaKey is incorrect.");
318
//-------------------------------------------------------------------------
319
// MouseMovementEvent Test Case
320
//-------------------------------------------------------------------------
322
function MouseMovementEventTestCase(type /*:String*/) {
323
MouseMovementEventTestCase.superclass.constructor.call(this,type);
326
Y.extend(MouseMovementEventTestCase, MouseButtonEventTestCase, {
329
* Tests that the relatedTarget property is correct.
331
testRelatedTarget : function () /*:Void*/{
333
//fire the click event
334
Y.Event.simulate(this.element, this.eventType, { relatedTarget: document.body });
336
//test the data coming back
337
Assert.isObject(this.result, "No event object created.");
338
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
339
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
340
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
341
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
342
Assert.areSame(window, this.result.view, "View is incorrect.");
343
Assert.areEqual(1, this.result.detail, "Details is incorrect.");
344
//Assert.areEqual(0, this.result.button, "Button is incorrect.");
345
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
346
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
347
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
348
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
349
Assert.areSame(document.body, this.result.relatedTarget || this.result.fromElement || this.result.toElement, "RelatedTarget is incorrect.");
356
//-------------------------------------------------------------------------
357
// KeyEvent Test Case
358
//-------------------------------------------------------------------------
360
function KeyEventTestCase(type /*:String*/) {
361
KeyEventTestCase.superclass.constructor.call(this,type);
364
Y.extend(KeyEventTestCase, GenericEventTestCase, {
367
* Tests that the default properties are correct.
369
testDefault : function () /*:Void*/{
371
//fire the click event
372
Y.Event.simulate(this.element, this.eventType);
374
//test the data coming back
375
Assert.isObject(this.result, "No event object created.");
376
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
377
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
378
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
379
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
380
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
381
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
382
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
383
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
388
* Tests UserAction.click() when using CTRL key.
390
testCtrlKey : function () /*:Void*/{
392
//fire the click event
393
Y.Event.simulate(this.element, this.eventType, { ctrlKey: true });
395
//test the data coming back
396
Assert.isObject(this.result, "No event object created.");
397
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
398
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
399
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
400
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
401
Assert.isTrue(this.result.ctrlKey, "CtrlKey is incorrect.");
402
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
403
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
404
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
408
* Tests when using ALT key.
410
testAltKey : function () /*:Void*/{
412
//fire the click event
413
Y.Event.simulate(this.element, this.eventType, { altKey: true });
415
//test the data coming back
416
Assert.isObject(this.result, "No event object created.");
417
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
418
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
419
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
420
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
421
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
422
Assert.isTrue(this.result.altKey, "AltKey is incorrect.");
423
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
424
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
428
* Tests when using Shift key.
430
testShiftKey : function () /*:Void*/{
432
//fire the click event
433
Y.Event.simulate(this.element, this.eventType, { shiftKey: true });
435
//test the data coming back
436
Assert.isObject(this.result, "No event object created.");
437
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
438
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
439
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
440
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
441
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
442
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
443
Assert.isTrue(this.result.shiftKey, "ShiftKey is incorrect.");
444
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
448
* Tests when using Meta key.
450
testMetaKey : function () /*:Void*/{
452
//fire the click event
453
Y.Event.simulate(this.element, this.eventType, { metaKey: true });
455
//test the data coming back
456
Assert.isObject(this.result, "No event object created.");
457
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
458
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
459
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
460
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
461
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
462
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
463
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
464
Assert.isTrue(this.result.metaKey, "MetaKey is incorrect.");
470
//-------------------------------------------------------------------------
471
// KeyDirection Test Case
472
//-------------------------------------------------------------------------
474
function KeyDirectionEventTestCase(type /*:String*/){
475
KeyDirectionEventTestCase.superclass.constructor.call(this, type);
478
Y.extend(KeyDirectionEventTestCase, KeyEventTestCase, {
481
* Tests that the default properties are correct.
483
testKeyCode : function () /*:Void*/{
485
//fire the click event
486
Y.Event.simulate(this.element, this.eventType, { keyCode: 97 });
488
//test the data coming back
489
Assert.isObject(this.result, "No event object created.");
490
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
491
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
492
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
493
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
494
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
495
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
496
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
497
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
498
Assert.areEqual(97, this.result.keyCode, "KeyCode is incorrect.");
503
//-------------------------------------------------------------------------
504
// TextEvent Test Case
505
//-------------------------------------------------------------------------
507
function TextEventTestCase(type /*:String*/){
508
TextEventTestCase.superclass.constructor.call(this, type);
511
Y.extend(TextEventTestCase, KeyEventTestCase, {
514
* Tests that the default properties are correct.
516
testCharCode : function () /*:Void*/{
518
//fire the click event
519
Y.Event.simulate(this.element, this.eventType, { charCode: 97 });
521
//test the data coming back
522
Assert.isObject(this.result, "No event object created.");
523
Assert.areSame(this.element, this.result.target || this.result.srcElement, "Target is not correct.");
524
Assert.areEqual(this.eventType, this.result.type, "Event type is incorrect.");
525
Assert.isTrue(this.result.bubbles, "bubbles is incorrect.");
526
Assert.isTrue(this.result.cancelable, "Cancelable is incorrect.");
527
Assert.isFalse(this.result.ctrlKey, "CtrlKey is incorrect.");
528
Assert.isFalse(this.result.altKey, "AltKey is incorrect.");
529
Assert.isFalse(this.result.shiftKey, "ShiftKey is incorrect.");
530
Assert.isFalse(this.result.metaKey, "MetaKey is incorrect.");
531
Assert.areEqual(97, this.result.charCode || this.result.keyCode, "CharCode is incorrect.");
536
//-------------------------------------------------------------------------
538
//-------------------------------------------------------------------------
540
//the user action suite
541
var suite /*:Y.Test.Suite*/
542
= new Y.Test.Suite("Event Simulate Tests");
544
var mouseEventsSuite /*:Y.Test.Suite*/
545
= new Y.Test.Suite("MouseEvent Tests");
546
suite.add(mouseEventsSuite);
548
var keyEventsSuite /*:Y.Test.Suite*/
549
= new Y.Test.Suite("KeyEvent Tests");
550
suite.add(keyEventsSuite);
552
var uiEventsSuite /*:Y.Test.Suite*/
553
= new Y.Test.Suite("UIEvents Tests");
554
suite.add(uiEventsSuite);
556
//-------------------------------------------------------------------------
558
//-------------------------------------------------------------------------
559
mouseEventsSuite.add(new MouseButtonEventTestCase("click"));
560
mouseEventsSuite.add(new MouseButtonEventTestCase("dblclick"));
561
mouseEventsSuite.add(new MouseButtonEventTestCase("mousedown"));
562
mouseEventsSuite.add(new MouseButtonEventTestCase("mouseup"));
563
mouseEventsSuite.add(new MouseMovementEventTestCase("mouseover"));
564
mouseEventsSuite.add(new MouseMovementEventTestCase("mouseout"));
566
//-------------------------------------------------------------------------
568
//-------------------------------------------------------------------------
569
keyEventsSuite.add(new KeyDirectionEventTestCase("keyup"));
570
keyEventsSuite.add(new KeyDirectionEventTestCase("keydown"));
571
keyEventsSuite.add(new TextEventTestCase("keypress"));
573
//-------------------------------------------------------------------------
575
//-------------------------------------------------------------------------
576
uiEventsSuite.add(new UIEventTestCase("change"));
577
uiEventsSuite.add(new UIEventTestCase("select"));
578
uiEventsSuite.add(new FocusBlurEventTestCase("blur"));
579
uiEventsSuite.add(new FocusBlurEventTestCase("focus"));
587
var r = new Y.Console({
596
//add to the testrunner and run
597
Y.Test.Runner.add(Y.Tests.EventSimulate);
600
/*if (parent && parent != window) {
601
YAHOO.tool.TestManager.load();
603
YAHOO.tool.TestRunner.run();