1mod cacher;
6pub mod adder;
7mod guess;
8mod front_of_house;
9
10pub use crate::front_of_house::hosting;
11
12pub fn eat_at_restaurant() {
13 hosting::add_to_waitlist();
14 hosting::add_to_waitlist();
15 hosting::add_to_waitlist();
16}
17
18#[derive(Debug)]
19struct Rectangle {
20 width: u32,
21 height: u32,
22}
23
24impl Rectangle {
25 fn can_hold(&self, other: &Rectangle) -> bool {
26 self.width > other.width && self.height > other.height
27 }
28}
29
30pub fn add_two(a: i32) -> i32 {
31 a + 2
32}
33
34pub fn greeting(name: &str) -> String {
35 format!("Hello {}!", name)
36}
37
38fn prints_and_returns_10(a: i32) -> i32 {
39 println!("I got the value {}", a);
40 10
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46
47 #[test]
48 fn larger_can_hold_smaller() {
49 let larger = Rectangle { width: 8, height: 7 };
50 let smaller = Rectangle { width: 5, height: 1 };
51
52 assert!(larger.can_hold(&smaller));
53 }
54
55 #[test]
56 fn smaller_cannot_hold_larger() {
57 let larger = Rectangle { width: 8, height: 7 };
58 let smaller = Rectangle { width: 5, height: 1 };
59
60 assert!(!smaller.can_hold(&larger));
61 }
62
63 #[test]
64 fn it_adds_two() {
65 assert_eq!(4, add_two(2));
66 }
67
68 #[test]
69 fn greeting_contains_name() {
70 let result = greeting("Carol");
71 assert!(result.contains("Carol"));
72 }
73
74 #[test]
75 fn greeting_contains_name_with_msg() {
76 let result = greeting("Carol");
77 assert!(
79 result.contains("Carol"),
80 "Greeting did not contain name, value was `{}`", result
81 );
82 }
83
84 #[test]
86 fn it_works() -> Result<(), String> {
87 if 2 + 2 == 4 {
88 Ok(())
89 } else {
90 Err(String::from("two plus two does not equal four"))
91 }
92 }
93
94 #[test]
97 fn this_test_will_pass() {
98 let value = prints_and_returns_10(4);
99 assert_eq!(10, value);
100 }
101
102 #[test]
104 fn this_test_will_fail() {
105 let value = prints_and_returns_10(8);
106 assert_eq!(5, value);
107 }
108
109 #[test]
110 #[ignore]
111 fn expensive_test() {
112 }
114
115}