diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index df4a96a..4bde427 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -2,11 +2,30 @@ import com.hangman.Player; +import java.util.ArrayList; import java.util.List; public class YourPlayer implements Player { + private List guesses; + + public YourPlayer() { + guesses = new ArrayList<>(); + } + @Override public char getGuess(List currentClue) { - return 'a'; + if(!currentClue.contains(('e'))) + return 'e'; + if(!currentClue.contains(('a'))) + return 'a'; + if(!currentClue.contains('i')) + return 'i'; + + if(!guesses.contains('b')) { + guesses.add('b'); + return 'b'; + } + + return 'c'; } } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index b1e80e5..f77f41f 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -1,34 +1,72 @@ package com.hangman.players; import org.junit.Test; +import org.junit.Before; + +import java.util.ArrayList; import java.util.Arrays; -import static org.junit.Assert.assertEquals; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.*; public class YourPlayerTest { - @Test - public void guessesAWhenThereAreNoSuccessfulCharactersGuessedYet() { - YourPlayer player = new YourPlayer(); + public static final List ALL_CHARACTERS = Collections.unmodifiableList(Arrays.asList( + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', + 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', + 'u', 'v', 'w', 'x', 'y', 'z' + )); - char guess = player.getGuess(Arrays.asList(null, null, null)); + private YourPlayer player; - assertEquals('a', guess); + @Before + public void setUp() { + player = new YourPlayer(); } @Test - public void guessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { - YourPlayer player = new YourPlayer(); + public void guessesEWhenThereAreNoSuccessfulCharactersGuessedYet() { + char guess = player.getGuess(Arrays.asList(null, null, null)); + assertEquals('e', guess); + } + + @Test + public void guessesEWhenThereAreSuccessfulCharactersGuessedThatAreNotE() { char guess = player.getGuess(Arrays.asList('m', null, 'n')); + assertEquals('e', guess); + } + + @Test + public void guessesAWhenEIsInTheClue() { + char guess = player.getGuess(Arrays.asList(null, 'e', null)); + assertEquals('a', guess); } @Test - public void guessesAWhenAIsThereAreAsInTheClueAsWell() { - YourPlayer player = new YourPlayer(); + public void guessesIWhenEAndAAreInTheClue() { + char guess = player.getGuess(Arrays.asList('e', 'a', null)); + + assertEquals('i', guess); + } - char guess = player.getGuess(Arrays.asList(null, 'a', null)); + @Test + public void guessesARandomCharacterWhenTheClueContainsEAI() { + List chars = new ArrayList<>(ALL_CHARACTERS); + chars.removeAll(Arrays.asList('a', 'e', 'i')); + char guess = player.getGuess(Arrays.asList('e', 'a', 'i', null)); - assertEquals('a', guess); + assertTrue(chars.contains(guess)); } + + @Test + public void doesNotGuessTheSameRandomCharacterTwice() { + char guess1 = player.getGuess(Arrays.asList('e', 'a', 'i', null)); + char guess2 = player.getGuess(Arrays.asList('e', 'a', 'i', null)); + + assertNotEquals(guess1, guess2); + } + }