chronometer
Version:
a hive-mvc mixin to fire off events at given intervals
149 lines (107 loc) • 3.94 kB
JavaScript
var _ = require('underscore');
var util = require('util');
var path = require('path');
var fs = require('fs');
var tap = require('tap');
var chron = require('./../chronometer');
tap.test('chronometer', {timeout: 1000 * 10, skip: false }, function (suite) {
suite.test('interval_value', {timeout: 1000 * 10, skip: false }, function (iv_test) {
var chronometer;
var apiary = {
set_config: function(name, item){
if (name == 'chronometer'){
chronometer = item;
}
}
}
chron(apiary, function(err, mixin){
mixin.respond(function(){
iv_test.ok(chronometer, 'got the chronometer');
chronometer.stop_clock();
var count = 0;
chronometer.add_time_listener('every other second', function(){
++count;
}, 3);
var time = new moment();
time.hour(12);
time.minute(0);
time.second(0);
chronometer.emit('time', time);
while(time.minute() < 30){
time.add('minute', 1);
chronometer.emit('time', time);
}
iv_test.equal(count, 10, 'ten executions');
iv_test.end();
})
})
});
suite.test('interval function', {timeout: 1000 * 10, skip: false }, function (if_test) {
var chronometer;
var apiary = {
set_config: function(name, item){
if (name == 'chronometer'){
chronometer = item;
}
}
}
chron(apiary, function(err, mixin){
mixin.respond(function(){
if_test.ok(chronometer, 'got the chronometer');
chronometer.stop_clock();
var count = 0;
chronometer.add_time_listener('every other second', function(){
++count;
}, function(time){
return (time.minute() > 10 && time.minute() <= 20);
});
var time = new moment();
time.hour(12);
time.minute(0);
time.second(0);
chronometer.emit('time', time);
while(time.minute() < 30){
time.add('minute', 1);
chronometer.emit('time', time);
}
if_test.equal(count, 10, 'ten executions -- computed');
if_test.end();
})
})
});
suite.test('suicide action', {timeout: 1000 * 10, skip: false }, function (if_test) {
var chronometer;
var apiary = {
set_config: function(name, item){
if (name == 'chronometer'){
chronometer = item;
}
}
}
chron(apiary, function(err, mixin){
mixin.respond(function(){
if_test.ok(chronometer, 'got the chronometer');
chronometer.stop_clock();
var count = 0;
chronometer.add_time_listener('every second, die after 10', function(time, manager){
++count;
if (count >= 10) {
this.active = false;
}
}, 1);
var time = new moment();
time.hour(12);
time.minute(0);
time.second(0);
chronometer.emit('time', time);
while(time.minute() < 30){
time.add('minute', 1);
chronometer.emit('time', time);
}
if_test.equal(count, 10, 'ten executions');
if_test.end();
})
})
});
suite.end();
});