customevent.html revision 7aa876bc6c31de0d6ada455f2125dd549aaa0ee0
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp<html>
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp<head>
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp<title>YUI Event Tests</title>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp<script type="text/javascript" src="/build/yui/yui-debug.js"></script>
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp</head>
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp<body class="yui-skin-sam">
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp<h1>Event Tests</h1>
91d40744967aabc3e1c105820a22e279fdecc689Tripp<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp<script type="text/javascript">
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp(function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp //YUI.add("selector-native", function(){});
91d40744967aabc3e1c105820a22e279fdecc689Tripp YUI({
91d40744967aabc3e1c105820a22e279fdecc689Tripp base: "/build/",
91d40744967aabc3e1c105820a22e279fdecc689Tripp filter: "debug",
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp // combine: false,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp useConsole: true,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp onCSS: function(Y) {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.log('CSS is done loading');
91d40744967aabc3e1c105820a22e279fdecc689Tripp },
91d40744967aabc3e1c105820a22e279fdecc689Tripp // logInclude: ['event', 'test']
91d40744967aabc3e1c105820a22e279fdecc689Tripp logExclude: {
91d40744967aabc3e1c105820a22e279fdecc689Tripp Dom: true,
91d40744967aabc3e1c105820a22e279fdecc689Tripp Selector: true,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Node: true,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp yui: true,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp get: true,
91d40744967aabc3e1c105820a22e279fdecc689Tripp attribute: true, base: true, event: true, widget: true},
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp filters: {
91d40744967aabc3e1c105820a22e279fdecc689Tripp base: 'raw',
91d40744967aabc3e1c105820a22e279fdecc689Tripp dom: null,
91d40744967aabc3e1c105820a22e279fdecc689Tripp attribute: 'min'
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp }).use("dump", "test", "console", function(Y) {
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp // Y.Global.on('yui:log', function(e) {
91d40744967aabc3e1c105820a22e279fdecc689Tripp // console.log('GLOBAL LOG: ' + e.msg);
91d40744967aabc3e1c105820a22e279fdecc689Tripp // });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp var button = Y.get('#btnRun');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp // Set up the page
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp button.set("disabled", false);
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.on("click", function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Test.Runner.run();
91d40744967aabc3e1c105820a22e279fdecc689Tripp }, button);
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp var myConsole = new Y.Console().render();
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp Y.log('{}');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp var testEventTarget = new Y.Test.Case({
91d40744967aabc3e1c105820a22e279fdecc689Tripp name: "EventTarget tests",
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp testAugment: function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp var fired = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp var O = function(id) {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp this.id = id;
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.log('O constructor executed ' + id);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp O.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp oOo: function(ok) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('oOo');
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp }
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp }
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // pass configuration info into EventTarget with the following
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // construct
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.augment(O, Y.EventTarget, null, null, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp emitFacade: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp var o = new O(),
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp handle = o.on('testAugment', function(e, arg1, arg2) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(this instanceof O);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(e instanceof Y.Event.Facade);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(e.foo === 'afoo');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(e.details[1] === 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(arg1 === 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(arg2 === 2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp o.fire('testAugment', { foo: 'afoo' }, 1, 2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp handle.detach();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // if the first argument is not an object, the
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // event facade is moved in front of the args rather
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // than overwriting existing object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp o.on('testAugment', function(e, arg1, arg2) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.areEqual(1, arg1);
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp Y.Assert.areEqual(2, arg2);
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp o.fire('testAugment', 1, 2);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp testExtend: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fired = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var Base = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('Base constructor executed');
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp arguments.callee.superclass.constructor.apply(this, arguments);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp }
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.extend(Base, Y.EventTarget, {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp base: function() {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp Y.log('all your base...');
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var b = new Base();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp b.on('testExtend', function(arg1, arg2) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(this instanceof Base);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(arg1 === 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(arg2 === 2);
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp fired = true;
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp b.fire('testExtend', 1, 2);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp Y.Assert.isTrue(fired);
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp testPrefix: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fired1 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp var O = function(id) {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp this.id = id;
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.log('O constructor executed ' + id);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp }
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp O.prototype = {
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp oOo: function(ok) {
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.log('oOo');
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp // pass configuration info into EventTarget with the following
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp // construct
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.augment(O, Y.EventTarget, null, null, {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp emitFacade: true,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp prefix: 'prefix'
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp });
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp var o = new O();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp o.on('testPrefix', function(e, arg1, arg2) {
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.Assert.isTrue(this instanceof O);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp fired1 = true;
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp });
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp o.on('prefix:testPrefix', function(e, arg1, arg2) {
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.Assert.isTrue(this instanceof O);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp fired2 = true;
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp o.fire('testPrefix', { foo: 'afoo' }, 1, 2);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.Assert.isTrue(fired1);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp // Y.Assert.isTrue(fired2);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired1 = false;
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp fired2 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp o.fire('prefix:testPrefix', { foo: 'afoo' }, 1, 2);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.Assert.isTrue(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired2);
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp testDetachKey: function() {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp var fired1 = false,
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp fired2 = false;
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.on('handle|test:event', function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired1 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // one listener
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.fire('test:event');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp Y.detach('handle|test:event');
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp fired1 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false;
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.on('handle|test:event', function() {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp fired2 = true;
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp // first lisener detached, added a new listener
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('test:event');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.detach('handle|test:event');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired1 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.after('handle|test:event', function(arg1) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.areEqual('orange', arg1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // comma or pipe
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.on('handle|test:event', function(arg1) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.areEqual('orange', arg1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired2);
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp fired1 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // testing on and after order
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('test:event', 'orange');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired1 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // spaces after the comma or lack thereof should have
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // no effect on the addition or removal of listeners
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.detach('handle|test:event');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // added both an on listener and an after listener,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // then detached both
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp Y.fire('test:event', 'orange');
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Assert.isFalse(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp testDetachAllByKey: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fired1 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.after('handle|test:event2', function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.on('handle|test:event2', function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp fired1 = true;
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp // detachAll
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.detach('handle|*');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('test:event2');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired1, 'fired1, the after listener should not have fired.');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired2, 'fired2, the on listener should not have fired.');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp testChain: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fired1 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired3 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired4 = false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired5 = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // should be executed once, after f2
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var f1 = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired1 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // should be executed once, before f1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var f2 = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isFalse(fired1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired2 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // should be executed once, different event from f1 and f2
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var f3 = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired3 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // detached before fired, should not executed
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var f4 = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired4 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // should fire once, preserving the custom prefix rather
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // than using the configured event target prefix
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var f5 = function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fired5 = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // configure chaining via global default or on the event target
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp YUI({ /* chain: true */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp base:'/build/'
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp }).use('*', function(Y2) {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp var o = new Y2.EventTarget({
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp prefix: 'foo',
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp chain : true
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // without event target prefix manipulation (incomplete now)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // @TODO an error here is throwing an uncaught exception rather than failing the test
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // 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');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp // with event target prefix manipulation ('e' is the same event as 'foo:e',
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp // but 'pre:e' is a different event only accessible by using that exact name)
91d40744967aabc3e1c105820a22e279fdecc689Trippo.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');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired1); // verifies chaining, on/after order, and adding the event target prefix
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired2); // verifies chaining, on/after order, and accepting the prefix in the event name
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.isTrue(fired3); // verifies no interaction between events, and prefix manipulation
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.Assert.isFalse(fired4); // verifies detach works (regardless of spaces after comma)
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.Assert.isTrue(fired5); // verifies custom prefix
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp },
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp testObjType: function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp var f1, f2;
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.on({
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp 'y:click': function() {f1 = true},
91d40744967aabc3e1c105820a22e279fdecc689Tripp 'y:clack': function() {f2 = true}
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp });
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.fire('y:click');
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.fire('y:clack');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Assert.isTrue(f1);
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Assert.isTrue(f2);
91d40744967aabc3e1c105820a22e279fdecc689Tripp },
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp testPreventFnOnce: function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp var count = 0;
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.publish('y:foo1', {
91d40744967aabc3e1c105820a22e279fdecc689Tripp emitFacade: true,
91d40744967aabc3e1c105820a22e279fdecc689Tripp preventedFn: function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp count++;
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Assert.isTrue(this instanceof YUI);
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.on('y:foo1', function(e) {
91d40744967aabc3e1c105820a22e279fdecc689Tripp e.preventDefault();
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.on('y:foo1', function(e) {
91d40744967aabc3e1c105820a22e279fdecc689Tripp e.preventDefault();
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.fire('y:foo1');
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.Assert.areEqual(1, count);
91d40744967aabc3e1c105820a22e279fdecc689Tripp },
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp testDetachHandle: function() {
91d40744967aabc3e1c105820a22e279fdecc689Tripp var count = 0, handle, handle2;
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.publish('y:foo', {
91d40744967aabc3e1c105820a22e279fdecc689Tripp emitFacade: true,
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp Y.on('y:foo', function(e) {
91d40744967aabc3e1c105820a22e279fdecc689Tripp count++;
91d40744967aabc3e1c105820a22e279fdecc689Tripp handle2.detach();
91d40744967aabc3e1c105820a22e279fdecc689Tripp });
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp handle = Y.on('y:foo', function(e) {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp count += 100;
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp });
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp handle2 = Y.on('y:foo', function(e) {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp count += 1000;
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp Y.detach(handle);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('y:foo');
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp Y.Assert.areEqual(1, count);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp count = 0;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp var handle3 = Y.on('y:click', function() {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp count++;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp handle3.detach();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('y:click');
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp Y.fire('y:click');
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp count = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.on('y:foo', function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp count++;
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp });
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp Y.on('y:foo', function(e) {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp count++;
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp });
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp Y.detachAll('y:click');
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.fire('y:click');
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp Y.Assert.areEqual(0, count);
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp },
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp 'broadcast = 1 should be consumable by Y.on, 2 by Y.Global on': function() {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp var o = new Y.EventTarget(), s1, s2, s3, s4;
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp o.publish('y:foo2', {
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp emitFacade: true,
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp broadcast: 1
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp });
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.on('y:foo2', function() {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.log('Y foo2 executed');
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp s1 = 1;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp });
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp Y.Global.on('y:foo2', function() {
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp Y.log('GLOBAL foo2 executed');
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp s2 = 1;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp });
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp o.fire('y:foo2');
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp Y.Assert.areEqual(1, s1);
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp Y.Assert.areNotEqual(1, s2);
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp s1 = 0;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp s2 = 0;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp o.publish('y:bar', {
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp emitFacade: true,
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp broadcast: 2
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.on('y:bar', function() {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.log('Y bar executed');
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp s3 = 1;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Global.on('y:bar', function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('GLOBAL bar executed');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s4 = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp o.fire('y:bar');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.areEqual(1, s3);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Assert.areEqual(1, s4);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Test.Runner.add(testEventTarget);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Test.Runner.run();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp YUI({
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp base: "/build/",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filter: "debug",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp combine: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp useConsole: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // logInclude: ['event', 'test']
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp logExclude: {Dom: true, Selector: true, Node: true, attribute: true, base: true, event: true, widget: true}
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp }).use("datasource", function(Y) {
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp Y.log('loaded datasource: ' + Y.DataSource);
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp });
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp})();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp</script>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp</body>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp</html>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp