From 27b75795666cddd3725c323cbc0b68b206fc150e Mon Sep 17 00:00:00 2001
From: poneciak <poneciak@gmail.com>
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 0000000..2d8dd13
--- /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 ef89143..ad06b88 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 <poneciak@gmail.com>
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 2d8dd13..727dbd7 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 ad06b88..fe79bde 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 <poneciak@gmail.com>
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 727dbd7..1f34a2b 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);
     }
 }