rpg-calendar
Version:
Low level library for working with RPG/Fantasy dates
75 lines • 5.28 kB
JavaScript
import { getDaysInYearBuilder } from './daysInYear';
import { isLeapYearBuilder } from './leapYear';
const isLeapYear4Years = isLeapYearBuilder(4, true);
describe('Days in year', () => {
test('Months with no leap days (leap-year every 4 years)', () => {
const months = [
{
name: 'Test Month 1',
daysInMonth: 9,
monthInYear: 1
},
{
name: 'Test Month 2',
daysInMonth: 11,
monthInYear: 2
}
];
const getDaysInYear = getDaysInYearBuilder(months, isLeapYear4Years);
expect(getDaysInYear(2)).toBe(20);
expect(getDaysInYear(30)).toBe(20);
expect(getDaysInYear(2000000)).toBe(20);
});
test('Months with extra days (leap-year every 4 years)', () => {
const months = [
{
name: 'Test Month 1',
daysInMonth: 9,
extraDays: [
{
name: 'an extra day'
},
{
name: 'another extra day'
}
],
monthInYear: 2
},
{
name: 'Test Month 2',
daysInMonth: 11,
monthInYear: 2
}
];
const getDaysInYear = getDaysInYearBuilder(months, isLeapYear4Years);
expect(getDaysInYear(2)).toBe(22);
expect(getDaysInYear(30)).toBe(22);
expect(getDaysInYear(2000000)).toBe(22);
});
test('Months with one leap day (leap-year every 4 years)', () => {
const months = [
{
name: 'Test Month 1',
daysInMonth: 9,
extraDays: [
{
name: 'A leap day!',
onlyInLeapYear: true
}
],
monthInYear: 1
},
{
name: 'Test Month 2',
daysInMonth: 11,
monthInYear: 2
}
];
const getDaysInYear = getDaysInYearBuilder(months, isLeapYear4Years);
expect(getDaysInYear(2)).toBe(20);
expect(getDaysInYear(30)).toBe(20);
expect(getDaysInYear(4)).toBe(21);
expect(getDaysInYear(2000000)).toBe(21);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5c0luWWVhci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kYXlzSW5ZZWFyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvQyxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVwRCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixJQUFJLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1FBQzlELE1BQU0sTUFBTSxHQUF1QjtZQUNqQztnQkFDRSxJQUFJLEVBQUUsY0FBYztnQkFDcEIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsV0FBVyxFQUFFLENBQUM7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxjQUFjO2dCQUNwQixXQUFXLEVBQUUsRUFBRTtnQkFDZixXQUFXLEVBQUUsQ0FBQzthQUNmO1NBQ0YsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUM1RCxNQUFNLE1BQU0sR0FBdUI7WUFDakM7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxJQUFJLEVBQUUsY0FBYztxQkFDckI7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLG1CQUFtQjtxQkFDMUI7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFLENBQUM7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxjQUFjO2dCQUNwQixXQUFXLEVBQUUsRUFBRTtnQkFDZixXQUFXLEVBQUUsQ0FBQzthQUNmO1NBQ0YsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUM5RCxNQUFNLE1BQU0sR0FBdUI7WUFDakM7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxJQUFJLEVBQUUsYUFBYTt3QkFDbkIsY0FBYyxFQUFFLElBQUk7cUJBQ3JCO2lCQUNGO2dCQUNELFdBQVcsRUFBRSxDQUFDO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsY0FBYztnQkFDcEIsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7YUFDZjtTQUNGLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==