From 3a2d6cc1ef740caa61146f78d23dc94569d0e11c Mon Sep 17 00:00:00 2001 From: ZapAnton Date: Mon, 19 Nov 2018 11:38:05 +0300 Subject: [PATCH 1/2] leap: Updated exercise to 1.4.0 version Relevent PRs: - https://github.com/exercism/problem-specifications/pull/955 - https://github.com/exercism/problem-specifications/pull/971 - https://github.com/exercism/problem-specifications/pull/1112 - https://github.com/exercism/problem-specifications/pull/1359 --- exercises/leap/Cargo.toml | 2 +- exercises/leap/tests/leap.rs | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) 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/tests/leap.rs b/exercises/leap/tests/leap.rs index 422951686..91ebd6374 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: i32, 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] From 17a62ce872460213d784b671f95abe71fe9aace1 Mon Sep 17 00:00:00 2001 From: ZapAnton Date: Mon, 19 Nov 2018 11:39:09 +0300 Subject: [PATCH 2/2] leap: Replaced the i32 type of the input year with u64 --- exercises/leap/example.rs | 2 +- exercises/leap/src/lib.rs | 2 +- exercises/leap/tests/leap.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 91ebd6374..097dd96e5 100644 --- a/exercises/leap/tests/leap.rs +++ b/exercises/leap/tests/leap.rs @@ -1,6 +1,6 @@ extern crate leap; -fn process_leapyear_case(year: i32, expected: bool) { +fn process_leapyear_case(year: u64, expected: bool) { assert_eq!(leap::is_leap_year(year), expected); }