-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest.js
99 lines (74 loc) · 2.26 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
Name: fibonacci - test.js
Source & docs: https://github.com/fvdm/nodejs-fibonacci
Feedback: https://github.com/fvdm/nodejs-fibonacci/issues
License: Unlicense (public domain)
*/
'use strict';
const EventEmitter = require( 'events' ).EventEmitter;
const dotest = require( 'dotest' );
const app = require( './' );
let evResult = false;
let evDone = false;
const iterations = 1000;
const expNumber = '43466557686937456435688527675040625802564660517371780402481'
+ '7290895365554179490518904038798400792551692959225930803226347752096896232'
+ '3987332247116164299644090653318793829896964992851600370447613779516684922'
+ '8875';
// process events
app.on( 'result', result => {
evResult = result;
} );
app.on( 'done', result => {
evDone = result;
} );
// module basics
dotest.add( 'Module', test => {
const isEE = ( app instanceof EventEmitter );
test()
.isObject( 'fail', 'exports', app )
.isExactly( 'fail', 'interface is EventEmitter', isEE, true )
.isFunction( 'fail', '.iterate', app && app.iterate )
.isFunction( 'fail', '.kill', app && app.kill )
.done();
} );
// iterate
dotest.add( 'Method .iterate - limit', test => {
const result = app.iterate( iterations );
test()
.isObject( 'fail', '.iterate return', result )
.isExactly( 'fail', '.iterate .number', result && result.number, expNumber )
.done();
} );
// events
dotest.add( 'Events', test => {
const ms = 1000;
dotest.log( 'info', 'Waiting ' + ms + ' ms for event completion' );
setTimeout( () => {
test()
.isObject( 'fail', 'Event result', evResult )
.isObject( 'fail', 'Event done', evDone )
.info( 'Number found in ' + dotest.colorStr( 'yellow', evDone.ms ) + ' ms' )
.done();
}, ms );
} );
// kill
dotest.add( 'Method .kill', test => {
let result = {};
let snapshot = {};
app.on( 'result', res => {
result = res;
if ( res.ms >= 100 ) {
app.kill();
snapshot = result;
test()
.isExactly( 'fail', '.doWhile', app && app.doWhile, false )
.isExactly( 'fail', 'unchanged result', result.number, snapshot.number )
.done();
}
} );
dotest.log( 'info', 'Calculating 10000 fibonacci numbers' );
app.iterate( 10000 );
} );
// Start the tests
dotest.run();