79 lines
1.6 KiB
JavaScript
79 lines
1.6 KiB
JavaScript
var util = require('util');
|
|
var test = require('tap').test;
|
|
var CronParser = require('../lib/parser');
|
|
|
|
test('parse cron with last day in a month', function(t) {
|
|
var options = {
|
|
currentDate: new Date(2014, 0, 1),
|
|
endDate: new Date(2014, 10, 1)
|
|
};
|
|
|
|
try {
|
|
var interval = CronParser.parseExpression('0 0 L * *', options);
|
|
t.equal(interval.hasNext(), true);
|
|
|
|
for (i = 0; i < 10; ++i) {
|
|
var next = interval.next();
|
|
t.ok(next, 'has a date');
|
|
}
|
|
|
|
} catch (err) {
|
|
t.ifError(err, 'Parse read error');
|
|
}
|
|
|
|
t.end();
|
|
});
|
|
|
|
test('parse cron with last day in feb', function(t) {
|
|
var options = {
|
|
currentDate: new Date(2016, 0, 1),
|
|
endDate: new Date(2016, 10, 1)
|
|
};
|
|
|
|
try {
|
|
var interval = CronParser.parseExpression('0 0 6-20/2,L 2 *', options);
|
|
t.equal(interval.hasNext(), true);
|
|
var next = null;
|
|
var items = 9;
|
|
var i = 0;
|
|
while(interval.hasNext()) {
|
|
next = interval.next();
|
|
i += 1;
|
|
t.ok(next, 'has a date');
|
|
}
|
|
//leap year
|
|
t.equal(next.getDate(), 29);
|
|
t.equal(i, items);
|
|
|
|
} catch (err) {
|
|
t.ifError(err, 'Parse read error');
|
|
}
|
|
|
|
t.end();
|
|
});
|
|
|
|
test('parse cron with last day in feb', function(t) {
|
|
var options = {
|
|
currentDate: new Date(2014, 0, 1),
|
|
endDate: new Date(2014, 10, 1)
|
|
};
|
|
|
|
try {
|
|
var interval = CronParser.parseExpression('0 0 1,3,6-10,L 2 *', options);
|
|
t.equal(interval.hasNext(), true);
|
|
var next = null;
|
|
while(interval.hasNext()) {
|
|
next = interval.next();
|
|
t.ok(next, 'has a date');
|
|
}
|
|
//common year
|
|
t.equal(next.getDate(), 28);
|
|
|
|
} catch (err) {
|
|
t.ifError(err, 'Parse read error');
|
|
}
|
|
|
|
t.end();
|
|
});
|
|
|