customevent.html revision cb4f4f79feb7498d1f3406b88fb62209e5f5a444
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3fd0bd432d4875c15b9e8d586770f60f03278fe7Kay Sievers<html>
3fd0bd432d4875c15b9e8d586770f60f03278fe7Kay Sievers<head>
c2e09812e9c088f1582ce542e43f6b5743b2e4feZbigniew Jędrzejewski-Szmek<title>YUI3 Custom Event Tests</title>
cc1f918dda4193c7fd2a03de4ab715be67017a36Zbigniew Jędrzejewski-Szmek<script type="text/javascript" src="/build/yui/yui.js"></script>
7c66aeba0f28cb82027d6015405ed71afa3b6059Kay Sievers</head>
7c66aeba0f28cb82027d6015405ed71afa3b6059Kay Sievers
c904f64d84db8c4eebedf210ba10893f19ba05edLennart Poettering<body class="yui3-skin-sam">
c904f64d84db8c4eebedf210ba10893f19ba05edLennart Poettering<h1>Event Tests</h1>
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers<div id="adiv">a div</div>
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers
9a36607584bbd1d78775353e022a51794b4e27b1Lennart Poettering<script type="text/javascript">
9a36607584bbd1d78775353e022a51794b4e27b1Lennart Poettering
a40593a0d0d740efa387e35411e1e456a6c5aba7Lennart Poettering(function() {
20ffc4c4a9226b0e45cc02ad9c0108981626c0bbKay Sievers
2d19f95caef8668aeb5c05a18b39c6b79f710856Kay Sievers var global_notified;
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering //YUI.add("selector-native", function(){});
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering YUI({
a4cc3e5ccc0a3033d764a9eb3ae5ee90db560682Lennart Poettering filter: "debug",
a4cc3e5ccc0a3033d764a9eb3ae5ee90db560682Lennart Poettering useConsole: true,
a4cc3e5ccc0a3033d764a9eb3ae5ee90db560682Lennart Poettering onCSS: function(Y) {
0028da22f194f7c0ca7169a48cf32e1bc0f9138aLennart Poettering Y.log('CSS is done loading', 'info', 'testcase');
a4cc3e5ccc0a3033d764a9eb3ae5ee90db560682Lennart Poettering },
7e2c2bcf1285d124c9c656ff46cafa4db0a987c9Lennart Poettering logExclude: { get: true, Dom: true, Selector: true, Node: true, attribute: true, event: true, base: true, widget: true },
f0c15f288513aa4da012db7497a4aec3f7763ebbLennart Poettering
7b4da18c1717f811bae67ea3d39290495857c03eLennart Poettering filters: {
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering base: 'raw',
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering // dom: null,
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering attribute: 'min'
dd359de89b1fbabf6f4eb5003d2b5a806b6185c1Lennart Poettering }
dd359de89b1fbabf6f4eb5003d2b5a806b6185c1Lennart Poettering }).use("dump", "test", "console", function(Y) {
dd359de89b1fbabf6f4eb5003d2b5a806b6185c1Lennart Poettering
61a9648f022049ac14c5667958752e8dcff857c1Lennart Poettering // Y.Global.on('yui:log', function(e) {
61a9648f022049ac14c5667958752e8dcff857c1Lennart Poettering // console.log('GLOBAL LOG: ' + e.msg);
61a9648f022049ac14c5667958752e8dcff857c1Lennart Poettering // });
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering var button = Y.one('#btnRun');
d8d3d8a781031d6b1ee4e5f57ec21f16c20a4cf2Lennart Poettering
d8d3d8a781031d6b1ee4e5f57ec21f16c20a4cf2Lennart Poettering // Set up the page
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering button.set("disabled", false);
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering Y.on("click", function() {
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering Y.Test.Runner.run();
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering }, button);
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering var myConsole = new Y.Console().render();
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering Y.log('{}');
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering var testEventTarget = new Y.Test.Case({
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering name: "Custom event tests",
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering testAugment: function() {
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering var fired = false;
a53824ea7466bee2c5e6ac9a11b58b79adceb98bLennart Poettering
a53824ea7466bee2c5e6ac9a11b58b79adceb98bLennart Poettering var O = function(id) {
a53824ea7466bee2c5e6ac9a11b58b79adceb98bLennart Poettering this.id = id;
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering Y.log('O constructor executed ' + id);
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering }
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering O.prototype = {
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering oOo: function(ok) {
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering Y.log('oOo');
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering }
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering }
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering // pass configuration info into EventTarget with the following
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering // construct
5666ea6fcaaf1e829de07625b7c185949b23fecdKay Sievers Y.augment(O, Y.EventTarget, null, null, {
5666ea6fcaaf1e829de07625b7c185949b23fecdKay Sievers emitFacade: true
5666ea6fcaaf1e829de07625b7c185949b23fecdKay Sievers });
a9602630c64791571ca37606a0a5eabfac85820aLennart Poettering
b6b7d4337976eeac610b9ed2c3e1fd596a247b14Lennart Poettering var o = new O(),
b6b7d4337976eeac610b9ed2c3e1fd596a247b14Lennart Poettering handle = o.on('testAugment', function(e, arg1, arg2) {
b6b7d4337976eeac610b9ed2c3e1fd596a247b14Lennart Poettering Y.Assert.isTrue(this instanceof O);
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering Y.Assert.isTrue(e instanceof Y.EventFacade);
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering Y.Assert.isTrue(e.foo === 'afoo');
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering Y.Assert.isTrue(e.details[1] === 1);
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering Y.Assert.isTrue(arg1 === 1);
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering Y.Assert.isTrue(arg2 === 2);
752beb0c8560fb7e989d2f8da5e10c4692d78422Lennart Poettering fired = true;
752beb0c8560fb7e989d2f8da5e10c4692d78422Lennart Poettering });
eece8c6fb5f4d354dcef6fd369e876c4f3a3f163Lennart Poettering
eece8c6fb5f4d354dcef6fd369e876c4f3a3f163Lennart Poettering o.fire('testAugment', { foo: 'afoo' }, 1, 2);
eece8c6fb5f4d354dcef6fd369e876c4f3a3f163Lennart Poettering
d325d9bcfa8846a65767087f958a2dd11139d0e7Kay Sievers Y.Assert.isTrue(fired);
d325d9bcfa8846a65767087f958a2dd11139d0e7Kay Sievers
d325d9bcfa8846a65767087f958a2dd11139d0e7Kay Sievers handle.detach();
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
64e30145fce09b87a0b0a7e08c84a100818a5d5aLennart Poettering // if the first argument is not an object, the
64e30145fce09b87a0b0a7e08c84a100818a5d5aLennart Poettering // event facade is moved in front of the args rather
64e30145fce09b87a0b0a7e08c84a100818a5d5aLennart Poettering // than overwriting existing object.
64e30145fce09b87a0b0a7e08c84a100818a5d5aLennart Poettering o.on('testAugment', function(e, arg1, arg2) {
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering Y.Assert.areEqual(1, arg1);
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering Y.Assert.areEqual(2, arg2);
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering });
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering
bfa00bc6c05d0f896e9632eccd47d442fea556b9Lennart Poettering o.fire('testAugment', 1, 2);
bfa00bc6c05d0f896e9632eccd47d442fea556b9Lennart Poettering
3b953d68c628c6ae70adba871719ac0f16083b51Josh Triplett },
3b953d68c628c6ae70adba871719ac0f16083b51Josh Triplett
3b953d68c628c6ae70adba871719ac0f16083b51Josh Triplett testExtend: function() {
3b953d68c628c6ae70adba871719ac0f16083b51Josh Triplett
3b953d68c628c6ae70adba871719ac0f16083b51Josh Triplett var fired = false;
09f727eebd87661f263d3c2c1e0de7b7771acd40Lennart Poettering
09f727eebd87661f263d3c2c1e0de7b7771acd40Lennart Poettering var Base = function() {
09f727eebd87661f263d3c2c1e0de7b7771acd40Lennart Poettering Y.log('Base constructor executed');
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering arguments.callee.superclass.constructor.apply(this, arguments);
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering }
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering Y.extend(Base, Y.EventTarget, {
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering base: function() {
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering Y.log('all your base...');
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering }
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering });
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering
247c873b421291f711d8a57796011520a6b790afLennart Poettering var b = new Base();
247c873b421291f711d8a57796011520a6b790afLennart Poettering b.on('testExtend', function(arg1, arg2) {
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering Y.Assert.isTrue(this instanceof Base);
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering Y.Assert.isTrue(arg1 === 1);
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering Y.Assert.isTrue(arg2 === 2);
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering fired = true;
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering });
6bc80e94b66e6b008cdc21101fc7409ebcb279dbLennart Poettering
6bc80e94b66e6b008cdc21101fc7409ebcb279dbLennart Poettering b.fire('testExtend', 1, 2);
487060c2394b7703e59650ef332053645ffae2a3Lennart Poettering
487060c2394b7703e59650ef332053645ffae2a3Lennart Poettering Y.Assert.isTrue(fired);
e5ec62c56963d997edaffa904af5dc45dac23988Lennart Poettering },
54c31a79f72ff57ac8eba089acacc4ab482b745dLennart Poettering
826872b61e4857dfffe63ba84e2b005623baecd6Lennart Poettering testPrefix: function() {
826872b61e4857dfffe63ba84e2b005623baecd6Lennart Poettering
54c31a79f72ff57ac8eba089acacc4ab482b745dLennart Poettering var fired1 = false,
826872b61e4857dfffe63ba84e2b005623baecd6Lennart Poettering fired2 = false;
e5ec62c56963d997edaffa904af5dc45dac23988Lennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering var O = function(id) {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering this.id = id;
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.log('O constructor executed ' + id);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering }
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering O.prototype = {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering oOo: function(ok) {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.log('oOo');
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering }
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering }
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering // pass configuration info into EventTarget with the following
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering // construct
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.augment(O, Y.EventTarget, null, null, {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering emitFacade: true,
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering prefix: 'prefix'
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering });
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering var o = new O();
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering o.on('testPrefix', function(e, arg1, arg2) {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.Assert.isTrue(this instanceof O);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering fired1 = true;
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering });
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering o.on('prefix:testPrefix', function(e, arg1, arg2) {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.Assert.isTrue(this instanceof O);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering fired2 = true;
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering });
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering o.fire('testPrefix', { foo: 'afoo' }, 1, 2);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.Assert.isTrue(fired1);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering // Y.Assert.isTrue(fired2);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
cbb7712189527f9f483321607e44c4ead3dd11b8Lennart Poettering fired1 = false;
cbb7712189527f9f483321607e44c4ead3dd11b8Lennart Poettering fired2 = false;
dd359de89b1fbabf6f4eb5003d2b5a806b6185c1Lennart Poettering
dd359de89b1fbabf6f4eb5003d2b5a806b6185c1Lennart Poettering o.fire('prefix:testPrefix', { foo: 'afoo' }, 1, 2);
d01a73b6396f57792113c1b5df6e8492fc703e5eLennart Poettering Y.Assert.isTrue(fired1);
d01a73b6396f57792113c1b5df6e8492fc703e5eLennart Poettering Y.Assert.isTrue(fired2);
990ffbe5cffe7f11a8d3ab2258a85fc52b97bf60Lennart Poettering },
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering testDetachKey: function() {
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering var fired1 = false,
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering fired2 = false;
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering Y.on('handle|test:event', function() {
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering fired1 = true;
490b7e47093d491a2bdb1084fe92b796f4e07eefLennart Poettering });
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering
490b7e47093d491a2bdb1084fe92b796f4e07eefLennart Poettering // one listener
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('test:event');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(fired1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired2);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.detach('handle|test:event');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
e41814846c19a48f4490169d82e359e005c4db45Lennart Poettering fired1 = false;
c0fe5db522b52f27e030655ce2c03e05cbbc1558Kay Sievers fired2 = false;
e9fd44b728ff1fc0d1f24fccb87a767f6865df27Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.on('handle|test:event', function() {
e9fd44b728ff1fc0d1f24fccb87a767f6865df27Lennart Poettering fired2 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering });
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
3040728b6691ea2e9df3a2060e2d49a792bbaedaLennart Poettering // first lisener detached, added a new listener
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('test:event');
8ed206517c2be381324ac5832bf34cc14024270eLennart Poettering Y.Assert.isFalse(fired1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(fired2);
e6c6e7afffa80ad74efdb1ddfa815294624f1608Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.detach('handle|test:event');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired1 = false;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = false;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.after('handle|test:event', function(arg1) {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.areEqual('orange', arg1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(fired1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering });
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering // comma or pipe
e5ec62c56963d997edaffa904af5dc45dac23988Lennart Poettering Y.on('handle|test:event', function(arg1) {
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering Y.Assert.areEqual('orange', arg1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired2);
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering fired1 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering });
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // testing on and after order
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering Y.fire('test:event', 'orange');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b87b8b2b5205c0584da220f73322ea4732d44013Kay Sievers fired1 = false;
b87b8b2b5205c0584da220f73322ea4732d44013Kay Sievers fired2 = false;
b87b8b2b5205c0584da220f73322ea4732d44013Kay Sievers
c06bf414042cd1bf94e0af63e9e2a0c291bfc546Kay Sievers // spaces after the comma or lack thereof should have
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // no effect on the addition or removal of listeners
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var ret = Y.detach('handle|test:event');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.areEqual(Y, ret);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // added both an on listener and an after listener,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // then detached both
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('test:event', 'orange');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired2);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering },
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering testDetachAllByKey: function() {
f47ec8ebb3858553dec870e1c596e39525f46360Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var fired1 = false,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = false;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.after('handle|event2', function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering });
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.on('handle|event2', function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired1 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering });
f47ec8ebb3858553dec870e1c596e39525f46360Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // detachAll
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.detach('handle|*');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('event2');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired1, 'fired1, the after listener should not have fired.');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired2, 'fired2, the on listener should not have fired.');
2e4015f3e73173a4346c03a1ed7962f7d3423ed2Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering },
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering testChain: function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var fired1 = false,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = false,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired3 = false,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired4 = false,
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired5 = false;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering // should be executed once, after f2
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var f1 = function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(fired2);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired1 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering };
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // should be executed once, before f1
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var f2 = function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isFalse(fired1);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired2 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering };
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // should be executed once, different event from f1 and f2
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var f3 = function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired3 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering };
7ba9719595ee13612c9aea786233ffdd4d77ee46Zbigniew Jędrzejewski-Szmek
7ba9719595ee13612c9aea786233ffdd4d77ee46Zbigniew Jędrzejewski-Szmek // detached before fired, should not executed
7ba9719595ee13612c9aea786233ffdd4d77ee46Zbigniew Jędrzejewski-Szmek var f4 = function() {
8b04b925e587ff56568c62ff5ad3f2ea2b34ca7aLennart Poettering fired4 = true;
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering };
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // should fire once, preserving the custom prefix rather
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // than using the configured event target prefix
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var f5 = function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering fired5 = true;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering };
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering // configure chaining via global default or on the event target
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering YUI({ /* chain: true */
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering base:'/build/',
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers logInclude: {
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers test: true
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers }
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers }).use('*', function(Y2) {
f6113d42d015ad9f3a9e702a09eb8006511a4424Kay Sievers
f6113d42d015ad9f3a9e702a09eb8006511a4424Kay Sievers var o = new Y2.EventTarget({
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers prefix: 'foo',
7a43e910ce00eef22fd42925ae4c85cbea1b1320Kay Sievers chain : true
d2e83c23f5f0cdd3b6ec05c5c40209708721e704Kay Sievers });
c55b1b59b837dfd924b704d457ed77c55f8bfeabLennart Poettering
6c1703cc35b3a5f93ad3cc813fea10cb9a636102Kay Sievers // without event target prefix manipulation (incomplete now)
6c1703cc35b3a5f93ad3cc813fea10cb9a636102Kay Sievers // @TODO an error here is throwing an uncaught exception rather than failing the test
6c1703cc35b3a5f93ad3cc813fea10cb9a636102Kay Sievers // 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');
08f9588885c5d65694b324846b0ed19211d2c178Lennart Poettering
59704f3e937c664f7324bfbb08483c358dfbc4c6Lennart Poettering // with event target prefix manipulation ('e' is the same event as 'foo:e',
59704f3e937c664f7324bfbb08483c358dfbc4c6Lennart Poettering // but 'pre:e' is a different event only accessible by using that exact name)
59704f3e937c664f7324bfbb08483c358dfbc4c6Lennart Poetteringo.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');
9ec82de1725ddaab333149171b790d62c47ae133Lennart Poettering
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering Y.Assert.isTrue(fired1); // verifies chaining, on/after order, and adding the event target prefix
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering Y.Assert.isTrue(fired2); // verifies chaining, on/after order, and accepting the prefix in the event name
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering Y.Assert.isTrue(fired3); // verifies no interaction between events, and prefix manipulation
7f8732835295fce29479b1afc9e8ee801852db09Lennart Poettering Y.Assert.isFalse(fired4); // verifies detach works (regardless of spaces after comma)
7f8732835295fce29479b1afc9e8ee801852db09Lennart Poettering Y.Assert.isTrue(fired5); // verifies custom prefix
7f8732835295fce29479b1afc9e8ee801852db09Lennart Poettering
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering });
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering },
a19554ed92a7460b4e709cc40c558cde827ab85bLennart Poettering
a19554ed92a7460b4e709cc40c558cde827ab85bLennart Poettering testObjType: function() {
1cb88f2c61f590083847d65cd5a518e834da87d3Lennart Poettering var f1, f2;
1cb88f2c61f590083847d65cd5a518e834da87d3Lennart Poettering Y.on({
1cb88f2c61f590083847d65cd5a518e834da87d3Lennart Poettering 'y:click': function() {f1 = true},
1cb88f2c61f590083847d65cd5a518e834da87d3Lennart Poettering 'y:clack': function() {f2 = true}
1cb88f2c61f590083847d65cd5a518e834da87d3Lennart Poettering });
603cd8fe07cb03e8b11722d1a732e569e5a46347Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('y:click');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.fire('y:clack');
6d0274f11547a0f11200bb82bf598a5a253e12cfLennart Poettering
a7a3f28be404875eff20443a0fa8088bcc4c18dfLennart Poettering Y.Assert.isTrue(f1);
a7a3f28be404875eff20443a0fa8088bcc4c18dfLennart Poettering Y.Assert.isTrue(f2);
9b27910bb0c23e5225fc1177176e4f9bf9bf787bLennart Poettering },
9b27910bb0c23e5225fc1177176e4f9bf9bf787bLennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering testBubble: function() {
08f9588885c5d65694b324846b0ed19211d2c178Lennart Poettering var count = 0,
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers ret,
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers config = {
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers emitFacade: true,
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers bubbles: true
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers },
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers a = new Y.EventTarget(config),
7d8197d1f25c1291855bb6cffc705444978c6d8dKay Sievers b = new Y.EventTarget(config);
9ee58bddeb6eb044753167e0047fe836479ca5dbKay Sievers
9ee58bddeb6eb044753167e0047fe836479ca5dbKay Sievers b.addTarget(a);
dcfc4b2e5c1af6375488c00bdc6fb8122f86c4d7Lennart Poettering
71ef24d09573874c0f7bc323c07c3aec2a458707Lennart Poettering // this should not be necessary // fixed
71ef24d09573874c0f7bc323c07c3aec2a458707Lennart Poettering // b.publish('test:foo');
71ef24d09573874c0f7bc323c07c3aec2a458707Lennart Poettering
71ef24d09573874c0f7bc323c07c3aec2a458707Lennart Poettering a.on('test:foo', function(e) {
1b89884ba31cbe98f159ce2c7d6fac5f6a57698fLennart Poettering count++;
1b89884ba31cbe98f159ce2c7d6fac5f6a57698fLennart Poettering // we will fire this on the parent, so that should be the target
1920e37ef9fec04a1fd882f66bfa7a9a5b91c536Lennart Poettering Y.Assert.areEqual(b, e.target);
1920e37ef9fec04a1fd882f66bfa7a9a5b91c536Lennart Poettering Y.Assert.areEqual(a, e.currentTarget);
15abdb9a6f34628b04b887e0b9649fa582d6cd37Lennart Poettering });
1920e37ef9fec04a1fd882f66bfa7a9a5b91c536Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering ret = b.fire('test:foo', {}, b);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.areEqual(1, count);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(ret);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering b.on('test:foo', function(e) {
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering e.stopPropagation();
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering });
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering ret = b.fire('test:foo', {}, b);
eb124a97fb72d076014253b1acde69d428f15ecfLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.Assert.areEqual(1, count);
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering Y.Assert.isFalse(ret);
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering },
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering testPreventFnOnce: function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var count = 0;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.publish('y:foo1', {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering emitFacade: true,
f801968466fed39d50d410b30ac828c26722cc95Lennart Poettering preventedFn: function() {
de34a42bcad31f0648ac0f249801310e0dbf83f9Lennart Poettering count++;
de34a42bcad31f0648ac0f249801310e0dbf83f9Lennart Poettering Y.Assert.isTrue(this instanceof YUI);
424a19f8a2061c6b058283228734010b2fa24db4Lennart Poettering }
41f9172f427bdbb8221c64029f78364b8dd4e527Lennart Poettering });
424a19f8a2061c6b058283228734010b2fa24db4Lennart Poettering
424a19f8a2061c6b058283228734010b2fa24db4Lennart Poettering Y.on('y:foo1', function(e) {
424a19f8a2061c6b058283228734010b2fa24db4Lennart Poettering e.preventDefault();
a1cccad1fe88ddd6943e18af97cf7f466296970fLennart Poettering });
a1cccad1fe88ddd6943e18af97cf7f466296970fLennart Poettering
8556879e0d14925ce897875c6c264368e2d048c2Lennart Poettering Y.on('y:foo1', function(e) {
d05c556b6b2a680ec8b51ecbbc99a9ab14c28eedZbigniew Jędrzejewski-Szmek e.preventDefault();
8556879e0d14925ce897875c6c264368e2d048c2Lennart Poettering });
8556879e0d14925ce897875c6c264368e2d048c2Lennart Poettering
8556879e0d14925ce897875c6c264368e2d048c2Lennart Poettering Y.fire('y:foo1');
4a30847b9d71e0381948d68279c8f775b9de7850Lennart Poettering
4a30847b9d71e0381948d68279c8f775b9de7850Lennart Poettering Y.Assert.areEqual(1, count);
5e8b28838e493b59628322b69580097ef7dd9384Lennart Poettering },
5e8b28838e493b59628322b69580097ef7dd9384Lennart Poettering
d87be9b0af81a6e07d4fb3028e45c4409100dc26Lennart Poettering testDetachHandle: function() {
d87be9b0af81a6e07d4fb3028e45c4409100dc26Lennart Poettering var count = 0, handle, handle2;
88f89a9b6d25dfcb89691727c8cdaf01f4090b72Lennart Poettering Y.publish('y:foo', {
88f89a9b6d25dfcb89691727c8cdaf01f4090b72Lennart Poettering emitFacade: true
38a60d7112d33ffd596b23e8df53d75a7c09e71bLennart Poettering });
38a60d7112d33ffd596b23e8df53d75a7c09e71bLennart Poettering
d8b78264a5245307babbf5af8e39d6d4a1ae095fLennart Poettering Y.on('y:foo', function(e) {
d8b78264a5245307babbf5af8e39d6d4a1ae095fLennart Poettering count++;
7560fffcd2531786b9c1ca657667a43e90331326Lennart Poettering handle2.detach();
7560fffcd2531786b9c1ca657667a43e90331326Lennart Poettering });
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering
0790b9fed42eefc4e22dbbe2337cba9713b7848cLennart Poettering handle = Y.on('y:foo', function(e) {
5a7e959984788cf89719dec31999409b63bb802bLennart Poettering count += 100;
5a7e959984788cf89719dec31999409b63bb802bLennart Poettering });
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering handle2 = Y.on('y:foo', function(e) {
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering count += 1000;
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering });
edca2e2348b314e2d892fe6f8ae276fdc223f014Thomas Hindoe Paaboel Andersen
68f160039eb78fe122cfe0d4c49695ae91f6f0d1Lennart Poettering Y.detach(handle);
0790b9fed42eefc4e22dbbe2337cba9713b7848cLennart Poettering
5aea932fd54db835b77709ddeba30732648aae53Lennart Poettering Y.fire('y:foo');
5aea932fd54db835b77709ddeba30732648aae53Lennart Poettering
918943c75fbd9dee87ff396de3a7c63a8d228433Lennart Poettering Y.Assert.areEqual(1, count);
918943c75fbd9dee87ff396de3a7c63a8d228433Lennart Poettering
fd4d89b2c0b31da01d134301e30916931ae3c7d9Lennart Poettering count = 0;
fd4d89b2c0b31da01d134301e30916931ae3c7d9Lennart Poettering
8230e26dc954a40d8c9dbc8ddd9376117021f9d2Lennart Poettering var handle3 = Y.on('y:click', function() {
8230e26dc954a40d8c9dbc8ddd9376117021f9d2Lennart Poettering count++;
4d9909c93e9c58789c71b34555a1908307c6849eLennart Poettering handle3.detach();
4d9909c93e9c58789c71b34555a1908307c6849eLennart Poettering });
47ae7201b1df43bd3da83a19e38483b0e5694c99Lennart Poettering
47ae7201b1df43bd3da83a19e38483b0e5694c99Lennart Poettering Y.fire('y:click');
88a6c5894c9d3f85d63b87b040c130366b4006ceKay Sievers Y.fire('y:click');
8351ceaea9480d9c2979aa2ff0f4982cfdfef58dLennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var o = new Y.EventTarget();
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering count = 0;
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering o.on('foo', function(e) {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering count++;
c66d36e5b5ae81f3c5297d6dacadc13c88c530f6Lennart Poettering });
be0aa78406c73a6625308dc0672b5ff27ec6f9a8Lennart Poettering
be0aa78406c73a6625308dc0672b5ff27ec6f9a8Lennart Poettering o.on('foo', function(e) {
9946996cda11a18b44d82344676e5a0e96339408Lennart Poettering count++;
9946996cda11a18b44d82344676e5a0e96339408Lennart Poettering });
9946996cda11a18b44d82344676e5a0e96339408Lennart Poettering
3471bedc005fab03f40b99bf6599645330adcd9eLennart Poettering o.detachAll();
3471bedc005fab03f40b99bf6599645330adcd9eLennart Poettering
eeb875144e5a80d0521461a139f13fc8014d77d8Lennart Poettering o.fire('foo');
eeb875144e5a80d0521461a139f13fc8014d77d8Lennart Poettering
59cea26a349cfa8db906b520dac72563dd773ff2Lennart Poettering Y.Assert.areEqual(0, count);
35eb6b124ebdf82bd77aad6e44962a9a039c4d33Lennart Poettering
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering var handle3 = Y.on('y:click', function() {
f1a8e221ecacea23883df57951e291a910463948Lennart Poettering count++;
7b63bde1ed0d4f30c799c9b4737fa926465929f9Lennart Poettering });
7b63bde1ed0d4f30c799c9b4737fa926465929f9Lennart Poettering
5b40d33761376354116a8cddb9b9fbdb6c4727d6Lennart Poettering // detachAll can't be allowed to work on the YUI instance.
5b40d33761376354116a8cddb9b9fbdb6c4727d6Lennart Poettering Y.detachAll();
b86fa936ce36976cd6a96034cf14ea267695bcb2Lennart Poettering
b86fa936ce36976cd6a96034cf14ea267695bcb2Lennart Poettering Y.fire('y:click');
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers Y.Assert.areEqual(1, count);
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers },
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers testBroadcast: function() {
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers var o = new Y.EventTarget(), s1, s2, s3, s4;
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers o.publish('y:foo2', {
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers emitFacade: true,
d3a3f22267a7dac426b07a7ed0baa1632f5daf04Kay Sievers broadcast: 1
465349c06d994dd2cc6b6fc4109ac0b9952d500aLennart Poettering });
06dab8e18aebf822392c7ca66c5bf3c1200fdec8Lennart Poettering
06dab8e18aebf822392c7ca66c5bf3c1200fdec8Lennart Poettering Y.on('y:foo2', function() {
e01a15b71e18bf2008aec7e75041ffa42eb80b80Kay Sievers Y.log('Y foo2 executed');
a888b352eb53b07daa24fa859ceeb254336b293dLennart Poettering s1 = 1;
98ef27df896f36f0407eaa7ed9e295203b9c271bLennart Poettering });
a0a3844815b0f346dba03f41245c620f432e462fLennart Poettering
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers Y.Global.on('y:foo2', function() {
3f60bcb5e69846fe8a3156ca1c9a7e0813ac158aKay Sievers Y.log('GLOBAL foo2 executed');
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers s2 = 1;
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers });
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers o.fire('y:foo2');
b8217b7bd5fd171916a095b150fad4c3a37f5a41Kay Sievers
18b754d345ecb0b15e369978aaffa72e9814b86aKay Sievers Y.Assert.areEqual(1, s1);
068665b6fd9839f27bcace7e8f56c0baa6935272Lennart Poettering Y.Assert.areNotEqual(1, s2);
231931ffba1bca9d8759bbd6f797e56f8c6971faLennart Poettering
231931ffba1bca9d8759bbd6f797e56f8c6971faLennart Poettering s1 = 0;
169c4f65131fbc7bcb51e7d5487a715cdcd0e0ebLennart Poettering s2 = 0;
169c4f65131fbc7bcb51e7d5487a715cdcd0e0ebLennart Poettering
bd08f2422491169e92dc0899d5ba848fcae4c15cLennart Poettering o.publish('y:bar', {
bd08f2422491169e92dc0899d5ba848fcae4c15cLennart Poettering emitFacade: true,
fb0864e7b9c6d26269ccea6ec5c0fd921c029781Lennart Poettering broadcast: 2
fb0864e7b9c6d26269ccea6ec5c0fd921c029781Lennart Poettering });
9586cdfab6a2638078702b7fea7e16b3a71899e2Lennart Poettering
9586cdfab6a2638078702b7fea7e16b3a71899e2Lennart Poettering Y.on('y:bar', function() {
7f110ff9b8828b477e87de7b28c708cf69a3d008Lennart Poettering Y.log('Y bar executed');
7f110ff9b8828b477e87de7b28c708cf69a3d008Lennart Poettering s3 = 1;
d0e5a33374cee92962af33dfc03873e470b014f6Lennart Poettering });
d0e5a33374cee92962af33dfc03873e470b014f6Lennart Poettering
d0e5a33374cee92962af33dfc03873e470b014f6Lennart Poettering Y.Global.on('y:bar', function() {
d0e5a33374cee92962af33dfc03873e470b014f6Lennart Poettering Y.log('GLOBAL bar executed');
53ed2eeb2e709a6c0d152d7bdf2d9a4b9f997a16Lennart Poettering s4 = 1;
53ed2eeb2e709a6c0d152d7bdf2d9a4b9f997a16Lennart Poettering });
abd55b16547d0bb0ed1c31e72e16838f0f59f48bKay Sievers
680a1dbc354b2f437b4e06e27d4c43217977efdfLennart Poettering o.fire('y:bar');
a6e87e90ede66815989ba2db92a07102a69906feLennart Poettering
88f89a9b6d25dfcb89691727c8cdaf01f4090b72Lennart Poettering Y.Assert.areEqual(1, s3);
87a8baa35d6d65ac3b58ae8e26e338e67f8ae8edLennart Poettering Y.Assert.areEqual(1, s4);
87a8baa35d6d65ac3b58ae8e26e338e67f8ae8edLennart Poettering
87a8baa35d6d65ac3b58ae8e26e338e67f8ae8edLennart Poettering
87a8baa35d6d65ac3b58ae8e26e338e67f8ae8edLennart Poettering Y.Global.on('y:bar', function(e) {
5ba081b0fb02380cee4c2ff5bc7e05f869eb8415Lennart Poettering Y.Assert.areEqual(0, e.stopped);
5ba081b0fb02380cee4c2ff5bc7e05f869eb8415Lennart Poettering // Y.Assert.areEqual(0, e._event.stopped);
4cbd9ecf45f64c3a9acc99d473fbf3be3687ae24Lennart Poettering Y.log('GLOBAL bar executed');
4cbd9ecf45f64c3a9acc99d473fbf3be3687ae24Lennart Poettering e.stopPropagation();
65c0cf7108ae3537a357c74b4586a783baba82f9Lennart Poettering });
65c0cf7108ae3537a357c74b4586a783baba82f9Lennart Poettering
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers o.fire('y:bar');
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers o.fire('y:bar');
f957632b960a0a42999b38ded7089fa602b41745Kay Sievers
ad740100d108282d0244d5739d4dcc86fe4c5fdeLennart Poettering },
ad740100d108282d0244d5739d4dcc86fe4c5fdeLennart Poettering
de6c78f8795743894431a099d26ec562a8acf3dfLennart Poettering test_fire_once: function() {
7d441ddb5ca090b5a97f58ac4b4d97b3e84fa81eLennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var notified = 0;
14e639ae7a1dbf156273ce697d30fbc6c6594209Lennart Poettering
ff01d048b4c1455241c894cf7982662c9d28fd34Lennart Poettering Y.publish('fireonce', {
ff01d048b4c1455241c894cf7982662c9d28fd34Lennart Poettering fireOnce: true
d3c7d7dd77b2b72315164b672462825cef6c0f9aKay Sievers });
72b9ed828bd22f3ddd74b6853c183eebf006d6d8Lennart Poettering
1d6702e8d3877c0bebf3ac817dc45ff72f5ecfa9Lennart Poettering Y.fire('fireonce', 'foo', 'bar');
1d6702e8d3877c0bebf3ac817dc45ff72f5ecfa9Lennart Poettering
1d6702e8d3877c0bebf3ac817dc45ff72f5ecfa9Lennart Poettering Y.on('fireonce', function(arg1, arg2) {
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering notified++;
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering Y.Assert.areEqual('foo', arg1, 'arg1 not correct for lazy fireOnce listener')
1258097cd3cdbc5dd3d264850119e553a29c5068Lennart Poettering Y.Assert.areEqual('bar', arg2, 'arg2 not correct for lazy fireOnce listener')
1258097cd3cdbc5dd3d264850119e553a29c5068Lennart Poettering });
1258097cd3cdbc5dd3d264850119e553a29c5068Lennart Poettering
a4c279f87451186b8beb1b8cc21c7cad561ecf4bLennart Poettering Y.fire('fireonce', 'foo2', 'bar2');
a4c279f87451186b8beb1b8cc21c7cad561ecf4bLennart Poettering Y.fire('fireonce', 'foo3', 'bar3');
7c697168102cb64c5cb65a542959684014da99c7Lennart Poettering
253ee27a0c7a410d27d490bb79ea97caed6a2b68Lennart Poettering global_notified = false;
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering
8d0e38a2b966799af884e78a54fd6a2dffa44788Lennart Poettering Y.on('fireonce', function(arg1, arg2) {
f28f1daf754a9a07de90e6fc4ada581bf5de677dLennart Poettering Y.log('the notification is asynchronous, so I need to wait for this test');
f28f1daf754a9a07de90e6fc4ada581bf5de677dLennart Poettering Y.Assert.areEqual(1, notified, 'listener notified more than once.');
f28f1daf754a9a07de90e6fc4ada581bf5de677dLennart Poettering global_notified = true;
f28f1daf754a9a07de90e6fc4ada581bf5de677dLennart Poettering });
88a07670cfa974a605c7c7b520b8a3135fce37f9Lennart Poettering
88a07670cfa974a605c7c7b520b8a3135fce37f9Lennart Poettering Y.Assert.isFalse(global_notified, 'notification was not asynchronous');
88a07670cfa974a605c7c7b520b8a3135fce37f9Lennart Poettering
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering },
916abb21d0a6653e0187b91591e492026886b0a4Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering test_async_fireonce: function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering Y.Assert.isTrue(global_notified, 'asynchronous notification did not seem to work.');
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering },
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering test_node_publish: function() {
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering var node = Y.one('#adiv');
b23de6af893c11da4286bc416455cd0926d1532eLennart Poettering
21bdae12e11ae20460715475d8a0c991f15464acLennart Poettering var preventCount = 0, heard = 0;
21bdae12e11ae20460715475d8a0c991f15464acLennart Poettering node.publish('foo1', {
9534ce54858c67363b841cdbdc315140437bfdb4Lennart Poettering emitFacade: true,
9534ce54858c67363b841cdbdc315140437bfdb4Lennart Poettering // should only be called once
68c7d001f4117f0c3d0a4582e32cbb03ae5fac57Lennart Poettering preventedFn: function() {
796b06c21b62d13c9021e2fbd9c58a5c6edb2764Kay Sievers preventCount++;
68c7d001f4117f0c3d0a4582e32cbb03ae5fac57Lennart Poettering Y.Assert.isTrue(this instanceof Y.Node);
68c7d001f4117f0c3d0a4582e32cbb03ae5fac57Lennart Poettering }
7a2a0b907b5cc60f5d9a871997d7d6e7f62bf4d8Lennart Poettering });
253ee27a0c7a410d27d490bb79ea97caed6a2b68Lennart Poettering
5d0fcd7c8d29340ac9425c309e8ac436a9af699cLennart Poettering node.on('foo1', function(e) {
5d0fcd7c8d29340ac9425c309e8ac436a9af699cLennart Poettering Y.Assert.areEqual('faking foo', e.type);
8bbabc447b1d913bd21faf97c7b17d20d315d2b4Lennart Poettering Y.Assert.areEqual('foo1', e._type);
f530371f1f85a070d7d0fb5112146a43533ae00bLennart Poettering heard++;
e707c49485b8f4f2ec040d3da232d39153e650b9Lennart Poettering e.preventDefault();
a19554ed92a7460b4e709cc40c558cde827ab85bLennart Poettering });
a73d88fa024b5668ed7dde681e99547d41e6a864Lennart Poettering
a74a8793b04de9886b4f6987b9cb86fa02c73520Lennart Poettering node.on('foo1', function(e) {
3040728b6691ea2e9df3a2060e2d49a792bbaedaLennart Poettering heard++;
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering e.preventDefault();
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering });
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering node.fire('foo1', {
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering type: 'faking foo'
73090dc815390f4fca4e3ed8a7e1d3806605daaaLennart Poettering });
44143309dd0b37d61d7d842ca58f01a65646ec71Kay Sievers
3d57c6ab801f4437f12948e29589e3d00c3ad9dbLennart Poettering Y.Assert.areEqual(1, preventCount);
71092d70af35567dd154d3de2ce04ce62e157a7cLennart Poettering Y.Assert.areEqual(2, heard);
3f7a8c4e9f1d3ce48919e24eb2c9d56dd6fd88d8Kay Sievers },
260abb780a135e4cae8c10715c7e85675efc345aLennart Poettering
260abb780a135e4cae8c10715c7e85675efc345aLennart Poettering // SRC, ON
260abb780a135e4cae8c10715c7e85675efc345aLennart Poettering // BUBBLE, ON
2791a8f8dc8764a9247cdba3562bd4c04010f144Lennart Poettering // BUBBLE, DEFAULT BEHAVIOR
a8f11321c209830a35edd0357e8def5d4437d854Lennart Poettering // BUBBLE, AFTER
a8f11321c209830a35edd0357e8def5d4437d854Lennart Poettering // SRC, DEFAULT BEHAVIOR
21bdae12e11ae20460715475d8a0c991f15464acLennart Poettering // SRC, AFTER
21bdae12e11ae20460715475d8a0c991f15464acLennart Poettering __testBubbleSequence300GA: function() {
c32e0c40f7e706e3ebcd101187d5ced96f083491 Error!

 

There was an error!

null

java.lang.NullPointerException