leapc
Loading...
Searching...
No Matches
leap_off_test.c
1#include "leap.h"
2
3#include <assert.h>
4#include <stdlib.h>
5
6int leap_off_test(int argc, char **argv) {
7 assert(equal_leap_off((struct leap_off){0, 365}, leap_off(1, -1)));
8 assert(equal_leap_off((struct leap_off){1, 0}, leap_off(1, 0)));
9
10 /*
11 * Negative day offset that normalises to previous year.
12 * Year 5 offset -1 day normalises to year 4 day 365 (leap year).
13 */
14 assert(equal_leap_off((struct leap_off){4, 365}, leap_off(5, -1)));
15
16 assert(equal_leap_off((struct leap_off){5, 0}, leap_off(4, 366)));
17 assert(equal_leap_off((struct leap_off){2024, 365}, leap_off(2024, 365)));
18 assert(equal_leap_off((struct leap_off){2025, 0}, leap_off(2024, 366)));
19 assert(equal_leap_off((struct leap_off){1902, 270}, leap_off(1900, 1000)));
20 assert(equal_leap_off((struct leap_off){1900, 0}, leap_off(0, LEAP_MCM)));
21 assert(equal_leap_off((struct leap_off){1970, 0}, leap_off(0, leap_day(1970))));
22 assert(equal_leap_off((struct leap_off){10, 0}, leap_off(1970, -leap_day(1960))));
23 return EXIT_SUCCESS;
24}
Leap year function prototypes.
static bool equal_leap_off(struct leap_off lhs, struct leap_off rhs)
Compares two leap_off structures for equality.
Definition leap.h:105
struct leap_off leap_off(int year, int day_off)
Offsets year and day of year.
Definition leap.c:70
#define LEAP_MCM
Leap offset at 1900.
Definition leap.h:19
int leap_day(int year)
Counts leap-adjusted days up to some year.
Definition leap.c:48
Leap offset by year and day.
Definition leap.h:77