From 27b75795666cddd3725c323cbc0b68b206fc150e Mon Sep 17 00:00:00 2001 From: poneciak Date: Wed, 5 Apr 2023 08:18:51 +0200 Subject: [PATCH 1/3] created task --- exercises/tests/tests4.rs | 40 +++++++++++++++++++++++++++++++++++++++ info.toml | 10 ++++++++++ 2 files changed, 50 insertions(+) create mode 100644 exercises/tests/tests4.rs diff --git a/exercises/tests/tests4.rs b/exercises/tests/tests4.rs new file mode 100644 index 00000000..2d8dd130 --- /dev/null +++ b/exercises/tests/tests4.rs @@ -0,0 +1,40 @@ +// tests4.rs +// Correct the tests to +// Do not change Rectangle::new body +// Execute `rustlings hint tests4` or use the `hint` watch subcommand for a hint. + +// I AM NOT DONE + +struct Rectangle { + width: i32, + height: i32 +} + +impl Rectangle { + pub fn new(width: i32, height: i32) -> Self { + if width < 0 || height < 0 { + panic!("Rectangle width and height cannot be negative!") + } + Rectangle {width, height} + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn correct_width_and_height() { + let _rect = Rectangle::new(10, 10); + } + + #[test] + fn negative_width() { + let _rect = Rectangle::new(-10, 10); + } + + #[test] + fn negative_height() { + let _rect = Rectangle::new(10, -10); + } +} diff --git a/info.toml b/info.toml index ef891435..ad06b888 100644 --- a/info.toml +++ b/info.toml @@ -807,6 +807,16 @@ You can call a function right where you're passing arguments to `assert!` -- so something like `assert!(having_fun())`. If you want to check that you indeed get false, you can negate the result of what you're doing using `!`, like `assert!(!having_fun())`.""" +[[exercises]] +name = "tests4" +path = "exercises/tests/tests4.rs" +mode = "test" +hint = """ +We expect method `Rectangle::new()` to panic for negative values. +To handle that you need to add special attribute to test function. +You can refer to the docs: https://doc.rust-lang.org/stable/book/ch11-01-writing-tests.html""" + + # STANDARD LIBRARY TYPES [[exercises]] From c4974ac7820784899592a26b4227683bca96bd2b Mon Sep 17 00:00:00 2001 From: poneciak Date: Wed, 5 Apr 2023 13:09:13 +0200 Subject: [PATCH 2/3] added required changes - fixed grammar in hint and added more specific link - added comments in test functions - changed introduction paragraph --- exercises/tests/tests4.rs | 11 ++++++++--- info.toml | 5 +++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/exercises/tests/tests4.rs b/exercises/tests/tests4.rs index 2d8dd130..727dbd7e 100644 --- a/exercises/tests/tests4.rs +++ b/exercises/tests/tests4.rs @@ -1,6 +1,5 @@ // tests4.rs -// Correct the tests to -// Do not change Rectangle::new body +// Make sure that we're testing for the correct conditions! // Execute `rustlings hint tests4` or use the `hint` watch subcommand for a hint. // I AM NOT DONE @@ -11,6 +10,7 @@ struct Rectangle { } impl Rectangle { + // Only change the test functions themselves pub fn new(width: i32, height: i32) -> Self { if width < 0 || height < 0 { panic!("Rectangle width and height cannot be negative!") @@ -25,16 +25,21 @@ mod tests { #[test] fn correct_width_and_height() { - let _rect = Rectangle::new(10, 10); + // This test should check if the rectangle is the size that we pass into its constructor + let rect = Rectangle::new(10, 20); + assert_eq!(???, 10); // check width + assert_eq!(???, 20); // check height } #[test] fn negative_width() { + // This test should check if thread panics when we try to create rectangle with negative width let _rect = Rectangle::new(-10, 10); } #[test] fn negative_height() { + // This test should check if thread panics when we try to create rectangle with negative height let _rect = Rectangle::new(10, -10); } } diff --git a/info.toml b/info.toml index ad06b888..fe79bdee 100644 --- a/info.toml +++ b/info.toml @@ -813,8 +813,9 @@ path = "exercises/tests/tests4.rs" mode = "test" hint = """ We expect method `Rectangle::new()` to panic for negative values. -To handle that you need to add special attribute to test function. -You can refer to the docs: https://doc.rust-lang.org/stable/book/ch11-01-writing-tests.html""" +To handle that you need to add a special attribute to the test function. +You can refer to the docs: +https://doc.rust-lang.org/stable/book/ch11-01-writing-tests.html#checking-for-panics-with-should_panic""" # STANDARD LIBRARY TYPES From 102d7f3d0ec8d9e6b0f4380c9ec199c47cf127f1 Mon Sep 17 00:00:00 2001 From: poneciak Date: Wed, 5 Apr 2023 13:24:14 +0200 Subject: [PATCH 3/3] changed comments in tests also fixed small logical issue in `Rectangle::new()` where u could create rectangle with width or height equals 0 --- exercises/tests/tests4.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/exercises/tests/tests4.rs b/exercises/tests/tests4.rs index 727dbd7e..1f34a2b2 100644 --- a/exercises/tests/tests4.rs +++ b/exercises/tests/tests4.rs @@ -12,7 +12,7 @@ struct Rectangle { impl Rectangle { // Only change the test functions themselves pub fn new(width: i32, height: i32) -> Self { - if width < 0 || height < 0 { + if width <= 0 || height <= 0 { panic!("Rectangle width and height cannot be negative!") } Rectangle {width, height} @@ -33,13 +33,13 @@ mod tests { #[test] fn negative_width() { - // This test should check if thread panics when we try to create rectangle with negative width + // This test should check if program panics when we try to create rectangle with negative width let _rect = Rectangle::new(-10, 10); } #[test] fn negative_height() { - // This test should check if thread panics when we try to create rectangle with negative height + // This test should check if program panics when we try to create rectangle with negative height let _rect = Rectangle::new(10, -10); } }