2
var testbed = Y.one('#testbed'),
7
testbed = body.create('<div id="testbed"></div>');
14
'<div id="div1"><p id="p1"># <em id="em1">1</em></p></div>' +
17
'<div id="div2"><p id="p2"># <em id="em2">2</em></p></div>' +
20
'<div id="div3"><p id="p3"># <em id="em3">3</em></p></div>' +
26
var testbed = Y.one('#testbed');
29
testbed.remove().destroy(true);
33
function mouse(target, out) {
34
var eventname = (out) ? 'mouseout' : 'mouseover',
35
testbed = Y.one('#testbed'),
36
testbedReached = false,
37
ancestors = Y.one(target).ancestors(function(node) {
38
if (node === testbed) {
39
testbedReached = true;
41
return !testbedReached;
46
for (i = ancestors.size() - 1; i >= 1; --i) {
50
{ relatedTarget: ancestors._nodes[i - 1] });
53
for (i = 1, len = ancestors.size(); i < len; ++i) {
57
{ relatedTarget: ancestors._nodes[i - 1] });
62
var suite = new Y.Test.Suite("event-hover"),
63
areSame = Y.Assert.areSame;
65
suite.add(new Y.Test.Case({
71
"test node.on('hover', over, out)": function () {
76
target = Y.one('#em1'),
77
overType, outType, overPhase, outPhase, overEType, outEType,
78
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
79
overRelTarget, outRelTarget,
80
overThisObj, outThisObj;
84
overArgCount = arguments.length;
87
overEType = e._event.type;
89
overTarget = e.target;
90
overCurrentTarget = e.currentTarget;
95
outArgCount = arguments.length;
98
outEType = e._event.type;
100
outTarget = e.target;
101
outCurrentTarget = e.currentTarget;
104
target.on('hover', over, out);
108
Y.Assert.areSame(1, overCount);
109
Y.Assert.areSame(1, overArgCount);
110
Y.Assert.areSame('hover', overType);
111
Y.Assert.areSame('over', overPhase);
112
Y.Assert.areSame('mouseover', overEType);
113
Y.Assert.areSame(target, overThisObj);
114
Y.Assert.areSame(target, overTarget);
115
Y.Assert.areSame(target, overCurrentTarget);
117
Y.Assert.areSame(0, outCount);
118
Y.Assert.areSame(0, outArgCount);
119
Y.Assert.isUndefined(outType);
120
Y.Assert.isUndefined(outPhase);
121
Y.Assert.isUndefined(outEType);
122
Y.Assert.isUndefined(outThisObj);
123
Y.Assert.isUndefined(outTarget);
124
Y.Assert.isUndefined(outCurrentTarget);
128
Y.Assert.areSame(1, overCount);
129
Y.Assert.areSame(1, overArgCount);
130
Y.Assert.areSame('hover', overType);
131
Y.Assert.areSame('over', overPhase);
132
Y.Assert.areSame('mouseover', overEType);
133
Y.Assert.areSame(target, overThisObj);
134
Y.Assert.areSame(target, overTarget);
135
Y.Assert.areSame(target, overCurrentTarget);
137
Y.Assert.areSame(1, outCount);
138
Y.Assert.areSame(1, outArgCount);
139
Y.Assert.areSame('hover', outType);
140
Y.Assert.areSame('out', outPhase);
141
Y.Assert.areSame('mouseout', outEType);
142
Y.Assert.areSame(target, outThisObj);
143
Y.Assert.areSame(target, outTarget);
144
Y.Assert.areSame(target, outCurrentTarget);
147
"test container.on('hover', over, out)": function () {
152
target = Y.one('#item1'),
153
overType, outType, overPhase, outPhase, overEType, outEType,
154
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
155
overRelTarget, outRelTarget,
156
overThisObj, outThisObj;
160
overArgCount = arguments.length;
163
overEType = e._event.type;
165
overTarget = e.target;
166
overCurrentTarget = e.currentTarget;
171
outArgCount = arguments.length;
174
outEType = e._event.type;
176
outTarget = e.target;
177
outCurrentTarget = e.currentTarget;
180
target.on('hover', over, out);
184
Y.Assert.areSame(1, overCount);
185
Y.Assert.areSame(1, overArgCount);
186
Y.Assert.areSame('hover', overType);
187
Y.Assert.areSame('over', overPhase);
188
Y.Assert.areSame('mouseover', overEType);
189
Y.Assert.areSame(target, overThisObj);
190
Y.Assert.areSame(target, overTarget);
191
Y.Assert.areSame(target, overCurrentTarget);
193
Y.Assert.areSame(0, outCount);
194
Y.Assert.areSame(0, outArgCount);
195
Y.Assert.isUndefined(outType);
196
Y.Assert.isUndefined(outPhase);
197
Y.Assert.isUndefined(outEType);
198
Y.Assert.isUndefined(outThisObj);
199
Y.Assert.isUndefined(outTarget);
200
Y.Assert.isUndefined(outCurrentTarget);
204
Y.Assert.areSame(1, overCount);
205
Y.Assert.areSame(1, overArgCount);
206
Y.Assert.areSame('hover', overType);
207
Y.Assert.areSame('over', overPhase);
208
Y.Assert.areSame('mouseover', overEType);
209
Y.Assert.areSame(target, overThisObj);
210
Y.Assert.areSame(target, overTarget);
211
Y.Assert.areSame(target, overCurrentTarget);
213
Y.Assert.areSame(1, outCount);
214
Y.Assert.areSame(1, outArgCount);
215
Y.Assert.areSame('hover', outType);
216
Y.Assert.areSame('out', outPhase);
217
Y.Assert.areSame('mouseout', outEType);
218
Y.Assert.areSame(target, outThisObj);
219
Y.Assert.areSame(target, outTarget);
220
Y.Assert.areSame(target, outCurrentTarget);
223
"test Y.on('hover', over, out, '#foo')": function () {
228
target = Y.one('#item1'),
229
overType, outType, overPhase, outPhase, overEType, outEType,
230
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
231
overRelTarget, outRelTarget,
232
overThisObj, outThisObj;
236
overArgCount = arguments.length;
239
overEType = e._event.type;
241
overTarget = e.target;
242
overCurrentTarget = e.currentTarget;
247
outArgCount = arguments.length;
250
outEType = e._event.type;
252
outTarget = e.target;
253
outCurrentTarget = e.currentTarget;
256
Y.on('hover', over, out, '#item1');
260
Y.Assert.areSame(1, overCount);
261
Y.Assert.areSame(1, overArgCount);
262
Y.Assert.areSame('hover', overType);
263
Y.Assert.areSame('over', overPhase);
264
Y.Assert.areSame('mouseover', overEType);
265
Y.Assert.areSame(target, overThisObj);
266
Y.Assert.areSame(target, overTarget);
267
Y.Assert.areSame(target, overCurrentTarget);
269
Y.Assert.areSame(0, outCount);
270
Y.Assert.areSame(0, outArgCount);
271
Y.Assert.isUndefined(outType);
272
Y.Assert.isUndefined(outPhase);
273
Y.Assert.isUndefined(outEType);
274
Y.Assert.isUndefined(outThisObj);
275
Y.Assert.isUndefined(outTarget);
276
Y.Assert.isUndefined(outCurrentTarget);
280
Y.Assert.areSame(1, overCount);
281
Y.Assert.areSame(1, overArgCount);
282
Y.Assert.areSame('hover', overType);
283
Y.Assert.areSame('over', overPhase);
284
Y.Assert.areSame('mouseover', overEType);
285
Y.Assert.areSame(target, overThisObj);
286
Y.Assert.areSame(target, overTarget);
287
Y.Assert.areSame(target, overCurrentTarget);
289
Y.Assert.areSame(1, outCount);
290
Y.Assert.areSame(1, outArgCount);
291
Y.Assert.areSame('hover', outType);
292
Y.Assert.areSame('out', outPhase);
293
Y.Assert.areSame('mouseout', outEType);
294
Y.Assert.areSame(target, outThisObj);
295
Y.Assert.areSame(target, outTarget);
296
Y.Assert.areSame(target, outCurrentTarget);
299
"test nodelist.on('hover', over, out)": function () {
304
item1 = Y.one('#item1'),
305
item2 = Y.one('#item2'),
306
item3 = Y.one('#item3'),
311
overCurrentTarget = [],
318
outCurrentTarget = [],
324
overArgCount = arguments.length;
325
overType.push(e.type);
326
overPhase.push(e.phase);
327
overEType.push(e._event.type);
328
overThisObj.push(this);
329
overTarget.push(e.target);
330
overCurrentTarget.push(e.currentTarget);
335
outArgCount = arguments.length;
336
outType.push(e.type);
337
outPhase.push(e.phase);
338
outEType.push(e._event.type);
339
outThisObj.push(this);
340
outTarget.push(e.target);
341
outCurrentTarget.push(e.currentTarget);
344
Y.all('#items li').on('hover', over, out);
346
mouse('#em1'); mouse("#em1", true);
348
Y.Assert.areSame(1, overCount);
349
Y.Assert.areSame(1, overArgCount);
350
Y.ArrayAssert.itemsAreSame(['hover'], overType);
351
Y.ArrayAssert.itemsAreSame(['over'], overPhase);
352
Y.ArrayAssert.itemsAreSame(['mouseover'], overEType);
353
Y.ArrayAssert.itemsAreSame([item1], overThisObj);
354
Y.ArrayAssert.itemsAreSame([item1], overTarget);
355
Y.ArrayAssert.itemsAreSame([item1], overCurrentTarget);
357
Y.Assert.areSame(1, outCount);
358
Y.Assert.areSame(1, outArgCount);
359
Y.ArrayAssert.itemsAreSame(['hover'], outType);
360
Y.ArrayAssert.itemsAreSame(['out'], outPhase);
361
Y.ArrayAssert.itemsAreSame(['mouseout'], outEType);
362
Y.ArrayAssert.itemsAreSame([item1], outThisObj);
363
Y.ArrayAssert.itemsAreSame([item1], outTarget);
364
Y.ArrayAssert.itemsAreSame([item1], outCurrentTarget);
366
mouse("#em2"); mouse("#em2", true);
367
mouse("#em3"); mouse("#em3", true);
369
Y.Assert.areSame(3, overCount);
370
Y.Assert.areSame(1, overArgCount);
371
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], overType);
372
Y.ArrayAssert.itemsAreSame(['over','over','over'], overPhase);
373
Y.ArrayAssert.itemsAreSame(['mouseover','mouseover','mouseover'], overEType);
374
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overThisObj);
375
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overTarget);
376
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overCurrentTarget);
378
Y.Assert.areSame(3, outCount);
379
Y.Assert.areSame(1, outArgCount);
380
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], outType);
381
Y.ArrayAssert.itemsAreSame(['out','out','out'], outPhase);
382
Y.ArrayAssert.itemsAreSame(['mouseout','mouseout','mouseout'], outEType);
383
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outThisObj);
384
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outTarget);
385
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outCurrentTarget);
388
"test node.delegate('hover', over, out, filter)": function () {
393
items = Y.one('#items'),
394
item1 = Y.one('#item1'),
395
item2 = Y.one('#item2'),
396
item3 = Y.one('#item3'),
401
overCurrentTarget = [],
408
outCurrentTarget = [],
417
overArgCount = arguments.length;
418
overType.push(e.type);
419
overPhase.push(e.phase);
420
overEType.push(e._event.type);
421
overThisObj.push(this);
422
overTarget.push(e.target);
423
overCurrentTarget.push(e.currentTarget);
424
overContainer.push(e.container);
429
outArgCount = arguments.length;
430
outType.push(e.type);
431
outPhase.push(e.phase);
432
outEType.push(e._event.type);
433
outThisObj.push(this);
434
outTarget.push(e.target);
435
outCurrentTarget.push(e.currentTarget);
436
outContainer.push(e.container);
439
items.delegate('hover', over, out, 'li');
441
mouse('#em1'); mouse("#em1", true);
443
Y.Assert.areSame(1, overCount);
444
Y.Assert.areSame(1, overArgCount);
445
Y.ArrayAssert.itemsAreSame(['hover'], overType);
446
Y.ArrayAssert.itemsAreSame(['over'], overPhase);
447
Y.ArrayAssert.itemsAreSame(['mouseover'], overEType);
448
Y.ArrayAssert.itemsAreSame([item1], overThisObj);
449
Y.ArrayAssert.itemsAreSame([item1], overTarget);
450
Y.ArrayAssert.itemsAreSame([item1], overCurrentTarget);
451
Y.ArrayAssert.itemsAreSame([items], overContainer);
453
Y.Assert.areSame(1, outCount);
454
Y.Assert.areSame(1, outArgCount);
455
Y.ArrayAssert.itemsAreSame(['hover'], outType);
456
Y.ArrayAssert.itemsAreSame(['out'], outPhase);
457
Y.ArrayAssert.itemsAreSame(['mouseout'], outEType);
458
Y.ArrayAssert.itemsAreSame([item1], outThisObj);
459
Y.ArrayAssert.itemsAreSame([item1], outTarget);
460
Y.ArrayAssert.itemsAreSame([item1], outCurrentTarget);
461
Y.ArrayAssert.itemsAreSame([items], overContainer);
463
mouse("#em2"); mouse("#em2", true);
464
mouse("#em3"); mouse("#em3", true);
466
Y.Assert.areSame(3, overCount);
467
Y.Assert.areSame(1, overArgCount);
468
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], overType);
469
Y.ArrayAssert.itemsAreSame(['over','over','over'], overPhase);
470
Y.ArrayAssert.itemsAreSame(['mouseover','mouseover','mouseover'], overEType);
471
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overThisObj);
472
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overTarget);
473
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overCurrentTarget);
474
Y.ArrayAssert.itemsAreSame([items, items, items], overContainer);
476
Y.Assert.areSame(3, outCount);
477
Y.Assert.areSame(1, outArgCount);
478
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], outType);
479
Y.ArrayAssert.itemsAreSame(['out','out','out'], outPhase);
480
Y.ArrayAssert.itemsAreSame(['mouseout','mouseout','mouseout'], outEType);
481
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outThisObj);
482
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outTarget);
483
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outCurrentTarget);
484
Y.ArrayAssert.itemsAreSame([items, items, items], outContainer);
487
"test node.on('hover', over, out, thisObj)": function () {
492
target = Y.one('#item1'),
493
obj = { foo: 'foo' },
494
overType, outType, overPhase, outPhase, overEType, outEType,
495
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
496
overRelTarget, outRelTarget,
497
overThisObj, outThisObj, overFoo, outFoo;
501
overArgCount = arguments.length;
504
overEType = e._event.type;
506
overTarget = e.target;
507
overCurrentTarget = e.currentTarget;
513
outArgCount = arguments.length;
516
outEType = e._event.type;
518
outTarget = e.target;
519
outCurrentTarget = e.currentTarget;
523
target.on('hover', over, out, obj);
525
mouse('#em1'); mouse("#em1", true);
527
Y.Assert.areSame(1, overCount);
528
Y.Assert.areSame(1, overArgCount);
529
Y.Assert.areSame('hover', overType);
530
Y.Assert.areSame('over', overPhase);
531
Y.Assert.areSame('mouseover', overEType);
532
Y.Assert.areSame(obj, overThisObj);
533
Y.Assert.areSame(target, overTarget);
534
Y.Assert.areSame(target, overCurrentTarget);
535
Y.Assert.areSame('foo', overFoo);
537
Y.Assert.areSame(1, outCount);
538
Y.Assert.areSame(1, outArgCount);
539
Y.Assert.areSame('hover', outType);
540
Y.Assert.areSame('out', outPhase);
541
Y.Assert.areSame('mouseout', outEType);
542
Y.Assert.areSame(obj, outThisObj);
543
Y.Assert.areSame(target, outTarget);
544
Y.Assert.areSame(target, outCurrentTarget);
545
Y.Assert.areSame('foo', outFoo);
548
"test Y.on('hover', over, out, '#foo', thisObj)": function () {
553
target = Y.one('#item1'),
554
obj = { foo: 'foo' },
555
overType, outType, overPhase, outPhase, overEType, outEType,
556
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
557
overRelTarget, outRelTarget,
558
overThisObj, outThisObj, overFoo, outFoo;
562
overArgCount = arguments.length;
565
overEType = e._event.type;
567
overTarget = e.target;
568
overCurrentTarget = e.currentTarget;
574
outArgCount = arguments.length;
577
outEType = e._event.type;
579
outTarget = e.target;
580
outCurrentTarget = e.currentTarget;
584
Y.on('hover', over, out, '#item1', obj);
586
mouse('#em1'); mouse("#em1", true);
588
Y.Assert.areSame(1, overCount);
589
Y.Assert.areSame(1, overArgCount);
590
Y.Assert.areSame('hover', overType);
591
Y.Assert.areSame('over', overPhase);
592
Y.Assert.areSame('mouseover', overEType);
593
Y.Assert.areSame(obj, overThisObj);
594
Y.Assert.areSame(target, overTarget);
595
Y.Assert.areSame(target, overCurrentTarget);
596
Y.Assert.areSame('foo', overFoo);
598
Y.Assert.areSame(1, outCount);
599
Y.Assert.areSame(1, outArgCount);
600
Y.Assert.areSame('hover', outType);
601
Y.Assert.areSame('out', outPhase);
602
Y.Assert.areSame('mouseout', outEType);
603
Y.Assert.areSame(obj, outThisObj);
604
Y.Assert.areSame(target, outTarget);
605
Y.Assert.areSame(target, outCurrentTarget);
606
Y.Assert.areSame('foo', outFoo);
609
"test nodelist.on('hover', over, out, thisObj)": function () {
614
item1 = Y.one('#item1'),
615
item2 = Y.one('#item2'),
616
item3 = Y.one('#item3'),
617
obj = { foo: 'foo' },
622
overCurrentTarget = [],
630
outCurrentTarget = [],
637
overArgCount = arguments.length;
638
overType.push(e.type);
639
overPhase.push(e.phase);
640
overEType.push(e._event.type);
641
overThisObj.push(this);
642
overTarget.push(e.target);
643
overCurrentTarget.push(e.currentTarget);
644
overFoo.push(this.foo);
649
outArgCount = arguments.length;
650
outType.push(e.type);
651
outPhase.push(e.phase);
652
outEType.push(e._event.type);
653
outThisObj.push(this);
654
outTarget.push(e.target);
655
outCurrentTarget.push(e.currentTarget);
656
outFoo.push(this.foo);
659
Y.all('#items li').on('hover', over, out, obj);
661
mouse('#em1'); mouse("#em1", true);
663
Y.Assert.areSame(1, overCount);
664
Y.Assert.areSame(1, overArgCount);
665
Y.ArrayAssert.itemsAreSame(['hover'], overType);
666
Y.ArrayAssert.itemsAreSame(['over'], overPhase);
667
Y.ArrayAssert.itemsAreSame(['mouseover'], overEType);
668
Y.ArrayAssert.itemsAreSame([obj], overThisObj);
669
Y.ArrayAssert.itemsAreSame([item1], overTarget);
670
Y.ArrayAssert.itemsAreSame([item1], overCurrentTarget);
672
Y.Assert.areSame(1, outCount);
673
Y.Assert.areSame(1, outArgCount);
674
Y.ArrayAssert.itemsAreSame(['hover'], outType);
675
Y.ArrayAssert.itemsAreSame(['out'], outPhase);
676
Y.ArrayAssert.itemsAreSame(['mouseout'], outEType);
677
Y.ArrayAssert.itemsAreSame([obj], outThisObj);
678
Y.ArrayAssert.itemsAreSame([item1], outTarget);
679
Y.ArrayAssert.itemsAreSame([item1], outCurrentTarget);
681
mouse("#em2"); mouse("#em2", true);
682
mouse("#em3"); mouse("#em3", true);
684
Y.Assert.areSame(3, overCount);
685
Y.Assert.areSame(1, overArgCount);
686
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], overType);
687
Y.ArrayAssert.itemsAreSame(['over','over','over'], overPhase);
688
Y.ArrayAssert.itemsAreSame(['mouseover','mouseover','mouseover'], overEType);
689
Y.ArrayAssert.itemsAreSame([obj, obj, obj], overThisObj);
690
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overTarget);
691
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overCurrentTarget);
693
Y.Assert.areSame(3, outCount);
694
Y.Assert.areSame(1, outArgCount);
695
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], outType);
696
Y.ArrayAssert.itemsAreSame(['out','out','out'], outPhase);
697
Y.ArrayAssert.itemsAreSame(['mouseout','mouseout','mouseout'], outEType);
698
Y.ArrayAssert.itemsAreSame([obj, obj, obj], outThisObj);
699
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outTarget);
700
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outCurrentTarget);
703
"test node.on('hover', over, out, thisObj, arg)": function () {
708
target = Y.one('#item1'),
709
obj = { foo: 'foo' },
710
overType, outType, overPhase, outPhase, overEType, outEType,
711
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
712
overRelTarget, outRelTarget,
713
overThisObj, outThisObj, overFoo, outFoo, overArg, outArg;
715
function over(e, x) {
717
overArgCount = arguments.length;
720
overEType = e._event.type;
722
overTarget = e.target;
723
overCurrentTarget = e.currentTarget;
730
outArgCount = arguments.length;
733
outEType = e._event.type;
735
outTarget = e.target;
736
outCurrentTarget = e.currentTarget;
741
target.on('hover', over, out, obj, "arg!");
743
mouse('#em1'); mouse("#em1", true);
745
Y.Assert.areSame(1, overCount);
746
Y.Assert.areSame(2, overArgCount);
747
Y.Assert.areSame('hover', overType);
748
Y.Assert.areSame('over', overPhase);
749
Y.Assert.areSame('mouseover', overEType);
750
Y.Assert.areSame(obj, overThisObj);
751
Y.Assert.areSame(target, overTarget);
752
Y.Assert.areSame(target, overCurrentTarget);
753
Y.Assert.areSame('foo', overFoo);
754
Y.Assert.areSame('arg!', overArg);
756
Y.Assert.areSame(1, outCount);
757
Y.Assert.areSame(2, outArgCount);
758
Y.Assert.areSame('hover', outType);
759
Y.Assert.areSame('out', outPhase);
760
Y.Assert.areSame('mouseout', outEType);
761
Y.Assert.areSame(obj, outThisObj);
762
Y.Assert.areSame(target, outTarget);
763
Y.Assert.areSame(target, outCurrentTarget);
764
Y.Assert.areSame('foo', outFoo);
765
Y.Assert.areSame('arg!', outArg);
768
"test Y.on('hover', over, out, '#foo', thisObj, arg)": function () {
773
target = Y.one('#item1'),
774
obj = { foo: 'foo' },
775
overType, outType, overPhase, outPhase, overEType, outEType,
776
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
777
overRelTarget, outRelTarget,
778
overThisObj, outThisObj, overFoo, outFoo, overArg, outArg;
780
function over(e, x) {
782
overArgCount = arguments.length;
785
overEType = e._event.type;
787
overTarget = e.target;
788
overCurrentTarget = e.currentTarget;
795
outArgCount = arguments.length;
798
outEType = e._event.type;
800
outTarget = e.target;
801
outCurrentTarget = e.currentTarget;
806
Y.on('hover', over, out, "#item1", obj, "arg!");
808
mouse('#em1'); mouse("#em1", true);
810
Y.Assert.areSame(1, overCount);
811
Y.Assert.areSame(2, overArgCount);
812
Y.Assert.areSame('hover', overType);
813
Y.Assert.areSame('over', overPhase);
814
Y.Assert.areSame('mouseover', overEType);
815
Y.Assert.areSame(obj, overThisObj);
816
Y.Assert.areSame(target, overTarget);
817
Y.Assert.areSame(target, overCurrentTarget);
818
Y.Assert.areSame('foo', overFoo);
819
Y.Assert.areSame('arg!', overArg);
821
Y.Assert.areSame(1, outCount);
822
Y.Assert.areSame(2, outArgCount);
823
Y.Assert.areSame('hover', outType);
824
Y.Assert.areSame('out', outPhase);
825
Y.Assert.areSame('mouseout', outEType);
826
Y.Assert.areSame(obj, outThisObj);
827
Y.Assert.areSame(target, outTarget);
828
Y.Assert.areSame(target, outCurrentTarget);
829
Y.Assert.areSame('foo', outFoo);
830
Y.Assert.areSame('arg!', outArg);
833
"test nodelist.on('hover', over, out, thisObj, arg)": function () {
838
item1 = Y.one('#item1'),
839
item2 = Y.one('#item2'),
840
item3 = Y.one('#item3'),
841
obj = { foo: 'foo' },
846
overCurrentTarget = [],
855
outCurrentTarget = [],
861
function over(e, x) {
863
overArgCount = arguments.length;
864
overType.push(e.type);
865
overPhase.push(e.phase);
866
overEType.push(e._event.type);
867
overThisObj.push(this);
868
overTarget.push(e.target);
869
overCurrentTarget.push(e.currentTarget);
870
overFoo.push(this.foo);
876
outArgCount = arguments.length;
877
outType.push(e.type);
878
outPhase.push(e.phase);
879
outEType.push(e._event.type);
880
outThisObj.push(this);
881
outTarget.push(e.target);
882
outCurrentTarget.push(e.currentTarget);
883
outFoo.push(this.foo);
887
Y.all('#items li').on('hover', over, out, obj, 'arg!');
889
mouse('#em1'); mouse("#em1", true);
891
Y.Assert.areSame(1, overCount);
892
Y.Assert.areSame(2, overArgCount);
893
Y.ArrayAssert.itemsAreSame(['hover'], overType);
894
Y.ArrayAssert.itemsAreSame(['over'], overPhase);
895
Y.ArrayAssert.itemsAreSame(['mouseover'], overEType);
896
Y.ArrayAssert.itemsAreSame([obj], overThisObj);
897
Y.ArrayAssert.itemsAreSame([item1], overTarget);
898
Y.ArrayAssert.itemsAreSame([item1], overCurrentTarget);
899
Y.ArrayAssert.itemsAreSame(['foo'], overFoo);
900
Y.ArrayAssert.itemsAreSame(['arg!'], overArg);
902
Y.Assert.areSame(1, outCount);
903
Y.Assert.areSame(2, outArgCount);
904
Y.ArrayAssert.itemsAreSame(['hover'], outType);
905
Y.ArrayAssert.itemsAreSame(['out'], outPhase);
906
Y.ArrayAssert.itemsAreSame(['mouseout'], outEType);
907
Y.ArrayAssert.itemsAreSame([obj], outThisObj);
908
Y.ArrayAssert.itemsAreSame([item1], outTarget);
909
Y.ArrayAssert.itemsAreSame([item1], outCurrentTarget);
910
Y.ArrayAssert.itemsAreSame(['foo'], outFoo);
911
Y.ArrayAssert.itemsAreSame(['arg!'], outArg);
913
mouse("#em2"); mouse("#em2", true);
914
mouse("#em3"); mouse("#em3", true);
916
Y.Assert.areSame(3, overCount);
917
Y.Assert.areSame(2, overArgCount);
918
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], overType);
919
Y.ArrayAssert.itemsAreSame(['over','over','over'], overPhase);
920
Y.ArrayAssert.itemsAreSame(['mouseover','mouseover','mouseover'], overEType);
921
Y.ArrayAssert.itemsAreSame([obj, obj, obj], overThisObj);
922
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overTarget);
923
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overCurrentTarget);
924
Y.ArrayAssert.itemsAreSame(['arg!', 'arg!', 'arg!'], overArg);
926
Y.Assert.areSame(3, outCount);
927
Y.Assert.areSame(2, outArgCount);
928
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], outType);
929
Y.ArrayAssert.itemsAreSame(['out','out','out'], outPhase);
930
Y.ArrayAssert.itemsAreSame(['mouseout','mouseout','mouseout'], outEType);
931
Y.ArrayAssert.itemsAreSame([obj, obj, obj], outThisObj);
932
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outTarget);
933
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outCurrentTarget);
934
Y.ArrayAssert.itemsAreSame(['arg!', 'arg!', 'arg!'], outArg);
937
"test node.on('hover', over, out, null, arg)": function () {
942
target = Y.one('#item1'),
943
overType, outType, overPhase, outPhase, overEType, outEType,
944
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
945
overRelTarget, outRelTarget,
946
overThisObj, outThisObj, overArg, outArg;
948
function over(e, x) {
950
overArgCount = arguments.length;
953
overEType = e._event.type;
955
overTarget = e.target;
956
overCurrentTarget = e.currentTarget;
962
outArgCount = arguments.length;
965
outEType = e._event.type;
967
outTarget = e.target;
968
outCurrentTarget = e.currentTarget;
972
target.on('hover', over, out, null, "arg!");
974
mouse('#em1'); mouse("#em1", true);
976
Y.Assert.areSame(1, overCount);
977
Y.Assert.areSame(2, overArgCount);
978
Y.Assert.areSame('hover', overType);
979
Y.Assert.areSame('over', overPhase);
980
Y.Assert.areSame('mouseover', overEType);
981
Y.Assert.areSame(target, overThisObj);
982
Y.Assert.areSame(target, overTarget);
983
Y.Assert.areSame(target, overCurrentTarget);
984
Y.Assert.areSame('arg!', overArg);
986
Y.Assert.areSame(1, outCount);
987
Y.Assert.areSame(2, outArgCount);
988
Y.Assert.areSame('hover', outType);
989
Y.Assert.areSame('out', outPhase);
990
Y.Assert.areSame('mouseout', outEType);
991
Y.Assert.areSame(target, outThisObj);
992
Y.Assert.areSame(target, outTarget);
993
Y.Assert.areSame(target, outCurrentTarget);
994
Y.Assert.areSame('arg!', outArg);
997
"test Y.on('hover', over, out, '#foo', null, arg)": function () {
1002
target = Y.one('#item1'),
1003
overType, outType, overPhase, outPhase, overEType, outEType,
1004
overTarget, outTarget, overCurrentTarget, outCurrentTarget,
1005
overRelTarget, outRelTarget,
1006
overThisObj, outThisObj, overArg, outArg;
1008
function over(e, x) {
1010
overArgCount = arguments.length;
1012
overPhase = e.phase;
1013
overEType = e._event.type;
1015
overTarget = e.target;
1016
overCurrentTarget = e.currentTarget;
1020
function out(e, x) {
1022
outArgCount = arguments.length;
1025
outEType = e._event.type;
1027
outTarget = e.target;
1028
outCurrentTarget = e.currentTarget;
1032
Y.on('hover', over, out, '#item1', null, "arg!");
1034
mouse('#em1'); mouse("#em1", true);
1036
Y.Assert.areSame(1, overCount);
1037
Y.Assert.areSame(2, overArgCount);
1038
Y.Assert.areSame('hover', overType);
1039
Y.Assert.areSame('over', overPhase);
1040
Y.Assert.areSame('mouseover', overEType);
1041
Y.Assert.areSame(target, overThisObj);
1042
Y.Assert.areSame(target, overTarget);
1043
Y.Assert.areSame(target, overCurrentTarget);
1044
Y.Assert.areSame('arg!', overArg);
1046
Y.Assert.areSame(1, outCount);
1047
Y.Assert.areSame(2, outArgCount);
1048
Y.Assert.areSame('hover', outType);
1049
Y.Assert.areSame('out', outPhase);
1050
Y.Assert.areSame('mouseout', outEType);
1051
Y.Assert.areSame(target, outThisObj);
1052
Y.Assert.areSame(target, outTarget);
1053
Y.Assert.areSame(target, outCurrentTarget);
1054
Y.Assert.areSame('arg!', outArg);
1057
"test nodelist.on('hover', over, out, null, arg": function () {
1062
item1 = Y.one('#item1'),
1063
item2 = Y.one('#item2'),
1064
item3 = Y.one('#item3'),
1069
overCurrentTarget = [],
1077
outCurrentTarget = [],
1082
function over(e, x) {
1084
overArgCount = arguments.length;
1085
overType.push(e.type);
1086
overPhase.push(e.phase);
1087
overEType.push(e._event.type);
1088
overThisObj.push(this);
1089
overTarget.push(e.target);
1090
overCurrentTarget.push(e.currentTarget);
1094
function out(e, x) {
1096
outArgCount = arguments.length;
1097
outType.push(e.type);
1098
outPhase.push(e.phase);
1099
outEType.push(e._event.type);
1100
outThisObj.push(this);
1101
outTarget.push(e.target);
1102
outCurrentTarget.push(e.currentTarget);
1106
Y.all('#items li').on('hover', over, out, null, 'arg!');
1108
mouse('#em1'); mouse("#em1", true);
1110
Y.Assert.areSame(1, overCount);
1111
Y.Assert.areSame(2, overArgCount);
1112
Y.ArrayAssert.itemsAreSame(['hover'], overType);
1113
Y.ArrayAssert.itemsAreSame(['over'], overPhase);
1114
Y.ArrayAssert.itemsAreSame(['mouseover'], overEType);
1115
Y.ArrayAssert.itemsAreSame([item1], overThisObj);
1116
Y.ArrayAssert.itemsAreSame([item1], overTarget);
1117
Y.ArrayAssert.itemsAreSame([item1], overCurrentTarget);
1118
Y.ArrayAssert.itemsAreSame(['arg!'], overArg);
1120
Y.Assert.areSame(1, outCount);
1121
Y.Assert.areSame(2, outArgCount);
1122
Y.ArrayAssert.itemsAreSame(['hover'], outType);
1123
Y.ArrayAssert.itemsAreSame(['out'], outPhase);
1124
Y.ArrayAssert.itemsAreSame(['mouseout'], outEType);
1125
Y.ArrayAssert.itemsAreSame([item1], outThisObj);
1126
Y.ArrayAssert.itemsAreSame([item1], outTarget);
1127
Y.ArrayAssert.itemsAreSame([item1], outCurrentTarget);
1128
Y.ArrayAssert.itemsAreSame(['arg!'], outArg);
1130
mouse("#em2"); mouse("#em2", true);
1131
mouse("#em3"); mouse("#em3", true);
1133
Y.Assert.areSame(3, overCount);
1134
Y.Assert.areSame(2, overArgCount);
1135
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], overType);
1136
Y.ArrayAssert.itemsAreSame(['over','over','over'], overPhase);
1137
Y.ArrayAssert.itemsAreSame(['mouseover','mouseover','mouseover'], overEType);
1138
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overThisObj);
1139
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overTarget);
1140
Y.ArrayAssert.itemsAreSame([item1, item2, item3], overCurrentTarget);
1141
Y.ArrayAssert.itemsAreSame(['arg!', 'arg!', 'arg!'], overArg);
1143
Y.Assert.areSame(3, outCount);
1144
Y.Assert.areSame(2, outArgCount);
1145
Y.ArrayAssert.itemsAreSame(['hover','hover','hover'], outType);
1146
Y.ArrayAssert.itemsAreSame(['out','out','out'], outPhase);
1147
Y.ArrayAssert.itemsAreSame(['mouseout','mouseout','mouseout'], outEType);
1148
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outThisObj);
1149
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outTarget);
1150
Y.ArrayAssert.itemsAreSame([item1, item2, item3], outCurrentTarget);
1151
Y.ArrayAssert.itemsAreSame(['arg!', 'arg!', 'arg!'], outArg);
1154
// node.delegate + thisObj + args
1155
// Y.delegate + thisObj + args
1158
suite.add(new Y.Test.Case({
1164
"test node.on('hover', over, out); node.detach('hover');": function () {
1167
target = Y.one('#item1');
1169
function over() { overCount++; }
1170
function out() { outCount++; }
1172
target.on('hover', over, out);
1174
mouse('#item1'); mouse('#item1', true);
1176
Y.Assert.areSame(1, overCount);
1177
Y.Assert.areSame(1, outCount);
1179
target.detach('hover');
1181
mouse('#item1'); mouse('#item1', true);
1183
Y.Assert.areSame(1, overCount);
1184
Y.Assert.areSame(1, outCount);
1187
"test node.on('hover', over, out); node.detach('hover', over);": function () {
1190
target = Y.one('#item1');
1192
function over() { overCount++; }
1193
function out() { outCount++; }
1195
target.on('hover', over, out);
1197
mouse('#item1'); mouse('#item1', true);
1199
Y.Assert.areSame(1, overCount);
1200
Y.Assert.areSame(1, outCount);
1202
target.detach('hover', over);
1204
mouse('#item1'); mouse('#item1', true);
1206
Y.Assert.areSame(1, overCount);
1207
Y.Assert.areSame(1, outCount);
1210
"test node.on('cat|hover', over, out); node.detach('cat|hover');": function () {
1213
target = Y.one('#item1');
1215
function over() { overCount++; }
1216
function out() { outCount++; }
1218
target.on('cat|hover', over, out);
1220
mouse('#item1'); mouse('#item1', true);
1222
Y.Assert.areSame(1, overCount);
1223
Y.Assert.areSame(1, outCount);
1225
target.detach('cat|hover');
1227
mouse('#item1'); mouse('#item1', true);
1229
Y.Assert.areSame(1, overCount);
1230
Y.Assert.areSame(1, outCount);
1233
"test node.on('cat|hover', over, out); node.detach('cat|*');": function () {
1236
target = Y.one('#item1');
1238
function over() { overCount++; }
1239
function out() { outCount++; }
1241
target.on('cat|hover', over, out);
1243
mouse('#item1'); mouse('#item1', true);
1245
Y.Assert.areSame(1, overCount);
1246
Y.Assert.areSame(1, outCount);
1248
target.detach('cat|*');
1250
mouse('#item1'); mouse('#item1', true);
1252
Y.Assert.areSame(1, overCount);
1253
Y.Assert.areSame(1, outCount);
1256
"test node.on('hover', over, out); handle.detach();": function () {
1259
over = function () { overCount++; },
1260
out = function () { outCount++; },
1261
handle = Y.one('#item1').on('cat|hover', over, out);
1263
mouse('#item1'); mouse('#item1', true);
1265
Y.Assert.areSame(1, overCount);
1266
Y.Assert.areSame(1, outCount);
1270
mouse('#item1'); mouse('#item1', true);
1272
Y.Assert.areSame(1, overCount);
1273
Y.Assert.areSame(1, outCount);
1276
"test node.delegate('hover', over, out, filter); node.detach('hover');": function () {
1279
target = Y.one('#items');
1281
function over() { overCount++; }
1282
function out() { outCount++; }
1284
target.delegate('hover', over, out, 'li');
1286
mouse('#item1'); mouse('#item1', true);
1287
mouse('#item2'); mouse('#item2', true);
1288
mouse('#item3'); mouse('#item3', true);
1290
Y.Assert.areSame(3, overCount);
1291
Y.Assert.areSame(3, outCount);
1293
target.detach('hover');
1295
mouse('#item1'); mouse('#item1', true);
1296
mouse('#item2'); mouse('#item2', true);
1297
mouse('#item3'); mouse('#item3', true);
1299
Y.Assert.areSame(3, overCount);
1300
Y.Assert.areSame(3, outCount);
1303
"test node.delegate('hover', over, out, filter); node.detach('hover', over);": function () {
1306
target = Y.one('#items');
1308
function over() { overCount++; }
1309
function out() { outCount++; }
1311
target.delegate('hover', over, out, 'li');
1313
mouse('#item1'); mouse('#item1', true);
1314
mouse('#item2'); mouse('#item2', true);
1315
mouse('#item3'); mouse('#item3', true);
1317
Y.Assert.areSame(3, overCount);
1318
Y.Assert.areSame(3, outCount);
1320
target.detach('hover', over);
1322
mouse('#item1'); mouse('#item1', true);
1323
mouse('#item2'); mouse('#item2', true);
1324
mouse('#item3'); mouse('#item3', true);
1326
Y.Assert.areSame(3, overCount);
1327
Y.Assert.areSame(3, outCount);
1330
"test node.delegate('cat|hover', over, out, filter); node.detach('cat|hover');": function () {
1333
target = Y.one('#items');
1335
function over() { overCount++; }
1336
function out() { outCount++; }
1338
target.delegate('cat|hover', over, out, 'li');
1340
mouse('#item1'); mouse('#item1', true);
1341
mouse('#item2'); mouse('#item2', true);
1342
mouse('#item3'); mouse('#item3', true);
1344
Y.Assert.areSame(3, overCount);
1345
Y.Assert.areSame(3, outCount);
1347
target.detach('cat|hover');
1349
mouse('#item1'); mouse('#item1', true);
1350
mouse('#item2'); mouse('#item2', true);
1351
mouse('#item3'); mouse('#item3', true);
1353
Y.Assert.areSame(3, overCount);
1354
Y.Assert.areSame(3, outCount);
1357
"test node.delegate('cat|hover', over, out, filter); node.detach('cat|*');": function () {
1360
target = Y.one('#items');
1362
function over() { overCount++; }
1363
function out() { outCount++; }
1365
target.delegate('cat|hover', over, out, 'li');
1367
mouse('#item1'); mouse('#item1', true);
1368
mouse('#item2'); mouse('#item2', true);
1369
mouse('#item3'); mouse('#item3', true);
1371
Y.Assert.areSame(3, overCount);
1372
Y.Assert.areSame(3, outCount);
1374
target.detach('cat|*');
1376
mouse('#item1'); mouse('#item1', true);
1377
mouse('#item2'); mouse('#item2', true);
1378
mouse('#item3'); mouse('#item3', true);
1380
Y.Assert.areSame(3, overCount);
1381
Y.Assert.areSame(3, outCount);
1384
"test node.delegate('hover', over, out, filter); handle.detach();": function () {
1387
over = function () { overCount++; },
1388
out = function () { outCount++; },
1389
handle = Y.one('#items').delegate('cat|hover', over, out, 'li');
1391
mouse('#item1'); mouse('#item1', true);
1392
mouse('#item2'); mouse('#item2', true);
1393
mouse('#item3'); mouse('#item3', true);
1395
Y.Assert.areSame(3, overCount);
1396
Y.Assert.areSame(3, outCount);
1400
mouse('#item1'); mouse('#item1', true);
1401
mouse('#item2'); mouse('#item2', true);
1402
mouse('#item3'); mouse('#item3', true);
1404
Y.Assert.areSame(3, overCount);
1405
Y.Assert.areSame(3, outCount);
1409
Y.Test.Runner.add(suite);