customevent.html revision e1a238db8bc3bae8f67be06b3e6a70f7b9b6f4a0
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
59602f2a7c4e4809941583bed3e94cd26e628f1aTinderbox User<html>
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater<head>
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User<title>YUI3 Custom Event Tests</title>
19558a04decde0e7261d489d92d04ad88104217bTinderbox User<script type="text/javascript" src="/build/yui/yui.js"></script>
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews</head>
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User<body class="yui3-skin-sam">
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User<h1>Event Tests</h1>
287a6a8f9040dc43560cd69cddf83bfc0f53b76fTinderbox User<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews<div id="adiv">a div</div>
8de3f14f1c300c3e1ed99084cc03485b42c92bf1Tinderbox User<div id="demo" class="yui-module">
e5a6871cd0635ecdb2bf792316a2d8c53206f4b2Tinderbox User <div class="yui-hd">
950d203b64f512b85fcc093ee1e9e3e531a1aea3Tinderbox User <h4>Animation Demo</h4>
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User <a title="remove module" class="yui-remove"><em>x</em></a>
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont </div>
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews <div class="yui-bd">
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews <p>This an example of what you can do with the YUI Animation Utility.</p>
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont <p><em>Follow the instructions above to see the animation in action.</em></p>
d5637bdbb931ff79fced3d4858d83212ea58ed15Tinderbox User </div>
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews</div>
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
d5637bdbb931ff79fced3d4858d83212ea58ed15Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews<script type="text/javascript">
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews(function() {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews var global_notified;
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews //YUI.add("selector-native", function(){});
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User YUI({
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews filter: "debug",
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews onCSS: function(Y) {
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User Y.log('CSS is done loading', 'info', 'testcase');
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews },
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User logExclude: { get: true, Dom: true, Selector: true, Node: true, attribute: true, event: true, base: true, widget: true },
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User filters: {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews base: 'raw',
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User // dom: null,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews attribute: 'min'
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User }
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User }).use("dump", "test", "anim", "console", function(Y) {
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User // Y.Global.on('yui:log', function(e) {
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews // console.log('GLOBAL LOG: ' + e.msg);
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt // });
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var button = Y.one('#btnRun');
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt // Set up the page
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User button.set("disabled", false);
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.on("click", function() {
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt Y.Test.Runner.run();
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User }, button);
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var myConsole = new Y.Console().render();
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater Y.log('{}');
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater var testEventTarget = new Y.Test.Case({
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews name: "Custom event tests",
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews _should: {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fail: {
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater testStopFnOnceFromBubbleTarget: "ticket pending",
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testStopFnFromBubbleTarget: "ticket pending"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews }
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User },
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater testAugment: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews var fired = false;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews var O = function(id) {
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User this.id = id;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.log('O constructor executed ' + id);
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User }
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox User O.prototype = {
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User oOo: function(ok) {
4c6bae917bec70e1fc4d1b761a9765075af78441Tinderbox User Y.log('oOo');
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox User }
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt }
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt // pass configuration info into EventTarget with the following
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews // construct
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User Y.augment(O, Y.EventTarget, null, null, {
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt emitFacade: true
7cc0a5d21ef046bfd630c4769943d896a7d7472cTinderbox User });
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews var o = new O(),
ee11dfc481f2ef6a032a715454f6290961a722d2Tinderbox User handle = o.on('testAugment', function(e, arg1, arg2) {
ee11dfc481f2ef6a032a715454f6290961a722d2Tinderbox User Y.Assert.isTrue(this instanceof O);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.isTrue(e instanceof Y.EventFacade);
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User Y.Assert.isTrue(e.foo === 'afoo');
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.isTrue(e.details[1] === 1);
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User Y.Assert.isTrue(arg1 === 1);
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.Assert.isTrue(arg2 === 2);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fired = true;
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User });
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User o.fire('testAugment', { foo: 'afoo' }, 1, 2);
aef6cf0f147a5014d4891c9689b9f463399e16e7Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.isTrue(fired);
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson handle.detach();
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews // if the first argument is not an object, the
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User // event facade is moved in front of the args rather
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews // than overwriting existing object.
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User o.on('testAugment', function(e, arg1, arg2) {
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews Y.Assert.areEqual(1, arg1);
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.Assert.areEqual(2, arg2);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User o.fire('testAugment', 1, 2);
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User },
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User test_detach_by_signature: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User var anim = new Y.Anim({
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson node: '#demo',
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User to: { opacity: 0 }
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews }),
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User count = 0;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews tester = function() {
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews count++;
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User Y.detach('foo', tester);
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews };
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews Y.on('foo', tester);
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.fire('foo');
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User Y.fire('foo');
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.Assert.areEqual(1, count);
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont var onEnd = function() {
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User count++;
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews // this.detach('anim:end', onEnd);
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont this.detach('end', onEnd);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews this.setAttrs({
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User to: { height: 1 },
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User easing: Y.Easing.bounceOut
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews });
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews this.run();
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews if (count > 2) {
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews throw new Error('onEnd should only have happened once');
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews }
7f9e2fff07b9c17e0d7a0ea7abc9304ce9d01b61Tinderbox User };
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews // anim.on('end', onEnd);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User anim.run();
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews anim.run();
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User },
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews testExtend: function() {
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User var fired = false;
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater var Base = function() {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.log('Base constructor executed');
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User arguments.callee.superclass.constructor.apply(this, arguments);
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews }
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater Y.extend(Base, Y.EventTarget, {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User base: function() {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.log('all your base...');
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User }
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User var b = new Base();
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User b.on('testExtend', function(arg1, arg2) {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.Assert.isTrue(this instanceof Base);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User Y.Assert.isTrue(arg1 === 1);
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.Assert.isTrue(arg2 === 2);
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User fired = true;
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater });
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews b.fire('testExtend', 1, 2);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.Assert.isTrue(fired);
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User },
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User testPrefix: function() {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User var fired1 = false,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fired2 = false;
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updater var O = function(id) {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User this.id = id;
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.log('O constructor executed ' + id);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User }
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User O.prototype = {
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater oOo: function(ok) {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User Y.log('oOo');
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews }
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User }
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User // pass configuration info into EventTarget with the following
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson // construct
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User Y.augment(O, Y.EventTarget, null, null, {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews emitFacade: true,
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User prefix: 'prefix'
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
5f7586ddbd3edd11272cdd30ed613d936129328bTinderbox User var o = new O();
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User o.on('testPrefix', function(e, arg1, arg2) {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.Assert.isTrue(this instanceof O);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User fired1 = true;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User
ac2e2800b4ac9cbe4cb756d967f4583c611eb75eMark Andrews o.on('prefix:testPrefix', function(e, arg1, arg2) {
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User Y.Assert.isTrue(this instanceof O);
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User fired2 = true;
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews });
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User
bac4435d473c9a0281507524f084480c34aa942aTinderbox User o.fire('testPrefix', { foo: 'afoo' }, 1, 2);
1fce11b1d3f2d461d261156b8cdc64ab864f06a9Tinderbox User
f0c5e918974bf778af6cd1e25309ad13e30a79a6Tinderbox User Y.Assert.isTrue(fired1);
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews // Y.Assert.isTrue(fired2);
7ca715ad1587a68a531ea1cdea07515d7232567eTinderbox User
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User fired1 = false;
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater fired2 = false;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
bac4435d473c9a0281507524f084480c34aa942aTinderbox User o.fire('prefix:testPrefix', { foo: 'afoo' }, 1, 2);
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews Y.Assert.isTrue(fired1);
933799f3641f4f78445d015008bad0038900a82aTinderbox User Y.Assert.isTrue(fired2);
8e5fce1f9ceba17dd7e3ff0eb287e1e999c14249Mark Andrews },
933799f3641f4f78445d015008bad0038900a82aTinderbox User
4151211e6649332f7b5a55870cbe37128bcc7b29Tinderbox User testDetachKey: function() {
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews
ac2e2800b4ac9cbe4cb756d967f4583c611eb75eMark Andrews var fired1 = false,
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fired2 = false;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
f525041ae26958385b697cf82a30f108577024b6Tinderbox User Y.on('handle|test:event', function() {
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox User fired1 = true;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater // one listener
3ec8f7777ea2b04fc1ebb63077f0916f63b1011aTinderbox User Y.fire('test:event');
c218e22e3e6cbd409b61a14f1480b5ce5c70bfc1Tinderbox User Y.Assert.isTrue(fired1);
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox User Y.Assert.isFalse(fired2);
933799f3641f4f78445d015008bad0038900a82aTinderbox User
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.detach('handle|test:event');
19b3dc94bce93fa76bd7e066f9298630dbc9dcb4Automatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fired1 = false;
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater fired2 = false;
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.on('handle|test:event', function() {
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fired2 = true;
bac4435d473c9a0281507524f084480c34aa942aTinderbox User });
39ae0eafed076ef769fef5c18b22a8051df5c93aTinderbox User
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews // first lisener detached, added a new listener
c2abd6efeb9affa70aabb63da2acb23e135cf7f2Mark Andrews Y.fire('test:event');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.isFalse(fired1);
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User Y.Assert.isTrue(fired2);
f525041ae26958385b697cf82a30f108577024b6Tinderbox User
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.detach('handle|test:event');
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updater fired1 = false;
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User fired2 = false;
5e82fe9a56d17bfbd120817d00d28c5952ab4ddcTinderbox User
4cda4fd158d6ded5586bacea8c388445d99611eaAutomatic Updater Y.after('handle|test:event', function(arg1) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.areEqual('orange', arg1);
f2f7a53ba0ba69cfe8c505eea16f71bad9d8d449Tinderbox User Y.Assert.isTrue(fired1);
c26604a73c4ce907ef6392f38b3fac838b1873a9Tinderbox User fired2 = true;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews });
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
e08cdffb3ae4ad409f37e3e5a218fe4b7e0e3904Tinderbox User // comma or pipe
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.on('handle|test:event', function(arg1) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.areEqual('orange', arg1);
bac4435d473c9a0281507524f084480c34aa942aTinderbox User Y.Assert.isFalse(fired2);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fired1 = true;
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User });
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater // testing on and after order
76408aae412cda298c5e43da0eebb23c875a4426Tinderbox User Y.fire('test:event', 'orange');
7f9e2fff07b9c17e0d7a0ea7abc9304ce9d01b61Tinderbox User
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fired1 = false;
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User fired2 = false;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
da59e63e7af147a8bcef985b98b04443e04c3a0eTinderbox User // spaces after the comma or lack thereof should have
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User // no effect on the addition or removal of listeners
757ff043760e4743dda1a10e7d58349275934902Tinderbox User var ret = Y.detach('handle|test:event');
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews Y.Assert.areEqual(Y, ret);
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
757ff043760e4743dda1a10e7d58349275934902Tinderbox User // added both an on listener and an after listener,
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater // then detached both
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews Y.fire('test:event', 'orange');
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User Y.Assert.isFalse(fired1);
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson Y.Assert.isFalse(fired2);
1bcc3273a80c256f11d9098a00ba2c041939e233Mark Andrews
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User },
5affecff6e148a8e124d03f5dbac0da11e30dcc5Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testDetachAllByKey: function() {
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User
bac4435d473c9a0281507524f084480c34aa942aTinderbox User var fired1 = false,
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews fired2 = false;
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User Y.after('handle|event2', function() {
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User fired2 = true;
3857cb6fcabeb79d85de4b3e3e4ab99912b701f8Mark Andrews });
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User
e64202536ea72d8f371dd0df9fc763f8d70bf886Tinderbox User Y.on('handle|event2', function() {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fired1 = true;
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User });
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User // detachAll
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews Y.detach('handle|*');
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.fire('event2');
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User
ebdf202f2198158ab4d30f22c370a9c63760d071Tinderbox User Y.Assert.isFalse(fired1, 'fired1, the after listener should not have fired.');
8292deab031e7599cd7622aa7675fbe139ca6095Mark Andrews Y.Assert.isFalse(fired2, 'fired2, the on listener should not have fired.');
c1e2310a3725eeed45e5e7c86750c64c5a02e993Francis Dupont
c1e2310a3725eeed45e5e7c86750c64c5a02e993Francis Dupont },
c1e2310a3725eeed45e5e7c86750c64c5a02e993Francis Dupont
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews testChain: function() {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews var fired1 = false,
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews fired2 = false,
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews fired3 = false,
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont fired4 = false,
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews fired5 = false;
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews // should be executed once, after f2
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var f1 = function() {
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.Assert.isTrue(fired2);
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews fired1 = true;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews };
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews // should be executed once, before f1
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews var f2 = function() {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews Y.Assert.isFalse(fired1);
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater fired2 = true;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews };
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User // should be executed once, different event from f1 and f2
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews var f3 = function() {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews fired3 = true;
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater };
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews // detached before fired, should not executed
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User var f4 = function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fired4 = true;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews };
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews // should fire once, preserving the custom prefix rather
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews // than using the configured event target prefix
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User var f5 = function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fired5 = true;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews };
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews // configure chaining via global default or on the event target
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews YUI({ /* chain: true */
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User base:'/build/',
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews logInclude: {
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews test: true
39cad8fb7d7ff3436bb24ce761354afcb80d295aMark Andrews }
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews }).use('event-custom', function(Y2) {
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews var o = new Y2.EventTarget({
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User prefix: 'foo',
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews chain : true
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews });
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
e64202536ea72d8f371dd0df9fc763f8d70bf886Tinderbox User // without event target prefix manipulation (incomplete now)
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User // @TODO an error here is throwing an uncaught exception rather than failing the test
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User // 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');
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews // with event target prefix manipulation ('e' is the same event as 'foo:e',
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User // but 'pre:e' is a different event only accessible by using that exact name)
757ff043760e4743dda1a10e7d58349275934902Tinderbox Usero.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');
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews Y.Assert.isTrue(fired1); // verifies chaining, on/after order, and adding the event target prefix
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.isTrue(fired2); // verifies chaining, on/after order, and accepting the prefix in the event name
933799f3641f4f78445d015008bad0038900a82aTinderbox User Y.Assert.isTrue(fired3); // verifies no interaction between events, and prefix manipulation
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.Assert.isFalse(fired4); // verifies detach works (regardless of spaces after comma)
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.isTrue(fired5); // verifies custom prefix
7f79131f9a8e804b93c57f3c679065cce878b726Automatic Updater
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews },
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User testObjType: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews var f1, f2;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.on({
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews 'y:click': function() {f1 = true},
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews 'y:clack': function() {f2 = true}
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
3a988722ad9e209ba4064604d482dc4efe0e19ebTinderbox User Y.fire('y:click');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.fire('y:clack');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
a3ffa9ab0644ae2b52f2e13a00b5e85b879f612fTinderbox User Y.Assert.isTrue(f1);
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.isTrue(f2);
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews },
1bf507ca635310b340aea42d6c3e567819974a99Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testBubble: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews var count = 0,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ret,
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews config = {
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User emitFacade: true,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews bubbles: true
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User },
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User a = new Y.EventTarget(config),
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont b = new Y.EventTarget(config);
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews b.addTarget(a);
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews // this should not be necessary // fixed
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews // b.publish('test:foo');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont a.on('test:foo', function(e) {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont count++;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews // we will fire this on the parent, so that should be the target
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(b, e.target);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(a, e.currentTarget);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ret = b.fire('test:foo', {}, b);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.isTrue(ret);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington b.on('test:foo', function(e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.stopPropagation();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ret = b.fire('test:foo', {}, b);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.isFalse(ret);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testPreventFnOnce: function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var count = 0;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.publish('y:foo1', {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington emitFacade: true,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington preventedFn: function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.isTrue(this instanceof YUI);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.on('y:foo1', function(e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.preventDefault();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.on('y:foo1', function(e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.preventDefault();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.fire('y:foo1');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testPreventFromBubbleTarget: function () {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var count = 0,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington target = new Y.EventTarget({ prefix: 'x' });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington target.publish('foo', {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington emitFacade: true,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington preventedFn: function() {
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews count++;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews }
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews target.addTarget(Y);
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.on('x:foo', function(e) {
646fed0d28be4387e3e32fb0f5732a1f58b572baTinderbox User e.preventDefault();
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater });
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater target.fire('foo');
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater Y.Assert.areEqual(1, count);
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater },
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater testPreventedFnOnceFromBubbleTarget: function () {
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater var count = 0,
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater target = new Y.EventTarget({ prefix: 'x' });
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater target.publish('foo', {
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater emitFacade: true,
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater preventedFn: function() {
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater count++;
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews }
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User });
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User target.addTarget(Y);
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User Y.on('x:foo', function(e) {
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User e.preventDefault();
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User });
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User Y.on('x:foo', function(e) {
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User e.preventDefault();
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews });
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont target.fire('foo');
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User Y.Assert.areEqual(1, count);
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User target.on('foo', function (e) {
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User e.preventDefault();
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews target.fire('foo');
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.Assert.areEqual(2, count);
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews },
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testStopFnOnce: function () {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var count = 0,
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont target = new Y.EventTarget({ prefix: 'a' });
a3ffa9ab0644ae2b52f2e13a00b5e85b879f612fTinderbox User
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont target.publish('foo', {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont emitFacade: true,
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont stoppedFn: function () {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont count++;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews }
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews target.on('foo', function (e) {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews e.stopPropagation();
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews });
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews target.on('foo', function (e) {
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User e.stopPropagation();
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont });
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont target.fire('foo');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.areEqual(1, count);
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont },
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont testStopFnFromBubbleTarget: function () {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews var count = 0,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin = new Y.EventTarget({ prefix: 'a' }),
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington targetB = new Y.EventTarget({ prefix: 'b' });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin.publish('foo', {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington emitFacade: true,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington stoppedFn: function () {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington targetB.on('foo', function (e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.stopPropagation();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin.fire('foo');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews testStopFnOnceFromBubbleTarget: function () {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var count = 0,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin = new Y.EventTarget({ prefix: 'a' }),
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews targetB = new Y.EventTarget({ prefix: 'b' }),
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews targetC = new Y.EventTarget({ prefix: 'c' });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews origin.publish('foo', {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews emitFacade: true,
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User stoppedFn: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews count++;
33d1cff1dd63494ffa00fac695a793f00c4ebf0bTinderbox User }
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews targetB.addTarget(targetC);
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews origin.addTarget(targetB);
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews targetB.on('foo', function (e) {
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User e.stopPropagation();
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews });
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont targetB.on('foo', function (e) {
bac4435d473c9a0281507524f084480c34aa942aTinderbox User e.stopPropagation();
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews origin.fire('foo');
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count, "stopProp called twice from bubble target resulted in stoppedFn called wrong number of times");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count = 0;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington targetC.on('foo', function (e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.stopPropagation();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews origin.fire('foo');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count, "stopProp called from intermediate bubble target didn't prevent stoppedFn call from subsequent bubble target");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
409ba95e573b40cf36acf97dd62ee7e9c7775851Tinderbox User count = 0;
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin.on('foo', function (e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington e.stopPropagation();
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington origin.fire('foo');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.areEqual(1, count, "stopProp called from event origin subscription didn't prevent calls to stoppedFn from bubble target");
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews },
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testDetachHandle: function() {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews var count = 0, handle, handle2;
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User Y.publish('y:foo', {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews emitFacade: true
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.on('y:foo', function(e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington handle2.detach();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington handle = Y.on('y:foo', function(e) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count += 100;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews handle2 = Y.on('y:foo', function(e) {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont count += 1000;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.detach(handle);
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
6d114a4c5cddb176ae5199eee154c0273d652ba4Tinderbox User Y.fire('y:foo');
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews Y.Assert.areEqual(1, count);
0e91f17da8a29086876a88962e0a3482094b6057Evan Hunt
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews count = 0;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var handle3 = Y.on('y:click', function() {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont count++;
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont handle3.detach();
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews });
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.fire('y:click');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.fire('y:click');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont var o = new Y.EventTarget();
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont count = 0;
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont o.on('foo', function(e) {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington o.on('foo', function(e) {
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews o.detachAll();
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews o.fire('foo');
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(0, count);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var handle3 = Y.on('y:click', function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington count++;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington // detachAll can't be allowed to work on the YUI instance.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.detachAll();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.fire('y:click');
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1, count);
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews },
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews testBroadcast: function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews var o = new Y.EventTarget(), s1, s2, s3, s4;
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User o.publish('y:foo2', {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews emitFacade: true,
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont broadcast: 1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.on('y:foo2', function() {
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User Y.log('Y foo2 executed');
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews s1 = 1;
757ff043760e4743dda1a10e7d58349275934902Tinderbox User });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.Global.on('y:foo2', function() {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Y.log('GLOBAL foo2 executed');
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews s2 = 1;
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews o.fire('y:foo2');
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
22d32791e5daa0bc80335a0f10ab2de95f41ccdbTinderbox User Y.Assert.areEqual(1, s1);
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.Assert.areNotEqual(1, s2);
646fed0d28be4387e3e32fb0f5732a1f58b572baTinderbox User
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews s1 = 0;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews s2 = 0;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews o.publish('y:bar', {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews emitFacade: true,
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews broadcast: 2
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User });
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
1fdd58445074579ee3b65c871137a7a1740eb542Mark Andrews Y.on('y:bar', function() {
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User Y.log('Y bar executed');
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User s3 = 1;
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User });
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
cc5a9ce75af9870f2cb9e2bf00548c2f7e6398d6Automatic Updater Y.Global.on('y:bar', function() {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont Y.log('GLOBAL bar executed');
ec8755f605d7dcb2de1076040e77bc2d7ec33b4aTinderbox User s4 = 1;
bac4435d473c9a0281507524f084480c34aa942aTinderbox User });
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User o.fire('y:bar');
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater Y.Assert.areEqual(1, s3);
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater Y.Assert.areEqual(1, s4);
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater
91faa748a27dee38f6caea461d3e87f15b93abeaTinderbox User Y.Global.on('y:bar', function(e) {
1a63fb1d1448ed3f8fd7227ae57be67c2e71279eMark Andrews Y.Assert.areEqual(0, e.stopped);
1a63fb1d1448ed3f8fd7227ae57be67c2e71279eMark Andrews // Y.Assert.areEqual(0, e._event.stopped);
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User Y.log('GLOBAL bar executed');
f33f2b8afe60de897c53cdcb17911f10b552699fTinderbox User e.stopPropagation();
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews });
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews o.fire('y:bar');
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews o.fire('y:bar');
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews Y.Global.detachAll();
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews },
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews test_fire_once: function() {
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews
7c8e44a2dc1121dbe3b615c9c934f37fb1741bb9Tinderbox User var notified = 0;
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User Y.publish('fireonce', {
861836e5f5df62bfaea9ad8923a05278d5ab2f3dTinderbox User fireOnce: true
e8c17c74535be290abaaa160a434ed80bf0ad2feMark Andrews });
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater Y.fire('fireonce', 'foo', 'bar');
9c446b72069d0ab9f710502f4d7048e50875fccbAutomatic Updater
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater Y.on('fireonce', function(arg1, arg2) {
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater notified++;
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User Y.Assert.areEqual('foo', arg1, 'arg1 not correct for lazy fireOnce listener')
933799f3641f4f78445d015008bad0038900a82aTinderbox User Y.Assert.areEqual('bar', arg2, 'arg2 not correct for lazy fireOnce listener')
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User });
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.fire('fireonce', 'foo2', 'bar2');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.fire('fireonce', 'foo3', 'bar3');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater global_notified = false;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.on('fireonce', function(arg1, arg2) {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.log('the notification is asynchronous, so I need to wait for this test');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.Assert.areEqual(1, notified, 'listener notified more than once.');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater global_notified = true;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater });
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater // it is no longer asynchronous
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater // Y.Assert.isFalse(global_notified, 'notification was not asynchronous');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater },
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater test_async_fireonce: function() {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.Assert.isTrue(global_notified, 'asynchronous notification did not seem to work.');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater },
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater test_node_publish: function() {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater var node = Y.one('#adiv');
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater var preventCount = 0, heard = 0;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater node.publish('foo1', {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater emitFacade: true,
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater // should only be called once
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater preventedFn: function() {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater preventCount++;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.Assert.isTrue(this instanceof Y.Node);
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater }
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater });
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater node.on('foo1', function(e) {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.Assert.areEqual('faking foo', e.type);
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater Y.Assert.areEqual('foo1', e._type);
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater heard++;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater e.preventDefault();
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater });
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
bbc0e1c4f47f101c4a64db3469352c49a49e734fTinderbox User node.on('foo1', function(e) {
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater heard++;
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater e.preventDefault();
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater });
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
bbc0e1c4f47f101c4a64db3469352c49a49e734fTinderbox User node.fire('foo1', {
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User type: 'faking foo'
7f9e2fff07b9c17e0d7a0ea7abc9304ce9d01b61Tinderbox User });
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User Y.Assert.areEqual(1, preventCount);
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater Y.Assert.areEqual(2, heard);
bf8c3776f1bf1a1270e5e0443ae5a8df022632a8Mark Andrews },
bf8c3776f1bf1a1270e5e0443ae5a8df022632a8Mark Andrews
bf8c3776f1bf1a1270e5e0443ae5a8df022632a8Mark Andrews // SRC, ON
bf8c3776f1bf1a1270e5e0443ae5a8df022632a8Mark Andrews // BUBBLE, ON
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater // BUBBLE, DEFAULT BEHAVIOR
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater // BUBBLE, AFTER
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater // SRC, DEFAULT BEHAVIOR
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater // SRC, AFTER
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater __testBubbleSequence300GA: function() {
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater var count = 0,
1404d301dd9e7e487a247b803f63909cd10cdf72Tinderbox User called = null,
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User fn = function() {
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater called = this.name;
ec8755f605d7dcb2de1076040e77bc2d7ec33b4aTinderbox User },
4ea3649f028ea6a1e42377082a7ccf8f789fb950Automatic Updater config = {
40072ce70bc4125329addb4aaa56d18a1230bc17Automatic Updater emitFacade: true,
60d5d17479b47c03b9c7c86f54269718103750b8Automatic Updater bubbles: true
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater },
1404d301dd9e7e487a247b803f63909cd10cdf72Tinderbox User leaf = new Y.EventTarget(config),
1404d301dd9e7e487a247b803f63909cd10cdf72Tinderbox User branch = new Y.EventTarget(config),
60d5d17479b47c03b9c7c86f54269718103750b8Automatic Updater root = new Y.EventTarget(config);
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater leaf.name = 'leaf';
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater branch.name = 'branch';
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater root.name = 'root';
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater leaf.addTarget(branch);
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater branch.addTarget(root);
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater leaf.publish('test:foo', { defaultFn: fn});
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater branch.publish('test:foo', { defaultFn: fn});
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater root.publish('test:foo', { defaultFn: fn});
ff8ec39ce4afc2d774ce99f2386474d2c8539cd4Automatic Updater
19dbf2e20df03f2b81ed1f347e27718084374059Automatic Updater leaf.on('test:foo', function(e) {
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater Y.Assert.areEqual(0, count, 'leaf.on should be first');
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater Y.Assert.isNull(called, 'leaf.on should be executed before any default function');
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater count++;
1404d301dd9e7e487a247b803f63909cd10cdf72Tinderbox User });
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater branch.on('test:foo', function() {
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater Y.Assert.areEqual(1, count, 'branch.on should be second');
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater Y.Assert.isNull(called, 'branch.on should be executed before any default function');
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater count++;
31a540386a9abaf681d8952f1b2cdf5c75a0ba6cAutomatic Updater });
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
3040b455151b1e1173193933664b2891b6159f24Mark Andrews root.on('test:foo', function() {
7f9e2fff07b9c17e0d7a0ea7abc9304ce9d01b61Tinderbox User Y.Assert.areEqual(2, count, 'root.on should be third');
3e1a17d65ec6227900f388ba2f7561365f7d4f5cTinderbox User Y.Assert.isNull(called, 'root.on should be executed before any default function');
33d1cff1dd63494ffa00fac695a793f00c4ebf0bTinderbox User count++;
8aa098c6334de11c8fd117d30851cc457813c410Mark Andrews });
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
7dd02af3c9350553e1d52d980a7812425b3f1295Automatic Updater root.after('test:foo', function() {
8aa098c6334de11c8fd117d30851cc457813c410Mark Andrews Y.Assert.areEqual(3, count, 'root.after should be fourth');
8aa098c6334de11c8fd117d30851cc457813c410Mark Andrews Y.Assert.areEqual('root', called, 'root.after should be executed after the root default function');
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews count++;
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User });
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington branch.after('test:foo', function() {
cc17f4a672fc4ce67327902dd797c4465f12c4c9Mark Andrews Y.Assert.areEqual(4, count, 'branch.after should be fifth');
4fe0411487e8e4401477684c0a2bac041ca7c2d5Tinderbox User Y.Assert.areEqual('branch', called, 'branch.after should be executed after the branch default function');
01f91b9cd440833f66e7476e43659655cb52ad10Automatic Updater count++;
4fe0411487e8e4401477684c0a2bac041ca7c2d5Tinderbox User });
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
4fe0411487e8e4401477684c0a2bac041ca7c2d5Tinderbox User leaf.after('test:foo', function(e) {
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews Y.Assert.areEqual(5, count, 'leaf.after should be sixth and last');
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the leaf default function');
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews count++;
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User });
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews leaf.fire('test:foo', {}, leaf);
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews Y.Assert.areEqual(6, count);
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews },
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
f45f40ec2814a5ff1ed443c968772a1b2e25c462Mark Andrews // Ideally it should be this, but the defaultFn order is the least important bit
f45f40ec2814a5ff1ed443c968772a1b2e25c462Mark Andrews // and there are issues changing the order.
82a986aaa5d3384a541b5a7d6dae8cf0726d6513Tinderbox User // SRC, ON
82a986aaa5d3384a541b5a7d6dae8cf0726d6513Tinderbox User // BUBBLE, ON
2bd56b2684882faf74a2b29cb0914e6671d8005bTinderbox User // SRC, DEFAULT BEHAVIOR
d642d3857129678797a01adee14fbd70335b05a9Mark Andrews // BUBBLE, DEFAULT BEHAVIOR (unless configured to only execute the default function on the target)
bac4435d473c9a0281507524f084480c34aa942aTinderbox User // SRC, AFTER
169f44b082b340b952e26c0fdb930c102a957752Mark Andrews // BUBBLE, AFTER
bac4435d473c9a0281507524f084480c34aa942aTinderbox User
54890cfd30f01bdd33b7fb997f9b89fb084c3438Tinderbox User // The actual order is this:
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews // SRC, ON
a8677ecad546c955406b341eb8344ed06768b11eTinderbox User // BUBBLE, ON
11b6b0d74bb8dd6bd1ce0b60ba7f9b66323f06d4Tinderbox User // BUBBLE, DEFAULT BEHAVIOR
11b6b0d74bb8dd6bd1ce0b60ba7f9b66323f06d4Tinderbox User // SRC, DEFAULT BEHAVIOR (unless configured to only execute the default function on the target)
fedd407a76adfdd745eb7d2461673693c6f9fea9Mark Andrews // SRC, AFTER
fedd407a76adfdd745eb7d2461673693c6f9fea9Mark Andrews // BUBBLE, AFTER
82a986aaa5d3384a541b5a7d6dae8cf0726d6513Tinderbox User testAlternativeSequencePost300GA: function() {
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews var count = 0,
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews called = null,
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews fn = function() {
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews called = this.name;
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews },
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews config = {
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews emitFacade: true,
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews bubbles: true
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews },
05d81eae94425a5124e07626af4bcc178960bd0eMark Andrews leaf = new Y.EventTarget(config),
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews branch = new Y.EventTarget(config),
82a986aaa5d3384a541b5a7d6dae8cf0726d6513Tinderbox User root = new Y.EventTarget(config);
789875a1bd6d50c00d3bd883cad17ead1d3c21cdMark Andrews
789875a1bd6d50c00d3bd883cad17ead1d3c21cdMark Andrews leaf.name = 'leaf';
789875a1bd6d50c00d3bd883cad17ead1d3c21cdMark Andrews branch.name = 'branch';
c0cc232ba92b92c1c5a48d49449ef56f7ca05b56Tinderbox User root.name = 'root';
76fbdc591b3d46df28878a6ff844798622b85265Tinderbox User
bac4435d473c9a0281507524f084480c34aa942aTinderbox User leaf.addTarget(branch);
08a1e53c738c425390557196a2ba5039e5afd364Mark Andrews branch.addTarget(root);
1efe84be7849c5327001ad7dbad93d92c66c1389Mark Andrews
7e8129652903780873ba91f379f9ffca1f59773cMark Andrews leaf.publish('test:foo', { defaultFn: fn});
7e8129652903780873ba91f379f9ffca1f59773cMark Andrews branch.publish('test:foo', { defaultFn: fn});
7e8129652903780873ba91f379f9ffca1f59773cMark Andrews root.publish('test:foo', { defaultFn: fn});
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews leaf.on('test:foo', function(e) {
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews Y.Assert.areEqual(0, count, 'leaf.on should be first');
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews Y.Assert.isNull(called, 'leaf.on should be executed before any default function');
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews count++;
3040b455151b1e1173193933664b2891b6159f24Mark Andrews });
1efe84be7849c5327001ad7dbad93d92c66c1389Mark Andrews
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews branch.on('test:foo', function() {
1efe84be7849c5327001ad7dbad93d92c66c1389Mark Andrews Y.Assert.areEqual(1, count, 'branch.on should be second');
a9d14bf051644716b5db9209c453d2c5eb83f174Tinderbox User Y.Assert.isNull(called, 'branch.on should be executed before any default function');
f6ba5791728d244650c1887d8dd8ed771fd50a1dMark Andrews count++;
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews });
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews
82a986aaa5d3384a541b5a7d6dae8cf0726d6513Tinderbox User root.on('test:foo', function() {
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt Y.Assert.areEqual(2, count, 'root.on should be third');
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt Y.Assert.isNull(called, 'root.on should be executed before any default function');
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt count++;
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt });
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt leaf.after('test:foo', function(e) {
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt Y.Assert.areEqual(3, count, 'leaf.after should be fourth');
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User count++;
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User });
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt branch.after('test:foo', function() {
b123be91958e0bc58a10c165be64d47661199e3bEvan Hunt Y.Assert.areEqual(4, count, 'branch.after should be fifth');
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater count++;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater root.after('test:foo', function() {
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.Assert.areEqual(5, count, 'root.after should be sixth and last');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater // Y.Assert.areEqual('root', called, 'leaf.after should be executed after the root default function');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.Assert.areEqual('leaf', called, 'leaf.after should be executed after the root default function');
fd7c65dce9c2b1a3d12ca4df9074cd38019fdb5fAutomatic Updater count++;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
fd7c65dce9c2b1a3d12ca4df9074cd38019fdb5fAutomatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater leaf.fire('test:foo', {}, leaf);
9c2cf9e2017e6dd196e3b866808f32c6206eeedcMark Andrews Y.Assert.areEqual(6, count, 'total subscriber count');
9c2cf9e2017e6dd196e3b866808f32c6206eeedcMark Andrews
9c2cf9e2017e6dd196e3b866808f32c6206eeedcMark Andrews },
9c2cf9e2017e6dd196e3b866808f32c6206eeedcMark Andrews
cb40461f8744c5aeb369b84d5f48395a13a221a0Mark Andrews testStarSubscriber: function() {
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews var count = 0,
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews ret,
9f8051ea406dc3d98bb205df82cfc4d668a25d6eTinderbox User config = {
8f3657636521817d2971ae29aa3fb66e33709753Mark Andrews emitFacade: true,
8f3657636521817d2971ae29aa3fb66e33709753Mark Andrews bubbles: true,
66458d12f373fb75e8543d36fd76864a7567057bTinderbox User prefix: 'stars'
c19bf21885cdf78b52eee017dc1189a300657995Tinderbox User },
f525041ae26958385b697cf82a30f108577024b6Tinderbox User z = new Y.EventTarget(config),
f525041ae26958385b697cf82a30f108577024b6Tinderbox User a = new Y.EventTarget(config),
be0d1ec971748020cb0382e02b4642b493ea1e7bTinderbox User b = new Y.EventTarget(config);
be0d1ec971748020cb0382e02b4642b493ea1e7bTinderbox User
f525041ae26958385b697cf82a30f108577024b6Tinderbox User b.addTarget(a);
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews a.addTarget(z);
5b56652059e2c22185a0b2bb1f5e58eb89a44426Tinderbox User
c78c39caab4cf8b5daefc9c65878f7f5ed3eb7a0Tinderbox User z.on('*:foo', function(e) {
c78c39caab4cf8b5daefc9c65878f7f5ed3eb7a0Tinderbox User count++;
8e86e8a779f37378fdb85a92c4ba77e394013729Tinderbox User // b -> a -> z -- the parent's parent should be the target
c19bf21885cdf78b52eee017dc1189a300657995Tinderbox User Y.Assert.areEqual(b, e.target);
9f8051ea406dc3d98bb205df82cfc4d668a25d6eTinderbox User Y.Assert.areEqual(z, e.currentTarget);
f525041ae26958385b697cf82a30f108577024b6Tinderbox User switch (count) {
be0d1ec971748020cb0382e02b4642b493ea1e7bTinderbox User case 1:
ff62ab3c2e6274f19190ded15548c723d38bbbe3Automatic Updater Y.Assert.areEqual('a:foo', e.type);
ee23b913b6acccad68cf5af480b9e289a3d00510Tinderbox User break;
ee23b913b6acccad68cf5af480b9e289a3d00510Tinderbox User case 2:
9a5217f827ac0e006016745e5305b31dc0c7767fTinderbox User Y.Assert.areEqual('b:foo', e.type);
e20309353e6246485c521278131d3fced73d7957Tinderbox User break;
e20309353e6246485c521278131d3fced73d7957Tinderbox User case 3:
ee23b913b6acccad68cf5af480b9e289a3d00510Tinderbox User Y.Assert.areEqual('stars:foo', e.type);
ee23b913b6acccad68cf5af480b9e289a3d00510Tinderbox User break;
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User }
9e8ee4ffd77aa2974cecbdbb2b122156b8d3a27aTinderbox User });
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User ret = b.fire('a:foo', {}, b);
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User Y.Assert.areEqual(1, count);
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.Assert.isTrue(ret);
bac4435d473c9a0281507524f084480c34aa942aTinderbox User
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews ret = b.fire('b:foo', {}, b);
21b353c36cb484d022a0df8cb39c602649a46ae6Tinderbox User
21b353c36cb484d022a0df8cb39c602649a46ae6Tinderbox User Y.Assert.areEqual(2, count);
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews Y.Assert.isTrue(ret);
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews // if the event target is not configured with a prefix, this won't work by design.
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews ret = b.fire('foo', {}, b);
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews Y.Assert.areEqual(3, count);
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews
c0cc232ba92b92c1c5a48d49449ef56f7ca05b56Tinderbox User Y.Assert.isTrue(ret);
c0cc232ba92b92c1c5a48d49449ef56f7ca05b56Tinderbox User },
ce67023ae3ad39a77da5361d0187ab6f3f0219cbMark Andrews
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews testPreventBubble: function() {
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews var count = 0,
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews ret,
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews config = {
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews emitFacade: true,
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews bubbles: true,
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews prefix: 'stars'
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews },
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews z = new Y.EventTarget(config),
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews a = new Y.EventTarget(config),
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews b = new Y.EventTarget(config);
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews b.addTarget(a);
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews a.addTarget(z);
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews z.after('*:foo', function(e) {
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews // e.preventDefault();
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews Y.Assert.areEqual(b, e.target);
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews });
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews
3040b455151b1e1173193933664b2891b6159f24Mark Andrews ret = b.fire('a:foo', {}, b);
d58e33bfabfee19a035031dac633d36659738d56Evan Hunt
d585233c52e283d9a8849f16f04f452419a2484eTinderbox User Y.Assert.areEqual(0, count);
d585233c52e283d9a8849f16f04f452419a2484eTinderbox User },
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User test_listen_once: function() {
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User var count = 0;
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.once(['foo', 'bar'], function(e) {
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater count++;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.fire('foo', 'bar');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.fire('bar', 'bar');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User Y.Assert.areEqual(2, count);
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User Y.fire('foo', 'bar');
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User Y.fire('bar', 'bar');
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User Y.Assert.areEqual(2, count);
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User },
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User
fca737c98d2be3ef944cc96320c040fdb5f160e3Tinderbox User test_array_type_param: function() {
51374c645c0e6dd77c369c13834c751785f96f14Tinderbox User var result = '';
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
7f814b8b164ae04916a8487cdc5e88ee3ff51a58Automatic Updater var handle1 = Y.after(['foo', 'bar'], function(type) {
7f814b8b164ae04916a8487cdc5e88ee3ff51a58Automatic Updater result += 'after' + type;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater });
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
88d58d79c5bc7ce3c20a42461a5070116c736836Automatic Updater var handle2 = Y.on(['foo', 'bar'], function(type) {
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater result += 'on' + type;
7f814b8b164ae04916a8487cdc5e88ee3ff51a58Automatic Updater });
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.fire('foo', 'foo');
48b36fa08b2b5bc0d552dc2a4425b3f7007b3d59Automatic Updater Y.fire('bar', 'bar');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.Assert.areEqual('onfooafterfooonbarafterbar', result);
7f814b8b164ae04916a8487cdc5e88ee3ff51a58Automatic Updater
3040b455151b1e1173193933664b2891b6159f24Mark Andrews handle1.detach();
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater handle2.detach();
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.fire('foo', 'foo');
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater Y.fire('bar', 'bar');
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User Y.Assert.areEqual('onfooafterfooonbarafterbar', result);
48b36fa08b2b5bc0d552dc2a4425b3f7007b3d59Automatic Updater },
9fa39c73fc1d8bc44fdbbb79a1d26b837e7dd555Mark Andrews
7f814b8b164ae04916a8487cdc5e88ee3ff51a58Automatic Updater test_bubble_config: function() {
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
d58e33bfabfee19a035031dac633d36659738d56Evan Hunt var a = new Y.EventTarget(),
3040b455151b1e1173193933664b2891b6159f24Mark Andrews b = new Y.EventTarget(),
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User result;
3040b455151b1e1173193933664b2891b6159f24Mark Andrews
1959fd489a8832e4e3d311670f64ae18e5d08156Automatic Updater a.publish("foo", {
1959fd489a8832e4e3d311670f64ae18e5d08156Automatic Updater emitFacade: true
1959fd489a8832e4e3d311670f64ae18e5d08156Automatic Updater });
3040b455151b1e1173193933664b2891b6159f24Mark Andrews a.addTarget(b);
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User
d58e33bfabfee19a035031dac633d36659738d56Evan Hunt b.on("foo", function(e) {
3040b455151b1e1173193933664b2891b6159f24Mark Andrews result = (e instanceof Y.EventFacade);
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User });
b6561016dc8a813bfd91cef5b876b3dfc3f08ffaTinderbox User
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews a.fire("foo");
d2247b4740cc5f740bf7d89ef9ce67fef015c95cMark Andrews
d2247b4740cc5f740bf7d89ef9ce67fef015c95cMark Andrews Y.Assert.isTrue(result);
d2247b4740cc5f740bf7d89ef9ce67fef015c95cMark Andrews
8bc194b266a17f89e6c54469d4dfbb408070f39eMark Andrews },
8bc194b266a17f89e6c54469d4dfbb408070f39eMark Andrews
8bc194b266a17f89e6c54469d4dfbb408070f39eMark Andrews test_onceAfter: function () {
8bc194b266a17f89e6c54469d4dfbb408070f39eMark Andrews var a = new Y.EventTarget({ emitFacade: true, prefix: 'a' }),
e6fc17ec5ad5ba1c4bf5730b2b97c82d1f2b8f3cMark Andrews result = '';
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
d2247b4740cc5f740bf7d89ef9ce67fef015c95cMark Andrews a.on('foo', function () { result += 'A'; });
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User a.once('foo', function () { result += 'B'; });
7c8e44a2dc1121dbe3b615c9c934f37fb1741bb9Tinderbox User a.after('foo', function () { result += 'C'; });
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater a.onceAfter('foo', function () { result += 'D'; });
1f471f3b06fae27f4b42ee4f0d6dac0cc7e5bc81Tinderbox User
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater a.fire('foo');
b6561016dc8a813bfd91cef5b876b3dfc3f08ffaTinderbox User a.fire('foo');
8d8f9f7f86a33a155dd74b9b2c1317afca555d54Evan Hunt
8d8f9f7f86a33a155dd74b9b2c1317afca555d54Evan Hunt Y.Assert.areSame("ABCDAC", result);
3040b455151b1e1173193933664b2891b6159f24Mark Andrews }
3040b455151b1e1173193933664b2891b6159f24Mark Andrews });
213dd665a9f45c3acb5f6c5f853bbbd5fd1598a2Tinderbox User
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User Y.Test.Runner.add(testEventTarget);
e5bf83fe0bbca838a0749e9071bd76d9ee0fb59bFrancis Dupont Y.Test.Runner.run();
e5bf83fe0bbca838a0749e9071bd76d9ee0fb59bFrancis Dupont });
e5bf83fe0bbca838a0749e9071bd76d9ee0fb59bFrancis Dupont
4dca64bb8991502db368028aeeba2f832d3b971dAutomatic Updater // YUI({
e5bf83fe0bbca838a0749e9071bd76d9ee0fb59bFrancis Dupont // base: "/build/",
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User // filter: "debug",
2beefc22e6debdb72d7b2a069787ff565fc79ec4Tinderbox User // combine: false,
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater // useConsole: true,
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater // logExclude: {Dom: true, Selector: true, Node: true, attribute: true, base: true, loader: true, get: true, widget: true}
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater // }).use("datasource", function(Y) {
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater // Y.log('loaded datasource: ' + Y.DataSource);
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater // });
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater
7169f76a893666eb20fc7750782e7f411db742d6Tinderbox User
7169f76a893666eb20fc7750782e7f411db742d6Tinderbox User})();
7169f76a893666eb20fc7750782e7f411db742d6Tinderbox User</script>
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater</body>
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater</html>
ead8aa3182c5805fccb6c7c1636cede6a24a5fc1Automatic Updater