Skip to content

Instantly share code, notes, and snippets.

@mre
Created April 6, 2016 20:16
Show Gist options
  • Select an option

  • Save mre/273aed95fb7a7e5f3256e6eee8e56bf2 to your computer and use it in GitHub Desktop.

Select an option

Save mre/273aed95fb7a7e5f3256e6eee8e56bf2 to your computer and use it in GitHub Desktop.
fn main() {
println!("Hello, world!");
}
fn make_guess(g: Game, c: char) -> Game {
let mut new_game = g;
new_game.guesses.push(c);
if !new_game.word.contains(c) {
new_game.tries_left -= 1;
}
new_game
}
#[derive(Debug, PartialEq, Eq)]
struct Game {
word: String,
guesses: Vec<char>,
tries_left: u16,
}
impl Game {
fn new(s: String, v: Vec<char>, t: u16) -> Game {
Game{word: s, guesses: v, tries_left: t}
}
}
#[test]
fn make_a_correct_guess() {
let game = Game::new("hangman".to_string(), vec!['a'], 3);
let new_game = make_guess(game, 'g');
let expected_game = Game::new("hangman".to_string(), vec!['a', 'g'], 3);
assert_eq!(new_game, expected_game);
}
#[test]
fn make_a_false_guess() {
let game = Game::new("hangman".to_string(), vec!['a'], 3);
let new_game = make_guess(game, 'x');
let expected_game = Game::new("hangman".to_string(), vec!['a', 'x'], 2);
assert_eq!(new_game, expected_game);
}
#[test]
fn make_an_emoji_guess() {
let game = Game::new("hangman".to_string(), vec!['a'], 3);
let new_game = make_guess(game, '๐Ÿ˜ƒ');
let expected_game = Game::new("hangman".to_string(), vec!['a', '๐Ÿ˜ƒ'], 2);
assert_eq!(new_game, expected_game);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment