UNPKG

sfn-schedule-parser

Version:

A simple friendly Node.js tool for parsing schedule string patterns.

210 lines (183 loc) 5.73 kB
var assert = require("assert"); var format = require("./format").format; var util = require("../dist/util"); var date = new Date(), dateInfo1 = { hours: 8, minutes: 0 }, expected1 = { hours: 8, minutes: 0 }, tickInfo1 = util.getNextTick(dateInfo1, date), dateInfo2 = { hours: 8, minutes: "*/5" }, expected2 = { hours: 8, minutes: date.getMinutes() + 5 }, tickInfo2 = util.getNextTick(dateInfo2, date), dateInfo3 = { hours: 8, minutes: "*/5", seconds: "*/10" }, expected3 = { hours: 8, minutes: date.getMinutes(), seconds: date.getSeconds() + 10, }, tickInfo3 = util.getNextTick(dateInfo3, date), dateInfo4 = { date: "*", hours: 8, seconds: "*/10" }, expected4 = { date: date.getDate() + (date.getHours() > 8 ? 1 : 0), hours: 8, seconds: date.getSeconds() + 10, }, tickInfo4 = util.getNextTick(dateInfo4, date), dateInfo5 = { hours: "*", minutes: "*/5", seconds: "*/10" }, expected5 = { hours: date.getHours(), minutes: date.getMinutes(), seconds: date.getSeconds() + 10 }, tickInfo5 = util.getNextTick(dateInfo5, date); if (expected2.minutes >= 60) { expected2.minutes -= 60; } if (expected3.seconds >= 60) { expected3.seconds -= 60; expected3.minutes += 5; } if (expected3.minutes >= 60) { expected3.minutes -= 60; } if (expected4.date > date.getDate()) { expected4.seconds = 0; } if (expected4.seconds > 59) { expected4.seconds -= 60; } if (expected5.seconds >= 60) { expected5.seconds -= 60; expected5.minutes += 5; } if (expected5.minutes >= 60) { expected5.minutes -= 60; expected5.hours += 1; } if (expected5.hours >= 24) { expected5.hours -= 24; } describe("getNextTick(dateInfo: DateTimeLike, date?: Date): DateTime", function () { it(format(dateInfo1) + " should result in " + format(expected1), function () { assert.deepStrictEqual(tickInfo1, expected1); }); it(format(dateInfo2) + " should result in " + format(expected2), function () { assert.deepStrictEqual(tickInfo2, expected2); }); it(format(dateInfo3) + " should result in " + format(expected3), function () { assert.deepStrictEqual(tickInfo3, expected3); }); it(format(dateInfo4) + " should result in " + format(expected4), function () { assert.deepStrictEqual(tickInfo4, expected4); }); it(format(dateInfo5) + " should result in " + format(expected5), function () { assert.deepStrictEqual(tickInfo5, expected5); }); }); var time1 = new Date( date.getFullYear(), date.getMonth(), date.getDate(), expected1.hours, expected1.minutes, date.getSeconds() ).getTime(); var time2 = new Date( date.getFullYear(), date.getMonth(), date.getDate(), expected2.hours, expected2.minutes, date.getSeconds() ).getTime(); var time3 = new Date( date.getFullYear(), date.getMonth(), date.getDate(), expected3.hours, expected3.minutes, expected3.seconds ).getTime(); var time4 = new Date( date.getFullYear(), date.getMonth(), expected4.date, expected4.hours, date.getMinutes(), expected4.seconds ).getTime(); var time5 = new Date( date.getFullYear(), date.getMonth(), date.getDate(), expected5.hours, expected5.minutes, expected5.seconds ).getTime(); describe("getNextTickTime(tickInfo: DateTime, date?: Date): number", function () { it(format(tickInfo1) + " should result in " + time1, function () { assert.strictEqual(util.getNextTickTime(tickInfo1, date), time1); }); it(format(tickInfo2) + " should result in " + time2, function () { assert.strictEqual(util.getNextTickTime(tickInfo2, date), time2); }); it(format(tickInfo3) + " should result in " + time3, function () { assert.strictEqual(util.getNextTickTime(tickInfo3, date), time3); }); it(format(tickInfo4) + " should result in " + time4, function () { assert.strictEqual(util.getNextTickTime(tickInfo4, date), time4); }); it(format(tickInfo5) + " should result in " + time5, function () { assert.strictEqual(util.getNextTickTime(tickInfo5, date), time5); }); }); var timeout1 = time1 - date.getTime(), timeout2 = time2 - date.getTime(), timeout3 = time3 - date.getTime(), timeout4 = time4 - date.getTime(), timeout5 = time5 - date.getTime(); describe("getBestTimeout(tickInfo: DateTime, date?: Date): number", function () { it(format(tickInfo1) + " should result in " + timeout1, function () { assert.strictEqual(util.getBestTimeout(tickInfo1, date), timeout1); }); it(format(tickInfo2) + " should result in " + timeout2, function () { assert.strictEqual(util.getBestTimeout(tickInfo2, date), timeout2); }); it(format(tickInfo3) + " should result in " + timeout3, function () { assert.strictEqual(util.getBestTimeout(tickInfo3, date), timeout3); }); it(format(tickInfo4) + " should result in " + timeout4, function () { assert.strictEqual(util.getBestTimeout(tickInfo4, date), timeout4); }); it(format(tickInfo5) + " should result in " + timeout5, function () { assert.strictEqual(util.getBestTimeout(tickInfo5, date), timeout5); }); }); describe("getBestInterval(tickInfo: DateTime): number", function () { it(format(tickInfo1) + " should result in " + (1000 * 60), function () { assert.strictEqual(util.getBestInterval(tickInfo1), 1000 * 60); }); });