✅ test joke ending
							parent
							
								
									6630002a34
								
							
						
					
					
						commit
						d40e6a83f7
					
				
							
								
								
									
										27
									
								
								src/main.rs
								
								
								
								
							
							
						
						
									
										27
									
								
								src/main.rs
								
								
								
								
							|  | @ -185,6 +185,7 @@ struct StateRoom1 { | ||||||
| 	detected_note: bool, | 	detected_note: bool, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #[derive (PartialEq)] | ||||||
| enum Response { | enum Response { | ||||||
| 	Print (String), | 	Print (String), | ||||||
| 	PrintMany (Vec <&'static str>), | 	PrintMany (Vec <&'static str>), | ||||||
|  | @ -199,12 +200,12 @@ struct State { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl State { | impl State { | ||||||
| 	fn room_1 (&mut self, input: String) -> Result <Vec <Response>> { | 	fn room_1 (&mut self, input: &str) -> Vec <Response> { | ||||||
| 		use Response::*; | 		use Response::*; | ||||||
| 		
 | 		
 | ||||||
| 		let action = parse_input (&input); | 		let action = parse_input (input); | ||||||
| 		
 | 		
 | ||||||
| 		Ok (match action { | 		match action { | ||||||
| 			PlayerAction::Quit => { | 			PlayerAction::Quit => { | ||||||
| 				vec! [ | 				vec! [ | ||||||
| 					line_response ("Bye."), | 					line_response ("Bye."), | ||||||
|  | @ -240,16 +241,16 @@ impl State { | ||||||
| 					}, | 					}, | ||||||
| 					ItemName::Keypad => { | 					ItemName::Keypad => { | ||||||
| 						if ! self.room_1.detected_keypad { | 						if ! self.room_1.detected_keypad { | ||||||
| 							return Ok (just (undetected_item ())); | 							return just (undetected_item ()); | ||||||
| 						} | 						} | ||||||
| 						
 | 						
 | ||||||
| 						just (line_response ("The DOOR is locked by an electronic KEYPAD. A soft amber power light indicates that the KEYPAD is likely functional. The KEYPAD buttons are the digits 0-9, Enter, and Clear. Experience tells you that the key code is likely 4 or 5 digits long.")) | 						just (line_response ("The DOOR is locked by an electronic KEYPAD. A soft amber power light indicates that the KEYPAD is likely functional. The KEYPAD buttons are the digits 0-9, Enter, and Clear. Experience tells you that the key code is likely 4 or 5 digits long.")) | ||||||
| 					}, | 					}, | ||||||
| 					ItemName::Note => { | 					ItemName::Note => { | ||||||
| 						if ! self.room_1.detected_note { | 						if ! self.room_1.detected_note { | ||||||
| 							return Ok (vec! [ | 							return vec! [ | ||||||
| 								undetected_item (), | 								undetected_item (), | ||||||
| 							]); | 							]; | ||||||
| 						} | 						} | ||||||
| 						
 | 						
 | ||||||
| 						just (Response::PrintMany (vec! [ | 						just (Response::PrintMany (vec! [ | ||||||
|  | @ -314,7 +315,7 @@ impl State { | ||||||
| 					}, | 					}, | ||||||
| 				} | 				} | ||||||
| 			}, | 			}, | ||||||
| 		}) | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -343,7 +344,7 @@ fn game () -> Result <()> { | ||||||
| 	
 | 	
 | ||||||
| 	'main_loop: loop { | 	'main_loop: loop { | ||||||
| 		let input = read_input ()?; | 		let input = read_input ()?; | ||||||
| 		let responses = state.room_1 (input)?; | 		let responses = state.room_1 (&input); | ||||||
| 		
 | 		
 | ||||||
| 		for response in responses.into_iter () { | 		for response in responses.into_iter () { | ||||||
| 			match response { | 			match response { | ||||||
|  | @ -395,6 +396,16 @@ mod test { | ||||||
| 	
 | 	
 | ||||||
| 	#[test] | 	#[test] | ||||||
| 	fn joke_ending () { | 	fn joke_ending () { | ||||||
|  | 		use super::{ | ||||||
|  | 			Response, | ||||||
|  | 			State, | ||||||
|  | 		}; | ||||||
| 		
 | 		
 | ||||||
|  | 		let mut state = State::default (); | ||||||
|  | 		
 | ||||||
|  | 		let responses = state.room_1 ("use emergency exit"); | ||||||
|  | 		
 | ||||||
|  | 		assert! (responses.contains (&Response::Quit)); | ||||||
|  | 		assert! (responses.contains (&Response::JokeEnding)); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 _
						_