aboutsummaryrefslogtreecommitdiff
path: root/leap/tests
diff options
context:
space:
mode:
Diffstat (limited to 'leap/tests')
-rw-r--r--leap/tests/leap.rs89
1 files changed, 89 insertions, 0 deletions
diff --git a/leap/tests/leap.rs b/leap/tests/leap.rs
new file mode 100644
index 0000000..88d2c77
--- /dev/null
+++ b/leap/tests/leap.rs
@@ -0,0 +1,89 @@
1use leap;
2
3fn process_leapyear_case(year: u64, expected: bool) {
4 assert_eq!(leap::is_leap_year(year), expected);
5}
6
7#[test]
8fn test_year_not_divisible_by_4_common_year() {
9 process_leapyear_case(2015, false);
10}
11
12#[test]
13fn test_year_divisible_by_2_not_divisible_by_4_in_common_year() {
14 process_leapyear_case(1970, false);
15}
16
17#[test]
18fn test_year_divisible_by_4_not_divisible_by_100_leap_year() {
19 process_leapyear_case(1996, true);
20}
21
22#[test]
23fn test_year_divisible_by_4_and_5_is_still_a_leap_year() {
24 process_leapyear_case(1960, true);
25}
26
27#[test]
28fn test_year_divisible_by_100_not_divisible_by_400_common_year() {
29 process_leapyear_case(2100, false);
30}
31
32#[test]
33fn test_year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year() {
34 process_leapyear_case(1900, false);
35}
36
37#[test]
38fn test_year_divisible_by_400_leap_year() {
39 process_leapyear_case(2000, true);
40}
41
42#[test]
43fn test_year_divisible_by_400_but_not_by_125_is_still_a_leap_year() {
44 process_leapyear_case(2400, true);
45}
46
47#[test]
48fn test_year_divisible_by_200_not_divisible_by_400_common_year() {
49 process_leapyear_case(1800, false);
50}
51
52#[test]
53fn test_any_old_year() {
54 assert_eq!(leap::is_leap_year(1997), false);
55}
56
57#[test]
58fn test_early_years() {
59 assert_eq!(leap::is_leap_year(1), false);
60 assert_eq!(leap::is_leap_year(4), true);
61 assert_eq!(leap::is_leap_year(100), false);
62 assert_eq!(leap::is_leap_year(400), true);
63 assert_eq!(leap::is_leap_year(900), false);
64}
65
66#[test]
67fn test_century() {
68 assert_eq!(leap::is_leap_year(1700), false);
69 assert_eq!(leap::is_leap_year(1800), false);
70 assert_eq!(leap::is_leap_year(1900), false);
71}
72
73#[test]
74fn test_exceptional_centuries() {
75 assert_eq!(leap::is_leap_year(1600), true);
76 assert_eq!(leap::is_leap_year(2000), true);
77 assert_eq!(leap::is_leap_year(2400), true);
78}
79
80#[test]
81fn test_years_1600_to_1699() {
82 let incorrect_years = (1600..1700)
83 .filter(|&year| leap::is_leap_year(year) != (year % 4 == 0))
84 .collect::<Vec<_>>();
85
86 if !incorrect_years.is_empty() {
87 panic!("incorrect result for years: {:?}", incorrect_years);
88 }
89}