diff --git a/exercises/leap/Cargo.toml b/exercises/leap/Cargo.toml index 7d5ff2574..d96dc5de6 100644 --- a/exercises/leap/Cargo.toml +++ b/exercises/leap/Cargo.toml @@ -1,3 +1,3 @@ [package] name = "leap" -version = "1.0.0" +version = "1.4.0" diff --git a/exercises/leap/example.rs b/exercises/leap/example.rs index a42abdaaf..8549b184b 100644 --- a/exercises/leap/example.rs +++ b/exercises/leap/example.rs @@ -1,4 +1,4 @@ -pub fn is_leap_year(year: i32) -> bool { +pub fn is_leap_year(year: u64) -> bool { let has_factor = |n| year % n == 0; has_factor(4) && (!has_factor(100) || has_factor(400)) } diff --git a/exercises/leap/src/lib.rs b/exercises/leap/src/lib.rs index 2a5b47212..fb1ecbc70 100644 --- a/exercises/leap/src/lib.rs +++ b/exercises/leap/src/lib.rs @@ -1,3 +1,3 @@ -pub fn is_leap_year(year: i32) -> bool { +pub fn is_leap_year(year: u64) -> bool { unimplemented!("true if {} is a leap year", year) } diff --git a/exercises/leap/tests/leap.rs b/exercises/leap/tests/leap.rs index 422951686..097dd96e5 100644 --- a/exercises/leap/tests/leap.rs +++ b/exercises/leap/tests/leap.rs @@ -1,8 +1,36 @@ extern crate leap; +fn process_leapyear_case(year: u64, expected: bool) { + assert_eq!(leap::is_leap_year(year), expected); +} + +#[test] +fn test_year_divisible_by_4_not_divisible_by_100_leap_year() { + process_leapyear_case(1996, true); +} + +#[test] +#[ignore] +fn test_year_not_divisible_by_4_common_year() { + process_leapyear_case(2015, false); +} + #[test] -fn test_vanilla_leap_year() { - assert_eq!(leap::is_leap_year(1996), true); +#[ignore] +fn test_year_divisible_by_200_not_divisible_by_400_common_year() { + process_leapyear_case(1800, false); +} + +#[test] +#[ignore] +fn test_year_divisible_by_100_not_divisible_by_400_common_year() { + process_leapyear_case(2100, false); +} + +#[test] +#[ignore] +fn test_year_divisible_by_400_leap_year() { + process_leapyear_case(2000, true); } #[test]