fn main() { Guess::new(200); let rect1 = Rectangle { width: 10, height: 10}; let rect2 = Rectangle { width: 11, height: 13}; println!("{}, {}", rect1.width, rect1.height); rect1.can_hold(&rect2); let guess = Guess::new(200); println!("{}", guess.value); } #[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle { fn can_hold(&self, other: &Rectangle) -> bool { self.width < other.width && self.height > other.height } } pub fn add_two(a: i32) -> i32 { a + 3 } pub fn greeting(name: &str) -> String { format!("Hello {}!", name) // String::from("Hello") } pub struct Guess { value: i32, } impl Guess { pub fn new(value: i32) -> Guess { // if value < 1 || value > 100 { // panic!("Guess value must be between 1 and 100, got {}.", value); // } if value < 1 { panic!( "Guess value must be less than or equal to 100, got {}.", value ); } else if value > 100 { panic!( "Guess value must be greater than or equal to 1, got {}.", value ); } Guess { value } } } #[cfg(test)] mod tests { use super::*; #[test] #[ignore = "unuse"] fn exploration() { assert_eq!(2 + 2, 4); } #[test] #[ignore = "unuse"] fn another() { panic!("Make this test fail"); } #[test] #[ignore = "unuse"] fn larger_can_hold_smaller() { let (larger, smaller) = create_rectangle(); assert!(larger.can_hold(&smaller)); } #[test] #[ignore = "unuse"] fn smaller_cannot_hold_larger() { let (larger, smaller) = create_rectangle(); assert!(!smaller.can_hold(&larger)); } fn create_rectangle() -> (Rectangle, Rectangle) { let larger = Rectangle { width: 8, height: 7, }; let smaller = Rectangle { width: 5, height: 1, }; (larger, smaller) } #[test] #[ignore = "unuse"] fn it_adds_two() { assert_eq!(4, add_two(2)); } #[test] #[ignore = "unuse"] fn greeting_contains_name() { let result = greeting("Carol"); assert!( result.contains("Carol"), "Greeting did not contain name, value was `{}`", result ); } #[test] #[ignore = "reason"] #[should_panic(expect = "less than or equal to 100")] fn greater_than_100() { Guess::new(-100); } #[test] fn it_works() -> Result<(), String> { if 2 + 2 == 4 { Ok(()) } else { Err(String::from("two plus two does not equal four")) } } }