diff options
Diffstat (limited to 'exercises/08_enums/enums3.rs')
| -rw-r--r-- | exercises/08_enums/enums3.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/exercises/08_enums/enums3.rs b/exercises/08_enums/enums3.rs index 7dd2171..2d0d82d 100644 --- a/exercises/08_enums/enums3.rs +++ b/exercises/08_enums/enums3.rs @@ -9,6 +9,8 @@ struct Point { struct State { color: (u8, u8, u8), + width: u8, + height: u8, position: Point, quit: bool, message: String, @@ -27,6 +29,11 @@ impl State { self.message = s; } + fn resize(&mut self, width: u8, height: u8) { + self.width = width; + self.height = height; + } + fn move_position(&mut self, point: Point) { self.position = point; } @@ -50,6 +57,8 @@ mod tests { fn test_match_message_call() { let mut state = State { quit: false, + width: 0, + height: 0, position: Point { x: 0, y: 0 }, color: (0, 0, 0), message: String::from("hello world"), @@ -57,10 +66,13 @@ mod tests { state.process(Message::ChangeColor(255, 0, 255)); state.process(Message::Echo(String::from("Hello world!"))); + state.process(Message::Resize { w: 10, h: 30 }); state.process(Message::Move(Point { x: 10, y: 15 })); state.process(Message::Quit); assert_eq!(state.color, (255, 0, 255)); + assert_eq!(state.width, 10); + assert_eq!(state.height, 30); assert_eq!(state.position.x, 10); assert_eq!(state.position.y, 15); assert!(state.quit); |
