2 var EventEmitter = require('events').EventEmitter,
\r
3 assert = require('assert'),
\r
6 module.exports = test;
\r
11 function test(msg, handler) {
\r
12 tests[msg] = handler;
\r
16 var specs = Object.keys(tests),
\r
17 specsRemaining = specs.length;
\r
19 specs.forEach(function(spec) {
\r
20 var handler = tests[spec];
\r
22 // grab the set of asserts for this spec
\r
23 var shoulds = handler(),
\r
24 keys = Object.keys(shoulds),
\r
25 remaining = keys.length;
\r
27 keys.forEach(function(should) {
\r
28 var em = new EventEmitter(),
\r
29 to = setTimeout(function() {
\r
30 assert.fail('never ended');
\r
34 .on('error', function assertFail(err) { assert.fail(err) })
\r
35 .on('end', function assertOk() {
\r
37 shoulds[should].status = true;
\r
40 if(!(--remaining)) {
\r
44 keys.map(function(k) { return ' » ' + k; }).join('\n'),
\r
46 ' Total: ' + keys.length,
\r
47 ' Failed: ' + keys.map(function(item) { return shoulds[should].status; }).filter(function(status) { return !status; }).length,
\r
51 if(!(--specsRemaining)) {
\r
52 console.log('All done');
\r
58 shoulds[should](em);
\r