| 1196 | describe("schedules", () => { |
| 1197 | // returns an array of delays, an item for each attempt |
| 1198 | const dryRun = (schedule: Micro.MicroSchedule, maxAttempt: number = 7): Array<number> => { |
| 1199 | let attempt = 1 |
| 1200 | let elapsed = 0 |
| 1201 | let duration = schedule(attempt, elapsed) |
| 1202 | const out: Array<number> = [] |
| 1203 | while (Option.isSome(duration) && attempt <= maxAttempt) { |
| 1204 | const value = duration.value |
| 1205 | attempt++ |
| 1206 | elapsed += value |
| 1207 | out.push(value) |
| 1208 | duration = schedule(attempt, elapsed) |
| 1209 | } |
| 1210 | return out |
| 1211 | } |
| 1212 | |
| 1213 | it("scheduleRecurs", () => { |
| 1214 | const out = dryRun(Micro.scheduleRecurs(5)) |