diff options
Diffstat (limited to 'exercises/17_tests')
| -rw-r--r-- | exercises/17_tests/README.md | 7 | ||||
| -rw-r--r-- | exercises/17_tests/tests1.rs | 21 | ||||
| -rw-r--r-- | exercises/17_tests/tests2.rs | 17 | ||||
| -rw-r--r-- | exercises/17_tests/tests3.rs | 29 | ||||
| -rw-r--r-- | exercises/17_tests/tests4.rs | 48 |
5 files changed, 122 insertions, 0 deletions
diff --git a/exercises/17_tests/README.md b/exercises/17_tests/README.md new file mode 100644 index 0000000..27c6818 --- /dev/null +++ b/exercises/17_tests/README.md @@ -0,0 +1,7 @@ +# Tests + +Going out of order from the book to cover tests -- many of the following exercises will ask you to make tests pass! + +## Further information + +- [Writing Tests](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) diff --git a/exercises/17_tests/tests1.rs b/exercises/17_tests/tests1.rs new file mode 100644 index 0000000..810277a --- /dev/null +++ b/exercises/17_tests/tests1.rs @@ -0,0 +1,21 @@ +// tests1.rs +// +// Tests are important to ensure that your code does what you think it should +// do. Tests can be run on this file with the following command: rustlings run +// tests1 +// +// This test has a problem with it -- make the test compile! Make the test pass! +// Make the test fail! +// +// Execute `rustlings hint tests1` or use the `hint` watch subcommand for a +// hint. + +// I AM NOT DONE + +#[cfg(test)] +mod tests { + #[test] + fn you_can_assert() { + assert!(); + } +} diff --git a/exercises/17_tests/tests2.rs b/exercises/17_tests/tests2.rs new file mode 100644 index 0000000..f8024e9 --- /dev/null +++ b/exercises/17_tests/tests2.rs @@ -0,0 +1,17 @@ +// tests2.rs +// +// This test has a problem with it -- make the test compile! Make the test pass! +// Make the test fail! +// +// Execute `rustlings hint tests2` or use the `hint` watch subcommand for a +// hint. + +// I AM NOT DONE + +#[cfg(test)] +mod tests { + #[test] + fn you_can_assert_eq() { + assert_eq!(); + } +} diff --git a/exercises/17_tests/tests3.rs b/exercises/17_tests/tests3.rs new file mode 100644 index 0000000..4013e38 --- /dev/null +++ b/exercises/17_tests/tests3.rs @@ -0,0 +1,29 @@ +// tests3.rs +// +// This test isn't testing our function -- make it do that in such a way that +// the test passes. Then write a second test that tests whether we get the +// result we expect to get when we call `is_even(5)`. +// +// Execute `rustlings hint tests3` or use the `hint` watch subcommand for a +// hint. + +// I AM NOT DONE + +pub fn is_even(num: i32) -> bool { + num % 2 == 0 +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn is_true_when_even() { + assert!(); + } + + #[test] + fn is_false_when_odd() { + assert!(); + } +} diff --git a/exercises/17_tests/tests4.rs b/exercises/17_tests/tests4.rs new file mode 100644 index 0000000..935d0db --- /dev/null +++ b/exercises/17_tests/tests4.rs @@ -0,0 +1,48 @@ +// tests4.rs +// +// 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 + +struct Rectangle { + width: i32, + height: i32 +} + +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!") + } + Rectangle {width, height} + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn correct_width_and_height() { + // 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 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 program panics when we try to create rectangle with negative height + let _rect = Rectangle::new(10, -10); + } +} |
