Skip to content

Commit

Permalink
feat: added DayOfWeek functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dereekb committed Jul 16, 2022
1 parent 0c82ffb commit 16b08bc
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
45 changes: 45 additions & 0 deletions packages/util/src/lib/date/week.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { Day, getDayOffset, getNextDay, getPreviousDay } from './week';

describe('getDayOffset()', () => {
it('should return the previous days if a negative value is input.', () => {
expect(getDayOffset(Day.SATURDAY, -1)).toBe(Day.FRIDAY);
expect(getDayOffset(Day.SUNDAY, -1)).toBe(Day.SATURDAY);
});

it('should return the next days if a positive value is input.', () => {
expect(getDayOffset(Day.SATURDAY, 1)).toBe(Day.SUNDAY);
expect(getDayOffset(Day.SUNDAY, 1)).toBe(Day.MONDAY);
});
});

describe('getPreviousDay()', () => {
it('should return the previous day', () => {
expect(getPreviousDay(Day.SATURDAY)).toBe(Day.FRIDAY);
expect(getPreviousDay(Day.SUNDAY)).toBe(Day.SATURDAY);
});

it('should return the previous days if a negative value is input.', () => {
expect(getPreviousDay(Day.SATURDAY, -1)).toBe(Day.FRIDAY);
expect(getPreviousDay(Day.SUNDAY, -1)).toBe(Day.SATURDAY);
});

it('should return the previous days if a positive value is input.', () => {
expect(getPreviousDay(Day.SATURDAY, -1)).toBe(Day.FRIDAY);
expect(getPreviousDay(Day.SUNDAY, -1)).toBe(Day.SATURDAY);
});

it('should return the previous days for the number of days input.', () => {
expect(getPreviousDay(Day.SATURDAY, 5)).toBe(Day.MONDAY);
});
});

describe('getNextDay()', () => {
it('should return the next.', () => {
expect(getNextDay(Day.FRIDAY)).toBe(Day.SATURDAY);
expect(getNextDay(Day.SUNDAY)).toBe(Day.MONDAY);
});

it('should return the next days for the number of days input.', () => {
expect(getNextDay(Day.FRIDAY, 4)).toBe(Day.TUESDAY);
});
});
24 changes: 24 additions & 0 deletions packages/util/src/lib/date/week.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,27 @@ export enum Day {
FRIDAY = 5,
SATURDAY = 6
}

export function getTomorrow(day: DayOfWeek): DayOfWeek {
return getNextDay(day, 1);
}

export function getDayOffset(day: DayOfWeek, days: number): DayOfWeek {
if (days === 0) {
return day;
} else if (days < 0) {
return getPreviousDay(day, days);
} else {
return getNextDay(day, days);
}
}

export function getPreviousDay(day: DayOfWeek, days: number = 1): DayOfWeek {
const offset = Math.abs(days) % 7;
const cap = 7 - offset;
return getNextDay(day, cap);
}

export function getNextDay(day: DayOfWeek, days: number = 1): DayOfWeek {
return Math.abs((day + days) % 7) as DayOfWeek;
}

0 comments on commit 16b08bc

Please sign in to comment.