#[cfg(test)] mod tests { use super::*; #[test] fn it_works() -> Result<(), String> { if 2 + 2 == 4 { Ok(()) } else { Err(String::from("two plus two does not equal four")) } } #[test] fn larger_can_hold_smaller() { let larger = Rectangle { length: 8, width: 7 }; let smaller = Rectangle { length: 5, width: 1 }; assert!(larger.can_hold(&smaller)); } #[test] fn smaller_cannot_hold_larger() { let larger = Rectangle { length: 8, width: 7 }; let smaller = Rectangle { length: 5, width: 1 }; assert!(!smaller.can_hold(&larger)); } #[test] fn it_adds_two() { assert_eq!(4, add_two(2)); } #[test] fn it_wont_add_two() { assert_ne!(4, add_two(3)); } #[test] fn greeting_contains_name() { let result = greeting("adam"); assert!(result.contains("adam")); } #[test] #[should_panic(expected = "must be between 1 and 100")] fn greater_than_100() { Guess::new(200); } } #[derive(Debug)] pub struct Rectangle { length: u32, width: u32, } pub struct Guess { value: i32, } impl Guess { pub fn new(value: i32) -> Guess { if value < 1 || value > 100 { panic!("must be between 1 and 100, not {}", value); } //if value < 1 { // panic!("must be greater than 1, not {}", value); //} //else if value > 100 { // panic!("must be less than 100, not {}", value); //} Guess { value } } } impl Rectangle { pub fn can_hold(&self, other: &Rectangle) -> bool { self.length > other.length && self.width > other.width } } pub fn add_two(a: i32) -> i32 { a + 2 } pub fn greeting(name: &str) -> String { format!("hello {}", name) }