event_sequence.html revision 9a76bc095233b0cb0be3a913f5913bfc72c38b6c
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">
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller font: normal 125%/1.4 Arial, sans-serif;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller .yui3-skin-sam .yui3-console .yui3-console-content {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller font-size: 10px;
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale .yui3-skin-sam .yui3-console .yui3-console-bd {
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale height: 50em;
e062724b7bdbbe8c1ddfbc7f3bb5bdb6e129d82cDaniel Vale .yui3-skin-sam .yui3-console-entry-pass .yui3-console-entry-cat {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller background: #070;
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller .yui3-skin-sam .yui3-console-entry-fail .yui3-console-entry-cat {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller background: #700;
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale .highlight-example {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale display: inline;
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale .highlight-example h2 {
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller display: none;
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>
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller}).use('test','console',function (Y) {
574a02d837d442144fe066284dfed20e43a42053Julian Kornbergervar suite = new Y.Test.Suite("Event firing sequence test");
7ea9649883e1bbe8f2582db1a3c66af8b7206056henning mueller/*****************************/
705933deb08bc4269e8c08d50143af3cb5c1c670henning mueller/* Tests begin here */
c34ca181e48d016718223de38106fdfbe8ffc65aDaniel Couto Vale/*****************************/
0772cf7b22adf46dbab68e829d6a2cd8e8d1bc2ahenning mueller name : "single event sequence",
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller setUp : function () {
7ea9649883e1bbe8f2582db1a3c66af8b7206056henning mueller emitFacade: true
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale test_seqSimple : function () {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale var results = '';
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale this.source.after('foo', function () { results += 'B'; });
3c11d09eefb778da1ccf77a5de6bd70c0f4c0181Daniel Couto Vale test_seqDefaultFnComplete : function () {
ec416eab0158cfe34b77cea4a11f8b84bc194a7aDaniel Couto Vale var results = '';
f89d5ab39b14bea746801052d38ba41146e8f9eeDaniel Couto Vale defaultFn: function () { results += 'B'; }});
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.after('foo', function () { results += 'C'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale test_seqDefaultFnPrevented : function () {
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale var results = '';
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale emitFacade: true,
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale defaultFn: function () { results += '1'; }});
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.on('foo', function (e) {
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale results += 'A';
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale this.source.after('foo', function () { results += '2'; });
198cdcc588a784fdf7dc945b02ff5eccf5b2b9c7Daniel Couto Vale test_seqPreventedFnComplete : function () {
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale var results = '';
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale preventedFn: function () { results += '1'; }});
02082be7bcc07f71ffbdc27eaf1e151f0198d10cDaniel Couto Vale this.source.on('foo', function () { results += 'A'; });
3b8ddf9c7bdfd34cfc7dd41ff603f83dba6ed7d4Daniel Couto Vale this.source.after('foo', function () { results += 'B'; });
7176611933342f2f57c1eee8342be273cf33c539Daniel Couto Vale test_seqPreventedFnPrevented : function () {
0cab0df9f861c0f5bc605075bae75760b4e815e0Daniel Couto Vale var results = '';
58721b9d3a8cd6a624269ddf507f80af4417c9bdhenning mueller emitFacade: true,
this.source.on('foo', function (e) {
this.source.after('foo', function () { results += '1'; });
this.source.fire('foo');
Y.Assert.areSame("AB",results);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'C'; });
this.source.fire('foo');
Y.Assert.areSame("ABC",results);
this.source.publish('foo', {
this.source.on('foo', function (e) {
this.source.after('foo', function () { results += '2'; });
this.source.fire('foo');
Y.Assert.areSame("AB",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);
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);
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);
this.source.publish('foo', {
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);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
Y.on('foo', function (e) {
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);
this.source.publish('foo', {
this.source.on('foo', function (e) {
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');
Y.Assert.areSame('ABCD', results);
this.source.publish('foo', {
this.source.on('foo', function (e) { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
Y.on('foo', function (e) {
Y.after('foo', function () { results += 'E'; });
Y.Global.on('foo', function () { results += '2'; });
Y.Global.after('foo', function () { results += '3'; });
this.source.fire('foo');
// Y.Assert.areSame('ABCDEF', results);
Y.Assert.areSame('AD1BCE', results);
this.source.publish('foo', {
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);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
Y.on('foo', function (e) {
Y.after('foo', function () { results += '4'; });
Y.Global.on('foo', function () { results += 'D'; });
Y.Global.after('foo', function () { results += '6'; });
this.source.fire('foo');
Y.Assert.areSame('ABCD', results);
this.source.publish('foo', {
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) {
Y.Global.after('foo', function () { results += '5'; });
this.source.fire('foo');
Y.Assert.areSame('ABCD', results);
this.source.publish('foo', {
this.source.on('foo', function (e) {
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');
Y.Assert.areSame('ABCD', results);
this.source.publish('foo', {
this.source.on('foo', function (e) { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
Y.on('foo', function (e) {
Y.after('foo', function () { results += 'E'; });
Y.Global.on('foo', function () { results += '2'; });
Y.Global.after('foo', function () { results += '3'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEF', results);
this.source.publish('foo', {
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) {
e.stopPropagation(); // should be moot at this point
Y.Global.after('foo', function () { results += 'F'; });
this.source.fire('foo');
Y.Assert.areSame('ABCDEFGH', results);
this.source.publish('foo', {
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);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
this.middleMan1.on('foo', function (e) {
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);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += 'F'; });
this.middleMan1.on('foo', function (e) {
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);
this.source.publish('foo', {
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);
this.source.publish('foo', {
this.source.on('foo', function () { results += 'A'; });
this.source.after('foo', function () { results += '3'; });
this.middleMan1.on('foo', function (e) {
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);
this.source.publish('foo', {
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) {
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);
this.source.publish('foo', {
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) {
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);
this.source.publish('foo', {
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) {
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(
var yconsole = new Y.Console({
//yconsole.hideCategory('info');
yconsole.printLogEntry = function (m) {
if (m.category === 'section') {
} else if (m.category === "break") {
} else if (m.category === "info") {
return Y.Console.prototype.printLogEntry.call(this,m);
Y.log("Tests","section","TestRunner");
Y.Test.Runner.setName("CustomEventSequence");
Y.Test.Runner.add(suite);