Cross Reference: /yui3/src/event-custom/tests/customevent.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<html>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<head>
21f450f4fd5fd60f951de44878aae015ed0342e3Adam Moore<title>YUI3 Custom Event Tests</title>
cb4f4f79feb7498d1f3406b88fb62209e5f5a444Adam Moore<script type="text/javascript" src="/build/yui/yui.js"></script>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore</head>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
0a9c6f9f30a66e52ec4ea4ed93504580b3a5669aAdam Moore<body class="yui3-skin-sam">
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<h1>Event Tests</h1>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
4f2de35716c5df46152747980516af484d0ab208Adam Moore<div id="adiv">a div</div>
03f9aefec605c500b64625110a955e65b900b100Adam Moore<div id="demo" class="yui-module">
03f9aefec605c500b64625110a955e65b900b100Adam Moore <div class="yui-hd">
03f9aefec605c500b64625110a955e65b900b100Adam Moore <h4>Animation Demo</h4>
03f9aefec605c500b64625110a955e65b900b100Adam Moore <a title="remove module" class="yui-remove"><em>x</em></a>
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore </div>
03f9aefec605c500b64625110a955e65b900b100Adam Moore <div class="yui-bd">
03f9aefec605c500b64625110a955e65b900b100Adam Moore <p>This an example of what you can do with the YUI Animation Utility.</p>
03f9aefec605c500b64625110a955e65b900b100Adam Moore <p><em>Follow the instructions above to see the animation in action.</em></p>
03f9aefec605c500b64625110a955e65b900b100Adam Moore </div>
03f9aefec605c500b64625110a955e65b900b100Adam Moore</div>
03f9aefec605c500b64625110a955e65b900b100Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
02fc09f797e83e80199c96adc4751c230dccc973Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore<script type="text/javascript">
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore(function() {
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore var global_notified;
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore //YUI.add("selector-native", function(){});
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore YUI({
a4a12866ef14f142b1a799fc246a542d69af602bLuke Smith filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min',
a4a12866ef14f142b1a799fc246a542d69af602bLuke Smith allowRollup: false,
b46f3d670b654847b0ce60afdba1b461c492a5c9Adam Moore onCSS: function(Y) {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.log('CSS is done loading', 'info', 'testcase');
b46f3d670b654847b0ce60afdba1b461c492a5c9Adam Moore },
cb4f4f79feb7498d1f3406b88fb62209e5f5a444Adam Moore logExclude: { get: true, Dom: true, Selector: true, Node: true, attribute: true, event: true, base: true, widget: true },
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore filters: {
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore base: 'raw',
0771d781138a507b3e657573703f511291640bf3Adam Moore // dom: null,
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore attribute: 'min'
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore }
03f9aefec605c500b64625110a955e65b900b100Adam Moore }).use("dump", "test", "anim", "console", function(Y) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore // Y.Global.on('yui:log', function(e) {
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore // console.log('GLOBAL LOG: ' + e.msg);
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore // });
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore
b238e52ac22e07b0798ae7b0f63f3fe0e8f9bf95Adam Moore var button = Y.one('#btnRun');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore // Set up the page
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore button.set("disabled", false);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.on("click", function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Test.Runner.run();
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }, button);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore var myConsole = new Y.Console().render();
2690c090ce850e485d15cf691f59e8aaeb3b4bb1Adam Moore Y.log('{}');
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var testEventTarget = new Y.Test.Case({
21f450f4fd5fd60f951de44878aae015ed0342e3Adam Moore name: "Custom event tests",
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith _should: {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith fail: {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testStopFnOnceFromBubbleTarget: "ticket pending",
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testStopFnFromBubbleTarget: "ticket pending"
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore testAugment: function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var fired = false;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var O = function(id) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore this.id = id;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('O constructor executed ' + id);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore O.prototype = {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore oOo: function(ok) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('oOo');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore // pass configuration info into EventTarget with the following
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore // construct
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore Y.augment(O, Y.EventTarget, null, null, {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore emitFacade: true
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore var o = new O(),
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore handle = o.on('testAugment', function(e, arg1, arg2) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(this instanceof O);
0d1c0eaa8a51a181149d802dacbe840f9990e7f5Adam Moore Y.Assert.isTrue(e instanceof Y.EventFacade);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(e.foo === 'afoo');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(e.details[1] === 1);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(arg1 === 1);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(arg2 === 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired = true;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore o.fire('testAugment', { foo: 'afoo' }, 1, 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(fired);
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore handle.detach();
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore // if the first argument is not an object, the
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore // event facade is moved in front of the args rather
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore // than overwriting existing object.
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore o.on('testAugment', function(e, arg1, arg2) {
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore Y.Assert.areEqual(1, arg1);
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore Y.Assert.areEqual(2, arg2);
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore });
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore o.fire('testAugment', 1, 2);
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore },
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore test_detach_by_signature: function() {
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore var anim = new Y.Anim({
03f9aefec605c500b64625110a955e65b900b100Adam Moore node: '#demo',
03f9aefec605c500b64625110a955e65b900b100Adam Moore to: { opacity: 0 }
03f9aefec605c500b64625110a955e65b900b100Adam Moore }),
e809fe662b10fe7accafd6458c68ef95b307db6dAdam Moore count = 0;
03f9aefec605c500b64625110a955e65b900b100Adam Moore tester = function() {
03f9aefec605c500b64625110a955e65b900b100Adam Moore count++;
03f9aefec605c500b64625110a955e65b900b100Adam Moore Y.detach('foo', tester);
03f9aefec605c500b64625110a955e65b900b100Adam Moore };
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore Y.on('foo', tester);
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore Y.fire('foo');
03f9aefec605c500b64625110a955e65b900b100Adam Moore Y.fire('foo');
03f9aefec605c500b64625110a955e65b900b100Adam Moore Y.Assert.areEqual(1, count);
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore var onEnd = function() {
03f9aefec605c500b64625110a955e65b900b100Adam Moore count++;
03f9aefec605c500b64625110a955e65b900b100Adam Moore // this.detach('anim:end', onEnd);
03f9aefec605c500b64625110a955e65b900b100Adam Moore this.detach('end', onEnd);
03f9aefec605c500b64625110a955e65b900b100Adam Moore this.setAttrs({
03f9aefec605c500b64625110a955e65b900b100Adam Moore to: { height: 1 },
03f9aefec605c500b64625110a955e65b900b100Adam Moore easing: Y.Easing.bounceOut
03f9aefec605c500b64625110a955e65b900b100Adam Moore });
03f9aefec605c500b64625110a955e65b900b100Adam Moore this.run();
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore if (count > 2) {
03f9aefec605c500b64625110a955e65b900b100Adam Moore throw new Error('onEnd should only have happened once');
03f9aefec605c500b64625110a955e65b900b100Adam Moore }
03f9aefec605c500b64625110a955e65b900b100Adam Moore };
03f9aefec605c500b64625110a955e65b900b100Adam Moore
e809fe662b10fe7accafd6458c68ef95b307db6dAdam Moore // anim.on('end', onEnd);
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore anim.run();
03f9aefec605c500b64625110a955e65b900b100Adam Moore anim.run();
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore
03f9aefec605c500b64625110a955e65b900b100Adam Moore },
03f9aefec605c500b64625110a955e65b900b100Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore testExtend: function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var fired = false;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var Base = function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('Base constructor executed');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore arguments.callee.superclass.constructor.apply(this, arguments);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore Y.extend(Base, Y.EventTarget, {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore base: function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('all your base...');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var b = new Base();
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore b.on('testExtend', function(arg1, arg2) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(this instanceof Base);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(arg1 === 1);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(arg2 === 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired = true;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore b.fire('testExtend', 1, 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(fired);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore },
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore testPrefix: function() {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var fired1 = false,
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired2 = false;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var O = function(id) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore this.id = id;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('O constructor executed ' + id);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore O.prototype = {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore oOo: function(ok) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.log('oOo');
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore // pass configuration info into EventTarget with the following
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore // construct
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore Y.augment(O, Y.EventTarget, null, null, {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore emitFacade: true,
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore prefix: 'prefix'
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore var o = new O();
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore o.on('testPrefix', function(e, arg1, arg2) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(this instanceof O);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired1 = true;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore o.on('prefix:testPrefix', function(e, arg1, arg2) {
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(this instanceof O);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired2 = true;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore o.fire('testPrefix', { foo: 'afoo' }, 1, 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(fired1);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore // Y.Assert.isTrue(fired2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired1 = false;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fired2 = false;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore o.fire('prefix:testPrefix', { foo: 'afoo' }, 1, 2);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(fired1);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Assert.isTrue(fired2);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore },
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore testDetachKey: function() {
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore var fired1 = false,
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired2 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9c69eb57afb13ae0ffed8e442449f04922fe30adAdam Moore Y.on('handle|test:event', function() {
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired1 = true;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore });
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore // one listener
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore Y.fire('test:event');
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isTrue(fired1);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isFalse(fired2);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9c69eb57afb13ae0ffed8e442449f04922fe30adAdam Moore Y.detach('handle|test:event');
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired1 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired2 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9c69eb57afb13ae0ffed8e442449f04922fe30adAdam Moore Y.on('handle|test:event', function() {
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired2 = true;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore });
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore // first lisener detached, added a new listener
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore Y.fire('test:event');
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isFalse(fired1);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isTrue(fired2);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
9c69eb57afb13ae0ffed8e442449f04922fe30adAdam Moore Y.detach('handle|test:event');
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired1 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired2 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.after('handle|test:event', function(arg1) {
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.Assert.areEqual('orange', arg1);
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore Y.Assert.isTrue(fired1);
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore fired2 = true;
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore });
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore
8c73ff96cdb702124fb8ca87e9135cee38195253Adam Moore // comma or pipe
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.on('handle|test:event', function(arg1) {
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.Assert.areEqual('orange', arg1);
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore Y.Assert.isFalse(fired2);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore fired1 = true;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore });
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore // testing on and after order
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.fire('test:event', 'orange');
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore fired1 = false;
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore fired2 = false;
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore // spaces after the comma or lack thereof should have
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore // no effect on the addition or removal of listeners
b51141cca8274097a520f6ead83a4c205b0502f1Adam Moore var ret = Y.detach('handle|test:event');
b51141cca8274097a520f6ead83a4c205b0502f1Adam Moore
b51141cca8274097a520f6ead83a4c205b0502f1Adam Moore Y.Assert.areEqual(Y, ret);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore // added both an on listener and an after listener,
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore // then detached both
7aa876bc6c31de0d6ada455f2125dd549aaa0ee0Adam Moore Y.fire('test:event', 'orange');
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isFalse(fired1);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore Y.Assert.isFalse(fired2);
9bc9c1474a84983bd254adc2bc425c5b24d25526Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore },
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore testDetachAllByKey: function() {
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore var fired1 = false,
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore fired2 = false;
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
efa57736d44cf446f1661497a8645bd388b493fbAdam Moore Y.after('handle|event2', function() {
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore fired2 = true;
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore });
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
efa57736d44cf446f1661497a8645bd388b493fbAdam Moore Y.on('handle|event2', function() {
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore fired1 = true;
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore });
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore // detachAll
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore Y.detach('handle|*');
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
efa57736d44cf446f1661497a8645bd388b493fbAdam Moore Y.fire('event2');
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore Y.Assert.isFalse(fired1, 'fired1, the after listener should not have fired.');
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore Y.Assert.isFalse(fired2, 'fired2, the on listener should not have fired.');
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore },
8aa0880cd494c951e0f4aa7d82d8bdac7692c7d0Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore testChain: function() {
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var fired1 = false,
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired2 = false,
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired3 = false,
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired4 = false,
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired5 = false;
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // should be executed once, after f2
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var f1 = function() {
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore Y.Assert.isTrue(fired2);
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired1 = true;
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore };
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // should be executed once, before f1
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var f2 = function() {
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore Y.Assert.isFalse(fired1);
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired2 = true;
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore };
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // should be executed once, different event from f1 and f2
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var f3 = function() {
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired3 = true;
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore };
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // detached before fired, should not executed
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var f4 = function() {
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired4 = true;
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore };
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // should fire once, preserving the custom prefix rather
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // than using the configured event target prefix
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var f5 = function() {
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore fired5 = true;
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore };
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
ba9518d6366a8c1c3a1d027fdc652d92759e101bAdam Moore // configure chaining via global default or on the event target
482388c306e346930994afd7e59b3af43c00aac6Adam Moore YUI({ /* chain: true */
0dca577a07715960da42d47787eecc25b285182fAdam Moore base:'/build/',
0dca577a07715960da42d47787eecc25b285182fAdam Moore logInclude: {
0dca577a07715960da42d47787eecc25b285182fAdam Moore test: true
0dca577a07715960da42d47787eecc25b285182fAdam Moore }
e4377e1af34e57ac1ca97e67e81c53f6a4347e55Adam Moore }).use('event-custom', function(Y2) {
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore var o = new Y2.EventTarget({
ba9518d6366a8c1c3a1d027fdc652d92759e101bAdam Moore prefix: 'foo',
ba9518d6366a8c1c3a1d027fdc652d92759e101bAdam Moore chain : true
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore });
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // without event target prefix manipulation (incomplete now)
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore // @TODO an error here is throwing an uncaught exception rather than failing the test
ed130182a3af03d1123fae83204a804c7a2ac0d3Adam Moore // Y2.after('p:e', f1).on('p:e', f2).on('p:e2', f3).on('detach, p:e', f4).detach('detach, p:e').fire('p:e').fire('p:e2');
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
482388c306e346930994afd7e59b3af43c00aac6Adam Moore // with event target prefix manipulation ('e' is the same event as 'foo:e',
ed130182a3af03d1123fae83204a804c7a2ac0d3Adam Moore // but 'pre:e' is a different event only accessible by using that exact name)
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Mooreo.after('e', f1).on('foo:e', f2).on('foo:e2', f3).on('detach, e', f4).detach('detach,e').fire('foo:e').fire('e2').on('pre:e', f5).fire('pre:e');
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore Y.Assert.isTrue(fired1); // verifies chaining, on/after order, and adding the event target prefix
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore Y.Assert.isTrue(fired2); // verifies chaining, on/after order, and accepting the prefix in the event name
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore Y.Assert.isTrue(fired3); // verifies no interaction between events, and prefix manipulation
ed130182a3af03d1123fae83204a804c7a2ac0d3Adam Moore Y.Assert.isFalse(fired4); // verifies detach works (regardless of spaces after comma)
2d71b4319c515f49ca328e3e00bb08d35ed5c161Adam Moore Y.Assert.isTrue(fired5); // verifies custom prefix
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
bd6676c46a56d23b5e6f4702054bbd52e3d6f05fAdam Moore });
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore },
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore testObjType: function() {
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore var f1, f2;
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore Y.on({
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore 'y:click': function() {f1 = true},
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore 'y:clack': function() {f2 = true}
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore });
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore Y.fire('y:click');
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore Y.fire('y:clack');
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore Y.Assert.isTrue(f1);
df5cf7dae3c20d8c50c036ea90987ec21f59614aAdam Moore Y.Assert.isTrue(f2);
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore },
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore testBubble: function() {
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore var count = 0,
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore ret,
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore config = {
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore emitFacade: true,
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore bubbles: true
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore },
482388c306e346930994afd7e59b3af43c00aac6Adam Moore a = new Y.EventTarget(config),
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore b = new Y.EventTarget(config);
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore b.addTarget(a);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore // this should not be necessary // fixed
bbcd1d0c70bd65221c0b025eb0a931fdbde1a45bAdam Moore // b.publish('test:foo');
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore a.on('test:foo', function(e) {
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore count++;
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore // we will fire this on the parent, so that should be the target
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore Y.Assert.areEqual(b, e.target);
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore Y.Assert.areEqual(a, e.currentTarget);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore });
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
3f3aa287185afb5d48d7ef0717054a154c372dc9Adam Moore ret = b.fire('test:foo', {}, b);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore Y.Assert.areEqual(1, count);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore Y.Assert.isTrue(ret);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore b.on('test:foo', function(e) {
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore e.stopPropagation();
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore });
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
3f3aa287185afb5d48d7ef0717054a154c372dc9Adam Moore ret = b.fire('test:foo', {}, b);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore Y.Assert.areEqual(1, count);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore Y.Assert.isFalse(ret);
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore },
4ed6c4c5fd18811cfc57f26a1c593307d1867746Adam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore testPreventFnOnce: function() {
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore var count = 0;
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.publish('y:foo1', {
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore emitFacade: true,
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore preventedFn: function() {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count++;
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.Assert.isTrue(this instanceof YUI);
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore }
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore });
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.on('y:foo1', function(e) {
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore e.preventDefault();
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore });
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.on('y:foo1', function(e) {
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore e.preventDefault();
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore });
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.fire('y:foo1');
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore
b3bd569e322a241dcb9aa531d7a7d9ed13766007Adam Moore Y.Assert.areEqual(1, count);
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore },
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testPreventFromBubbleTarget: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith var count = 0,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target = new Y.EventTarget({ prefix: 'x' });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.publish('foo', {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith emitFacade: true,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith preventedFn: function() {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count++;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.addTarget(Y);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.on('x:foo', function(e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.preventDefault();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testPreventedFnOnceFromBubbleTarget: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith var count = 0,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target = new Y.EventTarget({ prefix: 'x' });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.publish('foo', {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith emitFacade: true,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith preventedFn: function() {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count++;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.addTarget(Y);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.on('x:foo', function(e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.preventDefault();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.on('x:foo', function(e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.preventDefault();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.preventDefault();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(2, count);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testStopFnOnce: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith var count = 0,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target = new Y.EventTarget({ prefix: 'a' });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.publish('foo', {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith emitFacade: true,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith stoppedFn: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count++;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith target.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testStopFnFromBubbleTarget: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith var count = 0,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin = new Y.EventTarget({ prefix: 'a' }),
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB = new Y.EventTarget({ prefix: 'b' });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.publish('foo', {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith emitFacade: true,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith stoppedFn: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count++;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith testStopFnOnceFromBubbleTarget: function () {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith var count = 0,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin = new Y.EventTarget({ prefix: 'a' }),
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB = new Y.EventTarget({ prefix: 'b' }),
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetC = new Y.EventTarget({ prefix: 'c' });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.publish('foo', {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith emitFacade: true,
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith stoppedFn: function() {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count++;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith }
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB.addTarget(targetC);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.addTarget(targetB);
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetB.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count, "stopProp called twice from bubble target resulted in stoppedFn called wrong number of times");
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count = 0;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith targetC.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count, "stopProp called from intermediate bubble target didn't prevent stoppedFn call from subsequent bubble target");
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith count = 0;
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.on('foo', function (e) {
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith e.stopPropagation();
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith });
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith origin.fire('foo');
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith Y.Assert.areEqual(1, count, "stopProp called from event origin subscription didn't prevent calls to stoppedFn from bubble target");
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith },
e281a15571f07a6b4da34d2ffd674dbeb5dfd612Luke Smith
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore testDetachHandle: function() {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore var count = 0, handle, handle2;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.publish('y:foo', {
f21a4beaef1cd810a2ca714086ee81ef7753811fAdam Moore emitFacade: true
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.on('y:foo', function(e) {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count++;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore handle2.detach();
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore handle = Y.on('y:foo', function(e) {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count += 100;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore handle2 = Y.on('y:foo', function(e) {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count += 1000;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.detach(handle);
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.fire('y:foo');
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.Assert.areEqual(1, count);
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count = 0;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore var handle3 = Y.on('y:click', function() {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count++;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore handle3.detach();
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.fire('y:click');
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.fire('y:click');
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore var o = new Y.EventTarget();
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count = 0;
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore o.on('foo', function(e) {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count++;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore o.on('foo', function(e) {
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore count++;
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore });
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore o.detachAll();
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore o.fire('foo');
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore Y.Assert.areEqual(0, count);
5740f3112d19859eebaba7b3b8b95e6bc14beffbAdam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore var handle3 = Y.on('y:click', function() {
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore count++;
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore });
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore // detachAll can't be allowed to work on the YUI instance.
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore Y.detachAll();
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore Y.fire('y:click');
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore
fb49666327c2cb6ea5a7d2dea5160b649bc07c51Adam Moore Y.Assert.areEqual(1, count);
0f2f588af92633581627b768ccac61af079d87cfAdam Moore },
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
13060ea8e194930917f0243edd6ca469a91472e8Adam Moore testBroadcast: function() {
0f2f588af92633581627b768ccac61af079d87cfAdam Moore var o = new Y.EventTarget(), s1, s2, s3, s4;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore o.publish('y:foo2', {
0f2f588af92633581627b768ccac61af079d87cfAdam Moore emitFacade: true,
0f2f588af92633581627b768ccac61af079d87cfAdam Moore broadcast: 1
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.on('y:foo2', function() {
bec687aba7976035d86626c750ea65c65ce13733Adam Moore Y.log('Y foo2 executed');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s1 = 1;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore Y.Global.on('y:foo2', function() {
bec687aba7976035d86626c750ea65c65ce13733Adam Moore Y.log('GLOBAL foo2 executed');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s2 = 1;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
eaa291029af365353cfdc18d7cd1014a2f43bbe4Adam Moore o.fire('y:foo2');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore Y.Assert.areEqual(1, s1);
0f2f588af92633581627b768ccac61af079d87cfAdam Moore Y.Assert.areNotEqual(1, s2);
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s1 = 0;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s2 = 0;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore o.publish('y:bar', {
0f2f588af92633581627b768ccac61af079d87cfAdam Moore emitFacade: true,
0f2f588af92633581627b768ccac61af079d87cfAdam Moore broadcast: 2
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore Y.on('y:bar', function() {
bec687aba7976035d86626c750ea65c65ce13733Adam Moore Y.log('Y bar executed');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s3 = 1;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore Y.Global.on('y:bar', function() {
bec687aba7976035d86626c750ea65c65ce13733Adam Moore Y.log('GLOBAL bar executed');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore s4 = 1;
0f2f588af92633581627b768ccac61af079d87cfAdam Moore });
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore o.fire('y:bar');
0f2f588af92633581627b768ccac61af079d87cfAdam Moore
0f2f588af92633581627b768ccac61af079d87cfAdam Moore Y.Assert.areEqual(1, s3);
bec687aba7976035d86626c750ea65c65ce13733Adam Moore Y.Assert.areEqual(1, s4);
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore
ef53d6bba1a117c23e9ba697b08e15eee1ee9c06Adam Moore Y.Global.on('y:bar', function(e) {
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore Y.Assert.areEqual(0, e.stopped);
ef53d6bba1a117c23e9ba697b08e15eee1ee9c06Adam Moore // Y.Assert.areEqual(0, e._event.stopped);
ef53d6bba1a117c23e9ba697b08e15eee1ee9c06Adam Moore Y.log('GLOBAL bar executed');
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore e.stopPropagation();
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore });
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore
ef53d6bba1a117c23e9ba697b08e15eee1ee9c06Adam Moore o.fire('y:bar');
ef53d6bba1a117c23e9ba697b08e15eee1ee9c06Adam Moore o.fire('y:bar');
67fb478966f8cca0afece1ad5f09b71f56e72934Adam Moore
e809fe662b10fe7accafd6458c68ef95b307db6dAdam Moore Y.Global.detachAll();
e809fe662b10fe7accafd6458c68ef95b307db6dAdam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore },
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore test_fire_once: function() {
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore var notified = 0;
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.publish('fireonce', {
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore fireOnce: true
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore });
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.fire('fireonce', 'foo', 'bar');
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.on('fireonce', function(arg1, arg2) {
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore notified++;
21f450f4fd5fd60f951de44878aae015ed0342e3Adam Moore Y.Assert.areEqual('foo', arg1, 'arg1 not correct for lazy fireOnce listener')
21f450f4fd5fd60f951de44878aae015ed0342e3Adam Moore Y.Assert.areEqual('bar', arg2, 'arg2 not correct for lazy fireOnce listener')
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore });
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.fire('fireonce', 'foo2', 'bar2');
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.fire('fireonce', 'foo3', 'bar3');
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore global_notified = false;
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.on('fireonce', function(arg1, arg2) {
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.log('the notification is asynchronous, so I need to wait for this test');
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore Y.Assert.areEqual(1, notified, 'listener notified more than once.');
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore global_notified = true;
7135bc481c626e02f80b94c6d52cf9a13c3a38f7Adam Moore });
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore
51224f8f34c13fbf5c51c3bdb3220b37ae91b629Adam Moore // it is no longer asynchronous
51224f8f34c13fbf5c51c3bdb3220b37ae91b629Adam Moore // Y.Assert.isFalse(global_notified, 'notification was not asynchronous');
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore },
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore test_async_fireonce: function() {
5f8408be995d28c8f351f37fd05e7c8633fdea40Adam Moore Y.Assert.isTrue(global_notified, 'asynchronous notification did not seem to work.');
4f2de35716c5df46152747980516af484d0ab208Adam Moore },
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore test_node_publish: function() {
4f2de35716c5df46152747980516af484d0ab208Adam Moore var node = Y.one('#adiv');
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore var preventCount = 0, heard = 0;
4f2de35716c5df46152747980516af484d0ab208Adam Moore node.publish('foo1', {
4f2de35716c5df46152747980516af484d0ab208Adam Moore emitFacade: true,
4f2de35716c5df46152747980516af484d0ab208Adam Moore // should only be called once
4f2de35716c5df46152747980516af484d0ab208Adam Moore preventedFn: function() {
4f2de35716c5df46152747980516af484d0ab208Adam Moore preventCount++;
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Assert.isTrue(this instanceof Y.Node);
4f2de35716c5df46152747980516af484d0ab208Adam Moore }
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore node.on('foo1', function(e) {
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Assert.areEqual('faking foo', e.type);
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Assert.areEqual('foo1', e._type);
4f2de35716c5df46152747980516af484d0ab208Adam Moore heard++;
4f2de35716c5df46152747980516af484d0ab208Adam Moore e.preventDefault();
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore node.on('foo1', function(e) {
4f2de35716c5df46152747980516af484d0ab208Adam Moore heard++;
4f2de35716c5df46152747980516af484d0ab208Adam Moore e.preventDefault();
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore node.fire('foo1', {
4f2de35716c5df46152747980516af484d0ab208Adam Moore type: 'faking foo'
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Assert.areEqual(1, preventCount);
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Assert.areEqual(2, heard);
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, ON
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, ON
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, DEFAULT BEHAVIOR
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, AFTER
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, DEFAULT BEHAVIOR
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, AFTER
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore __testBubbleSequence300GA: function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore var count = 0,
0dca577a07715960da42d47787eecc25b285182fAdam Moore called = null,
0dca577a07715960da42d47787eecc25b285182fAdam Moore fn = function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore called = this.name;
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
0dca577a07715960da42d47787eecc25b285182fAdam Moore config = {
0dca577a07715960da42d47787eecc25b285182fAdam Moore emitFacade: true,
0dca577a07715960da42d47787eecc25b285182fAdam Moore bubbles: true
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
482388c306e346930994afd7e59b3af43c00aac6Adam Moore leaf = new Y.EventTarget(config),
482388c306e346930994afd7e59b3af43c00aac6Adam Moore branch = new Y.EventTarget(config),
0dca577a07715960da42d47787eecc25b285182fAdam Moore root = new Y.EventTarget(config);
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.name = 'leaf';
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.name = 'branch';
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.name = 'root';
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.addTarget(branch);
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.addTarget(root);
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.on('test:foo', function(e) {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(0, count, 'leaf.on should be first');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'leaf.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.on('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(1, count, 'branch.on should be second');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'branch.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.on('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(2, count, 'root.on should be third');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'root.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.after('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(3, count, 'root.after should be fourth');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual('root', called, 'root.after should be executed after the root default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.after('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(4, count, 'branch.after should be fifth');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual('branch', called, 'branch.after should be executed after the branch default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.after('test:foo', function(e) {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(5, count, 'leaf.after should be sixth and last');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the leaf default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.fire('test:foo', {}, leaf);
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(6, count);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
0dca577a07715960da42d47787eecc25b285182fAdam Moore
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // Ideally it should be this, but the defaultFn order is the least important bit
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // and there are issues changing the order.
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, ON
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, ON
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, DEFAULT BEHAVIOR
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, DEFAULT BEHAVIOR (unless configured to only execute the default function on the target)
0dca577a07715960da42d47787eecc25b285182fAdam Moore // SRC, AFTER
0dca577a07715960da42d47787eecc25b285182fAdam Moore // BUBBLE, AFTER
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // The actual order is this:
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // SRC, ON
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // BUBBLE, ON
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // BUBBLE, DEFAULT BEHAVIOR
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // SRC, DEFAULT BEHAVIOR (unless configured to only execute the default function on the target)
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // SRC, AFTER
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // BUBBLE, AFTER
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore testAlternativeSequencePost300GA: function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore var count = 0,
0dca577a07715960da42d47787eecc25b285182fAdam Moore called = null,
0dca577a07715960da42d47787eecc25b285182fAdam Moore fn = function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore called = this.name;
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
0dca577a07715960da42d47787eecc25b285182fAdam Moore config = {
0dca577a07715960da42d47787eecc25b285182fAdam Moore emitFacade: true,
0dca577a07715960da42d47787eecc25b285182fAdam Moore bubbles: true
0dca577a07715960da42d47787eecc25b285182fAdam Moore },
482388c306e346930994afd7e59b3af43c00aac6Adam Moore leaf = new Y.EventTarget(config),
482388c306e346930994afd7e59b3af43c00aac6Adam Moore branch = new Y.EventTarget(config),
0dca577a07715960da42d47787eecc25b285182fAdam Moore root = new Y.EventTarget(config);
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.name = 'leaf';
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.name = 'branch';
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.name = 'root';
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.addTarget(branch);
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.addTarget(root);
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.publish('test:foo', { defaultFn: fn});
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.on('test:foo', function(e) {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(0, count, 'leaf.on should be first');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'leaf.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.on('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(1, count, 'branch.on should be second');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'branch.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.on('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(2, count, 'root.on should be third');
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.isNull(called, 'root.on should be executed before any default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.after('test:foo', function(e) {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(3, count, 'leaf.after should be fourth');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore branch.after('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(4, count, 'branch.after should be fifth');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore root.after('test:foo', function() {
0dca577a07715960da42d47787eecc25b285182fAdam Moore Y.Assert.areEqual(5, count, 'root.after should be sixth and last');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
0dca577a07715960da42d47787eecc25b285182fAdam Moore count++;
0dca577a07715960da42d47787eecc25b285182fAdam Moore });
0dca577a07715960da42d47787eecc25b285182fAdam Moore
0dca577a07715960da42d47787eecc25b285182fAdam Moore leaf.fire('test:foo', {}, leaf);
00a8d162b35725b8d543888e516723f5cb222f72Adam Moore Y.Assert.areEqual(6, count, 'total subscriber count');
0dca577a07715960da42d47787eecc25b285182fAdam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore },
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore testStarSubscriber: function() {
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore var count = 0,
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore ret,
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore config = {
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore emitFacade: true,
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore bubbles: true,
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore prefix: 'stars'
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore },
482388c306e346930994afd7e59b3af43c00aac6Adam Moore z = new Y.EventTarget(config),
482388c306e346930994afd7e59b3af43c00aac6Adam Moore a = new Y.EventTarget(config),
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore b = new Y.EventTarget(config);
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore b.addTarget(a);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore a.addTarget(z);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore z.on('*:foo', function(e) {
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore count++;
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore // b -> a -> z -- the parent's parent should be the target
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.areEqual(b, e.target);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore Y.Assert.areEqual(z, e.currentTarget);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore switch (count) {
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore case 1:
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore Y.Assert.areEqual('a:foo', e.type);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore break;
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore case 2:
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore Y.Assert.areEqual('b:foo', e.type);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore break;
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore case 3:
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore Y.Assert.areEqual('stars:foo', e.type);
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore break;
dd3bb831f7d6a07193f48da84225f0df74f059adAdam Moore }
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore });
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore ret = b.fire('a:foo', {}, b);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.areEqual(1, count);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.isTrue(ret);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore ret = b.fire('b:foo', {}, b);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.areEqual(2, count);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.isTrue(ret);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore // if the event target is not configured with a prefix, this won't work by design.
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore ret = b.fire('foo', {}, b);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.areEqual(3, count);
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore
7b604197509a71120a1d0a11e3619d2cf12ae7e5Adam Moore Y.Assert.isTrue(ret);
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore },
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore testPreventBubble: function() {
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore var count = 0,
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore ret,
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore config = {
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore emitFacade: true,
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore bubbles: true,
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore prefix: 'stars'
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore },
482388c306e346930994afd7e59b3af43c00aac6Adam Moore z = new Y.EventTarget(config),
482388c306e346930994afd7e59b3af43c00aac6Adam Moore a = new Y.EventTarget(config),
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore b = new Y.EventTarget(config);
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore b.addTarget(a);
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore a.addTarget(z);
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
5cbcc8e7f5c3e4ad283e5cb76520840300f81a0aAdam Moore z.after('*:foo', function(e) {
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore // e.preventDefault();
5cbcc8e7f5c3e4ad283e5cb76520840300f81a0aAdam Moore Y.Assert.areEqual(b, e.target);
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore });
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore ret = b.fire('a:foo', {}, b);
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore
c7eb563867fa29409073f3b495a067d9afa00006Adam Moore Y.Assert.areEqual(0, count);
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore },
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore test_listen_once: function() {
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore var count = 0;
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
ad3e803b573f1ad93069380c0fa13ecac5ada5c5Adam Moore Y.once(['foo', 'bar'], function(e) {
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore count++;
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore });
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore Y.fire('foo', 'bar');
ad3e803b573f1ad93069380c0fa13ecac5ada5c5Adam Moore Y.fire('bar', 'bar');
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
ad3e803b573f1ad93069380c0fa13ecac5ada5c5Adam Moore Y.Assert.areEqual(2, count);
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore Y.fire('foo', 'bar');
ad3e803b573f1ad93069380c0fa13ecac5ada5c5Adam Moore Y.fire('bar', 'bar');
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
ad3e803b573f1ad93069380c0fa13ecac5ada5c5Adam Moore Y.Assert.areEqual(2, count);
9ff461f1797a64eea59827655e3fbd0e2a1a10cfAdam Moore
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore },
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore test_array_type_param: function() {
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore var result = '';
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore
e9a1463db83a41831766a7e13025b93b61552356Adam Moore var handle1 = Y.after(['foo', 'bar'], function(type) {
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore result += 'after' + type;
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore });
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore
e9a1463db83a41831766a7e13025b93b61552356Adam Moore var handle2 = Y.on(['foo', 'bar'], function(type) {
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore result += 'on' + type;
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore });
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore Y.fire('foo', 'foo');
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore Y.fire('bar', 'bar');
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore Y.Assert.areEqual('onfooafterfooonbarafterbar', result);
e806a570fd5dbd8a6ef84c8e580763818b165618Adam Moore
e9a1463db83a41831766a7e13025b93b61552356Adam Moore handle1.detach();
e9a1463db83a41831766a7e13025b93b61552356Adam Moore handle2.detach();
e9a1463db83a41831766a7e13025b93b61552356Adam Moore
e9a1463db83a41831766a7e13025b93b61552356Adam Moore Y.fire('foo', 'foo');
e9a1463db83a41831766a7e13025b93b61552356Adam Moore Y.fire('bar', 'bar');
e9a1463db83a41831766a7e13025b93b61552356Adam Moore
e9a1463db83a41831766a7e13025b93b61552356Adam Moore Y.Assert.areEqual('onfooafterfooonbarafterbar', result);
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore },
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore test_bubble_config: function() {
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore var a = new Y.EventTarget(),
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore b = new Y.EventTarget(),
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore result;
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
482388c306e346930994afd7e59b3af43c00aac6Adam Moore a.publish("foo", {
482388c306e346930994afd7e59b3af43c00aac6Adam Moore emitFacade: true
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore });
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore a.addTarget(b);
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore b.on("foo", function(e) {
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore result = (e instanceof Y.EventFacade);
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore });
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore a.fire("foo");
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore Y.Assert.isTrue(result);
bd03a79f6dc612d2940a331a52ee4cf0f364b1baAdam Moore
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith },
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith test_onceAfter: function () {
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith var a = new Y.EventTarget({ emitFacade: true, prefix: 'a' }),
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith result = '';
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.on('foo', function () { result += 'A'; });
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.once('foo', function () { result += 'B'; });
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.after('foo', function () { result += 'C'; });
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.onceAfter('foo', function () { result += 'D'; });
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.fire('foo');
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith a.fire('foo');
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith
e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0Luke Smith Y.Assert.areSame("ABCDAC", result);
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith },
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith test_multiple_object_publish: function () {
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith var target = new Y.EventTarget({ emitFacade: true, prefix: 'a' }),
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith pass;
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith target.publish({ foo: {} });
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith target.publish({
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith bar: {
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith defaultFn: function () { pass = true; }
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith }
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith });
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith target.fire('bar');
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith
ad40216913b3cb014e4e2d4db3049fe25150ec06Luke Smith Y.Assert.isTrue(pass);
0dca577a07715960da42d47787eecc25b285182fAdam Moore }
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
482388c306e346930994afd7e59b3af43c00aac6Adam Moore
9a76bc095233b0cb0be3a913f5913bfc72c38b6cSatyen Desai Y.Test.Runner.setName("CustomEvent");
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Test.Runner.add(testEventTarget);
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore Y.Test.Runner.run();
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore });
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore
0771d781138a507b3e657573703f511291640bf3Adam Moore // YUI({
0771d781138a507b3e657573703f511291640bf3Adam Moore // base: "/build/",
0771d781138a507b3e657573703f511291640bf3Adam Moore // filter: "debug",
0771d781138a507b3e657573703f511291640bf3Adam Moore // combine: false,
0771d781138a507b3e657573703f511291640bf3Adam Moore // useConsole: true,
0771d781138a507b3e657573703f511291640bf3Adam Moore // logExclude: {Dom: true, Selector: true, Node: true, attribute: true, base: true, loader: true, get: true, widget: true}
0771d781138a507b3e657573703f511291640bf3Adam Moore // }).use("datasource", function(Y) {
0771d781138a507b3e657573703f511291640bf3Adam Moore // Y.log('loaded datasource: ' + Y.DataSource);
0771d781138a507b3e657573703f511291640bf3Adam Moore // });
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore})();
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore</script>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore</body>
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore</html>