2023-10-09 16:13:38 +00:00

53 lines
1.4 KiB
Rust

// 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.
struct Rectangle {
width: i32,
height: i32
}
impl Rectangle {
// Only change the test functions themselves
pub fn new(width: i32, height: i32) -> Result<Self, &'static str> {
if width <= 0 || height <= 0 {
return Err("Rectangle width and height cannot be negative!")
}
Ok(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!(rect.is_ok(), true);
let rect = rect.unwrap();
assert_eq!(rect.width, 10); // check width
assert_eq!(rect.height, 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);
assert_eq!(rect.is_ok(), false);
}
#[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);
assert_eq!(rect.is_ok(), false);
}
}