Skip to content

Commit

Permalink
[api test] First pass at 80/20 namespace + wildcard event emitter
Browse files Browse the repository at this point in the history
  • Loading branch information
hij1nx committed May 30, 2011
1 parent f6f5f40 commit c13c790
Showing 1 changed file with 50 additions and 24 deletions.
74 changes: 50 additions & 24 deletions lib/EventEmitter2.js
@@ -1,4 +1,5 @@
var eyes = require('eyes');
var eyes = require('eyes'),
assert = require('assert');

EventEmitter = function(conf) {
if(conf) {
Expand Down Expand Up @@ -94,7 +95,6 @@ EventEmitter.prototype.emit = function(event) {
// append that object to the unknown set and continue exploration.
//
var ns = explore[j];
require('eyes').inspect(explore, part);

if (i === name.length - 1) {
//
Expand All @@ -104,21 +104,27 @@ EventEmitter.prototype.emit = function(event) {
//
if (part === '*') {
for (var key in ns) {
for (var k = 0; k < ns[key]._listeners.length; k++) {
ns[key]._listeners[k].apply(this, args);
//
// Remark: This could cause some collisions for `_listeners`,
// `_ttl`, and `_ttd`.
//
if (ns[key] && ns[key]._listeners) {
for (var k = 0; k < ns[key]._listeners.length; k++) {
ns[key]._listeners[k].apply(this, args);
}
}
}
invoked = true;
}
else {
if (ns[part]) {
if (ns[part] && ns[part]._listneners) {
for (var k = 0, l = ns[part]._listeners.length; k < l; k++) {
ns[part]._listeners[k].apply(this, args);
}
invoked = true;
}

if (ns['*']) {
if (ns['*'] && ns['*']._listeners) {
for (var k = 0, l = ns['*']._listeners.length; k < l; k++) {
ns['*']._listeners[k].apply(this, args);
}
Expand Down Expand Up @@ -156,6 +162,13 @@ EventEmitter.prototype.emit = function(event) {
// at this level, nest deeper for that particular set.
//
explore[j] = explore[j]['*'];

if (ns['*']._listeners) {
for (var k = 0, l = ns['*']._listeners.length; k < l; k++) {
ns['*']._listeners[k].apply(this, args);
}
invoked = true;
}
}
}
else {
Expand All @@ -171,6 +184,13 @@ EventEmitter.prototype.emit = function(event) {
}
}

if (ns['*'] && ns['*']._listeners) {
for (var k = 0, l = ns['*']._listeners.length; k < l; k++) {
ns['*']._listeners[k].apply(this, args);
}
invoked = true;
}

removeAt.push(j);
}
}
Expand Down Expand Up @@ -225,30 +245,36 @@ EventEmitter.prototype.listeners = function() {};

// test

var vat = new EventEmitter({ delimiter: ':' });


vat.on('foo:*', function () {
eyes.inspect(arguments, 'foo:*');
});
console.log('start');

// vat.on('foo:*:bar', function () {
// eyes.inspect(arguments, 'foo:*:bar');
// });
//
// vat.on('foo:*:*', function () {
// eyes.inspect(arguments, 'foo:*:*');
// });
//
// vat.on('foo:bar:bar', function () {
// eyes.inspect(arguments, 'foo:bar:bar')
// });

var tests = {
'foo:*': 4,
'foo:*:bar': 2,
'foo:*:*': 3,
'foo:bar:bar': 2
}

console.log('start');
Object.keys(tests).forEach(function (event) {
var vat = new EventEmitter({ delimiter: ':' }),
count = 0;

vat.on(event, function () {
eyes.inspect(arguments, event);
count++;
});

eyes.inspect(event, 'Beginning test for');

vat.emit('foo:box:bar', 1, 2, 3, 4);
vat.emit('foo:bar:*', 5, 6, 7, 8);
vat.emit('foo:box:bar', 1, 2, 3, 4);
vat.emit('foo:bar:*', 5, 6, 7, 8);
vat.emit('foo:*:*', 9, 10, 11, 12);
vat.emit('foo:*');

assert.equal(count, tests[event]);
});

// -> foo/*/bar/*/aff
// | | | | |
Expand Down

0 comments on commit c13c790

Please sign in to comment.