Skip to content

Commit

Permalink
Merge pull request #202 from OwenVey/issue-201-dow-error
Browse files Browse the repository at this point in the history
fix: throw correct error message for DOW range when dayOfWeekStartIndexZero is false
  • Loading branch information
bradymholt authored May 13, 2021
2 parents 00de7e6 + 5ff403d commit 0678593
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/cronParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ export class CronParser {
RangeValidator.hourRange(parsed[2]);
RangeValidator.dayOfMonthRange(parsed[3]);
RangeValidator.monthRange(parsed[4]);
RangeValidator.dayOfWeekRange(parsed[5]);
RangeValidator.dayOfWeekRange(parsed[5], this.dayOfWeekStartIndexZero);
}

protected assertNoInvalidCharacters(partDescription: string, expression: string) {
Expand Down
7 changes: 5 additions & 2 deletions src/rangeValidator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,15 @@ export default class RangeValidator {
}
}

static dayOfWeekRange(parse: string) {
static dayOfWeekRange(parse: string, dayOfWeekStartIndexZero: boolean) {
const parsed = parse.split(',');
for (let i = 0; i < parsed.length; i++) {
if (!isNaN(parseInt(parsed[i], 10))) {
const dayOfWeek = parseInt(parsed[i], 10);
assert(dayOfWeek >= 0 && dayOfWeek <= 6, 'DOW part must be >= 0 and <= 6');
assert(
dayOfWeek >= 0 && dayOfWeek <= 6,
dayOfWeekStartIndexZero ? 'DOW part must be >= 0 and <= 6' : 'DOW part must be >= 1 and <= 7'
);
}
}
}
Expand Down
8 changes: 6 additions & 2 deletions test/cronstrue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -553,8 +553,12 @@ describe("Cronstrue", function () {

it('dayOfWeek out of range', function () {
assert.throws(function () {
construe.toString("0 0 0 1 12 8");
}, "DOW part must be >= 0 and <= 6")
construe.toString("0 0 0 1 12 8", { dayOfWeekStartIndexZero: true });
}, "DOW part must be >= 0 and <= 6");

assert.throws(function () {
construe.toString("0 0 0 1 12 8", { dayOfWeekStartIndexZero: false });
}, "DOW part must be >= 1 and <= 7");
});

it("garbage expression", function () {
Expand Down

0 comments on commit 0678593

Please sign in to comment.