event_sequence.html revision 9a76bc095233b0cb0be3a913f5913bfc72c38b6c
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller<!doctype html>
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller<html>
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale<head>
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller <title>Testing Event firing sequence</title>
f89d5ab39b14bea746801052d38ba41146e8f9eeDaniel Couto Vale <link type="text/css" rel="stylesheet" href="/build/console/assets/skins/sam/console.css">
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller <link type="text/css" rel="stylesheet" href="/build/test/assets/test-console.css">
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller <style type="text/css" id="styleblock" class="highlight-ignore">
2b056a2f5c950d0b5aec8f3f08d1050c408d73a2henning mueller h1 {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller font: normal 125%/1.4 Arial, sans-serif;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller }
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller .yui3-skin-sam .yui3-console .yui3-console-content {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller font-size: 10px;
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale width: 32em;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller }
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale .yui3-skin-sam .yui3-console .yui3-console-bd {
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale height: 50em;
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale }
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale .yui3-skin-sam .yui3-console-entry-pass .yui3-console-entry-cat {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller background: #070;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller color: #fff;
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale }
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller .yui3-skin-sam .yui3-console-entry-fail .yui3-console-entry-cat {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller background: #700;
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale color: #fff;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller }
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale .highlight-example {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale display: inline;
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale float: left;
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale width: 650px;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller }
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale .highlight-example h2 {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller display: none;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller }
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller </style>
ac2169141f0b549fc8917a4b1d778f4ba3cab0bfJulian Kornberger</head>
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller<body class="yui3-skin-sam">
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller<h1>Testing event firing sequence</h1>
ac2169141f0b549fc8917a4b1d778f4ba3cab0bfJulian Kornberger
ac2169141f0b549fc8917a4b1d778f4ba3cab0bfJulian Kornberger<script type="text/javascript" src="/build/yui/yui.js"></script>
ac2169141f0b549fc8917a4b1d778f4ba3cab0bfJulian Kornberger<script type="text/javascript" src="/build/event-custom/event-custom.js"></script>
ac2169141f0b549fc8917a4b1d778f4ba3cab0bfJulian Kornberger<script type="text/javascript" src="/build/console/console.js"></script>
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller<script type="text/javascript" src="/build/test/test.js"></script>
1cc8cf027c7907544308ffefc3e8071292c907f7henning mueller<script type="text/javascript">
705933deb08bc4269e8c08d50143af3cb5c1c670henning muellerYUI({
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller}).use('test','console',function (Y) {
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller
574a02d837d442144fe066284dfed20e43a42053Julian Kornbergervar suite = new Y.Test.Suite("Event firing sequence test");
574a02d837d442144fe066284dfed20e43a42053Julian Kornberger
7ea9649883e1bbe8f2582db1a3c66af8b7206056henning mueller/*****************************/
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller/* Tests begin here */
c34ca181e48d016718223de38106fdfbe8ffc65aDaniel Couto Vale/*****************************/
705933deb08bc4269e8c08d50143af3cb5c1c670henning muellersuite.add(new Y.Test.Case({
0772cf7b22adf46dbab68e829d6a2cd8e8d1bc2ahenning mueller name : "single event sequence",
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller setUp : function () {
7ea9649883e1bbe8f2582db1a3c66af8b7206056henning mueller this.source = new Y.EventTarget({
7ea9649883e1bbe8f2582db1a3c66af8b7206056henning mueller emitFacade: true
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller });
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale },
f89d5ab39b14bea746801052d38ba41146e8f9eeDaniel Couto Vale
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale test_seqSimple : function () {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale var results = '';
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.publish('foo');
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.after('foo', function () { results += 'B'; });
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.fire('foo');
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale Y.Assert.areSame("AB",results);
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale },
f89d5ab39b14bea746801052d38ba41146e8f9eeDaniel Couto Vale
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale test_seqDefaultFnComplete : function () {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale var results = '';
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.publish('foo', {
f89d5ab39b14bea746801052d38ba41146e8f9eeDaniel Couto Vale defaultFn: function () { results += 'B'; }});
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.after('foo', function () { results += 'C'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.fire('foo');
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale Y.Assert.areSame("ABC",results);
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale },
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale test_seqDefaultFnPrevented : function () {
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale var results = '';
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.publish('foo', {
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale emitFacade: true,
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale defaultFn: function () { results += '1'; }});
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.on('foo', function (e) {
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale results += 'A';
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale e.preventDefault();
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.after('foo', function () { results += '2'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.fire('foo');
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale Y.Assert.areSame("A",results);
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale },
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
198cdcc588a784fdf7dc945b02ff5eccf5b2b9c7Daniel Couto Vale test_seqPreventedFnComplete : function () {
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale var results = '';
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale this.source.publish('foo', {
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale preventedFn: function () { results += '1'; }});
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale this.source.after('foo', function () { results += 'B'; });
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.fire('foo');
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale Y.Assert.areSame("AB",results);
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale },
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale test_seqPreventedFnPrevented : function () {
0cab0df9f861c0f5bc605075bae75760b4e815e0Daniel Couto Vale var results = '';
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale this.source.publish('foo', {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller emitFacade: true,
preventedFn: function () { results += 'B'; }});
this.source.on('foo', function (e) {
results += 'A';
e.preventDefault();
});
this.source.after('foo', function () { results += '1'; });
this.source.fire('foo');
Y.Assert.areSame("AB",results);
},
test_seqDefaultAndPreventedFnComplete : function () {
var results = '';
this.source.publish('foo', {
defaultFn: function () { results += 'B'; },
preventedFn: function () { results += '1'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'C'; });
this.source.fire('foo');
Y.Assert.areSame("ABC",results);
},
test_seqDefaultAndPreventedFnPrevented : function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
defaultFn: function () { results += '1'; },
preventedFn: function () { results += 'B'; }
});
this.source.on('foo', function (e) {
results += 'A';
e.preventDefault();
});
this.source.after('foo', function () { results += '2'; });
this.source.fire('foo');
Y.Assert.areSame("AB",results);
}
}));
/*
suite.add(new Y.Test.Case({
name : "broadcast",
setUp : function () {
this.source = new Y.EventTarget;
},
test_broadcast0: function () {
var results = '';
this.source.publish('foo', { broadcast: 0 });
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'B'; });
Y.on('foo', function () { results += '1'; });
Y.after('foo', function () { results += '2'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
Y.Assert.areSame('AB', results);
},
test_broadcast1: function () {
var results = '';
this.source.publish('foo', { broadcast: 1 });
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'D'; });
Y.on('foo', function () { results += 'B'; });
Y.after('foo', function () { results += 'C'; });
Y.Global.on('foo', function () { results += '1'; });
Y.Global.after('foo', function () { results += '2'; });
this.source.fire('foo');
// Y.Assert.areSame('ABCD', results);
Y.Assert.areSame('ADBC', results);
},
test_broadcast2: function () {
var results = '';
this.source.publish('foo', { broadcast: 2 });
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
Y.on('foo', function () { results += 'B'; });
Y.after('foo', function () { results += 'E'; });
Y.Global.on('foo', function () { results += 'C'; });
Y.Global.after('foo', function () { results += 'D'; });
this.source.fire('foo');
// Y.Assert.areSame('ABCDEF', results);
Y.Assert.areSame('ABCDEF', results);
},
test_broadcast1Complete: function () {
var results = '';
this.source.publish('foo', {
broadcast: 1,
emitFacade: true,
defaultFn: function () { results += 'C'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += '2' }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'E'; });
Y.on('foo', function () { results += 'B'; });
Y.after('foo', function () { results += 'D'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
// Y.Assert.areSame('ABCDE', results);
Y.Assert.areSame('ACBDE', results);
},
test_broadcast1Prevented: function () {
var results = '';
this.source.publish('foo', {
broadcast: 1,
emitFacade: true,
defaultFn: function () { results += '1'; },
preventedFn: function () { results += 'C'; },
stoppedFn: function () { results += '2' }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
Y.on('foo', function (e) {
results += 'B';
e.preventDefault();
});
Y.after('foo', function () { results += '4'; });
Y.Global.on('foo', function () { results += '5'; });
Y.Global.after('foo', function () { results += '6'; });
this.source.fire('foo');
// Y.Assert.areSame('ABC', results);
Y.Assert.areSame('A1BC4', results);
},
test_broadcast1StoppedAtSource: function () {
var results = '';
this.source.publish('foo', {
broadcast: 1,
emitFacade: true,
defaultFn: function () { results += 'C'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += 'B' }
});
this.source.on('foo', function (e) {
results += 'A';
e.stopPropagation();
});
this.source.after('foo', function () { results += 'D'; });
Y.on('foo', function () { results += '1'; });
Y.after('foo', function () { results += '2'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
// Is this right? stopProp allows defaultFn, but to what level should
// the after subscribers be executed?
Y.Assert.areSame('ABCD', results);
},
test_broadcast1StoppedAtYUIInstance: function () {
var results = '';
this.source.publish('foo', {
broadcast: 1,
emitFacade: true,
defaultFn: function () { results += 'D'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += 'C' }
});
this.source.on('foo', function (e) { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
Y.on('foo', function (e) {
results += 'B';
e.stopPropagation();
});
Y.after('foo', function () { results += 'E'; });
Y.Global.on('foo', function () { results += '2'; });
Y.Global.after('foo', function () { results += '3'; });
this.source.fire('foo');
// Is this right? stopProp allows defaultFn, but to what level should
// the after subscribers be executed? --- No, broadcast is not bubbling
// Y.Assert.areSame('ABCDEF', results);
Y.Assert.areSame('AD1BCE', results);
},
test_broadcast2Complete: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += 'C'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += '2' }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'E'; });
Y.on('foo', function () { results += 'B'; });
Y.after('foo', function () { results += 'D'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDE', results);
},
test_broadcast2PreventedAtYUIInstance: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += '1'; },
preventedFn: function () { results += 'C'; },
stoppedFn: function () { results += '2' }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
Y.on('foo', function (e) {
results += 'B';
e.preventDefault();
});
Y.after('foo', function () { results += '4'; });
// preventDefault does not stop event bubbling
Y.Global.on('foo', function () { results += 'D'; });
Y.Global.after('foo', function () { results += '6'; });
this.source.fire('foo');
Y.Assert.areSame('ABCD', results);
},
test_broadcast2PreventedAtYUIGlobal: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += '1'; },
preventedFn: function () { results += 'D'; },
stoppedFn: function () { results += '2' }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
Y.on('foo', function (e) { results += 'B'; });
Y.after('foo', function () { results += '4'; });
Y.Global.on('foo', function (e) {
results += 'C';
e.preventDefault();
});
Y.Global.after('foo', function () { results += '5'; });
this.source.fire('foo');
Y.Assert.areSame('ABCD', results);
},
test_broadcast2StoppedAtSource: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += 'C'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += 'B' }
});
this.source.on('foo', function (e) {
results += 'A';
e.stopPropagation();
});
this.source.after('foo', function () { results += 'D'; });
Y.on('foo', function () { results += '1'; });
Y.after('foo', function () { results += '2'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
// Is this right? stopProp allows defaultFn, but to what level should
// the after subscribers be executed?
Y.Assert.areSame('ABCD', results);
},
test_broadcast2StoppedAtYUIInstance: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += 'D'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += 'C' }
});
this.source.on('foo', function (e) { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
Y.on('foo', function (e) {
results += 'B';
e.stopPropagation();
});
Y.after('foo', function () { results += 'E'; });
Y.Global.on('foo', function () { results += '2'; });
Y.Global.after('foo', function () { results += '3'; });
this.source.fire('foo');
// Is this right? stopProp allows defaultFn, but to what level should
// the after subscribers be executed?
Y.Assert.areSame('ABCDEF', results);
},
test_broadcast2StoppedAtYUIGlobal: function () {
var results = '';
this.source.publish('foo', {
broadcast: 2,
emitFacade: true,
defaultFn: function () { results += 'E'; },
preventedFn: function () { results += '1'; },
stoppedFn: function () { results += 'D' }
});
this.source.on('foo', function (e) { results += 'A'; });
this.source.after('foo', function () { results += 'H'; });
Y.on('foo', function () { results += 'B'; });
Y.after('foo', function () { results += 'G'; });
Y.Global.on('foo', function (e) {
results += 'C';
e.stopPropagation(); // should be moot at this point
});
Y.Global.after('foo', function () { results += 'F'; });
this.source.fire('foo');
// Is this right? stopProp allows defaultFn, but to what level should
// the after subscribers be executed?
Y.Assert.areSame('ABCDEFGH', results);
}
}));
*/
/*
suite.add(new Y.Test.Case({
name : "bubble",
setUp : function () {
this.source = new Y.EventTarget({
emitFacade: true
});
this.middleMan1 = new Y.EventTarget({
emitFacade: true
});
this.middleMan2 = new Y.EventTarget({
emitFacade: true
});
this.source.addTarget(this.middleMan1);
this.source.addTarget(this.middleMan2);
},
test_bubbleComplete: function () {
var results = '';
this.source.publish('foo', {
broadcast: 0,
defaultFn : function () { results += 'D'; },
preventedFn : function () { results += '1'; },
stoppedFn : function () { results += '2'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'G'; });
this.middleMan1.on('foo', function () { results += 'B'; });
this.middleMan1.after('foo', function () { results += 'F'; });
this.middleMan2.on('foo', function () { results += 'C'; });
this.middleMan2.after('foo', function () { results += 'E'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDGEF', results);
},
test_bubblePrevented: function () {
var results = '';
this.source.publish('foo', {
broadcast: 0,
emitFacade: true,
defaultFn : function () { results += '1'; },
preventedFn : function () { results += 'C'; },
stoppedFn : function () { results += '2'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
this.middleMan1.on('foo', function (e) {
results += 'B';
e.preventDefault();
});
this.middleMan1.after('foo', function () { results += '4'; });
this.middleMan2.on('foo', function () { results += 'D'; });
this.middleMan2.after('foo', function () { results += '5'; });
this.source.fire('foo');
Y.Assert.areSame('ABCD', results);
},
test_bubbleStopped: function () {
var results = '';
this.source.publish('foo', {
broadcast: 0,
emitFacade: true,
defaultFn : function () { results += 'D'; },
preventedFn : function () { results += '1'; },
stoppedFn : function () { results += 'C'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
this.middleMan1.on('foo', function (e) {
results += 'B';
e.stopPropagation();
});
this.middleMan1.after('foo', function () { results += 'E'; });
this.middleMan2.on('foo', function () { results += '2'; });
this.middleMan2.after('foo', function () { results += '3'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEF', results);
},
test_bubbleAndBroadcast1Complete: function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
broadcast: 1,
defaultFn : function () { results += 'E'; },
preventedFn : function () { results += '1'; },
stoppedFn : function () { results += '2'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'I'; });
this.middleMan1.on('foo', function (e) { results += 'B'; });
this.middleMan1.after('foo', function () { results += 'H'; });
this.middleMan2.on('foo', function () { results += 'C'; });
this.middleMan2.after('foo', function () { results += 'G'; });
Y.on('foo', function () { results += 'D'; });
Y.after('foo', function () { results += 'F'; });
Y.Global.on('foo', function () { results += '3'; });
Y.Global.after('foo', function () { results += '4'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEFGHI', results);
},
test_bubbleAndBroadcast1Prevented: function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
broadcast: 1,
defaultFn : function () { results += '1'; },
preventedFn : function () { results += 'C'; },
stoppedFn : function () { results += '2'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
this.middleMan1.on('foo', function (e) {
results += 'B';
e.preventDefault();
});
this.middleMan1.after('foo', function () { results += '4'; });
this.middleMan2.on('foo', function () { results += 'D'; });
this.middleMan2.after('foo', function () { results += '5'; });
Y.on('foo', function () { results += 'E'; });
Y.after('foo', function () { results += '6'; });
Y.Global.on('foo', function () { results += '7'; });
Y.Global.after('foo', function () { results += '8'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDE', results);
},
test_bubbleAndBroadcast1Stopped: function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
broadcast: 1,
defaultFn : function () { results += 'E'; },
preventedFn : function () { results += '1'; },
stoppedFn : function () { results += 'D'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'H'; });
this.middleMan1.on('foo', function (e) { results += 'B'; });
this.middleMan1.after('foo', function () { results += 'G'; });
this.middleMan2.on('foo', function (e) {
results += 'C';
e.stopPropagation();
});
this.middleMan2.after('foo', function () { results += 'F'; });
Y.on('foo', function () { results += '2'; });
Y.after('foo', function () { results += '3'; });
Y.Global.on('foo', function () { results += '4'; });
Y.Global.after('foo', function () { results += '5'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEFGH', results);
},
test_bubbleAndBroadcast2Prevented: function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
broadcast: 2,
defaultFn : function () { results += '1'; },
preventedFn : function () { results += 'D'; },
stoppedFn : function () { results += '2'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
this.middleMan1.on('foo', function (e) { results += 'B'; });
this.middleMan1.after('foo', function () { results += '4'; });
this.middleMan2.on('foo', function (e) {
results += 'C';
e.preventDefault();
});
this.middleMan2.after('foo', function () { results += '5'; });
Y.on('foo', function () { results += 'E'; });
Y.after('foo', function () { results += '6'; });
Y.Global.on('foo', function () { results += 'F'; });
Y.Global.after('foo', function () { results += '7'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDE', results);
},
test_bubbleAndBroadcast2Stopped: function () {
var results = '';
this.source.publish('foo', {
emitFacade: true,
broadcast: 2,
defaultFn : function () { results += 'E'; },
preventedFn : function () { results += '1'; },
stoppedFn : function () { results += 'D'; }
});
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'H'; });
this.middleMan1.on('foo', function (e) { results += 'B'; });
this.middleMan1.after('foo', function () { results += 'G'; });
this.middleMan2.on('foo', function (e) {
results += 'C';
e.stopPropagation();
});
this.middleMan2.after('foo', function () { results += 'F'; });
Y.on('foo', function () { results += '2'; });
Y.after('foo', function () { results += '3'; });
Y.Global.on('foo', function () { results += '4'; });
Y.Global.after('foo', function () { results += '5'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEFGH', results);
}
}));
*/
// Work around for Y.substitute handling "{key:value}" as tokens
Y.Console.prototype.printLogEntry = function (m) {
m = Y.merge(
this._htmlEscapeMessage(m),
Y.Console.ENTRY_CLASSES,
{
cat_class : this.getClassName('entry',m.category),
src_class : this.getClassName('entry',m.source)
});
var n = Y.Node.create(this.one('entryTemplate').replace(/\{([\w-]+)\}/g,
function (_,k) { return k in m ? m[k] : ''; }));
this._addToConsole(n);
return this;
};
var yconsole = new Y.Console({
contentBox:"log",
newestOnTop: false,
height: '500px'
}).render();
//yconsole.hideCategory('info');
yconsole.printLogEntry = function (m) {
if (m.category === 'section') {
this._addToConsole(Y.Node.create("<h3>"+m.message+"</h3>"));
return this;
} else if (m.category === "break") {
this._addToConsole(Y.Node.create("<br>"));
return this;
} else if (m.category === "info") {
return this;
} else {
return Y.Console.prototype.printLogEntry.call(this,m);
}
};
Y.log("Tests","section","TestRunner");
Y.Test.Runner.setName("CustomEventSequence");
Y.Test.Runner.add(suite);
Y.Test.Runner.run();
});
</script>
</body>
</html>