diff options
author | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
---|---|---|
committer | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
commit | 67cdcc2e12118becb823e20a40cc2687f2b8425a (patch) | |
tree | ed92c3234b89079e6d4cf36f5e80c5ffa79def48 /rust-book/adder/src | |
parent | e25482fca375d318a39c3b54db396b0db6e0b263 (diff) | |
download | learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip |
Started Rust in Action MEAP.
Diffstat (limited to 'rust-book/adder/src')
-rwxr-xr-x | rust-book/adder/src/lib.rs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/rust-book/adder/src/lib.rs b/rust-book/adder/src/lib.rs new file mode 100755 index 0000000..bc79931 --- /dev/null +++ b/rust-book/adder/src/lib.rs @@ -0,0 +1,92 @@ +#[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) +} |