diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Answer.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Answer.java index f4a25f333bd80f134686402aecc4488e44be1195..370117a703d81dad269fe6585be7cbaf93ae8e0d 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Answer.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Answer.java @@ -1,35 +1,34 @@ package com.adaptionsoft.games.uglytrivia; - public class Answer { - private final Notifications notifications; - private final AnswerRandomSimulator answerRandom; - - public Answer(Notifications notifications, AnswerRandomSimulator answerRandom) { - this.notifications = notifications; - this.answerRandom = answerRandom; - } + private final Notifications notifications; + private final AnswerRandomSimulator answerRandom; - public Player answer(Player player) { - if (!answerRandom.isRight()) { - return wrongAnswer(player); - } + public Answer(Notifications notifications, AnswerRandomSimulator answerRandom) { + this.notifications = notifications; + this.answerRandom = answerRandom; + } - return goodAnswer(player); + public Player answer(Player player) { + if (!answerRandom.isRight()) { + return wrongAnswer(player); } - private Player goodAnswer(Player player) { - if (!player.isInPenaltyBox()) { - notifications.correctAnswer(); - player = player.addCoin(); - notifications.actualGoldCoins(player.getName(), player.getPurse()); - } - return player; - } + return goodAnswer(player); + } - private Player wrongAnswer(Player player) { - notifications.incorrectlyAnswered(); - notifications.sendInPenaltyBox(player.getName()); - return player.inPenaltyBox(); + private Player goodAnswer(Player player) { + if (!player.isInPenaltyBox()) { + notifications.correctAnswer(); + player = player.addCoin(); + notifications.actualGoldCoins(player.getName(), player.getPurse()); } + return player; + } + + private Player wrongAnswer(Player player) { + notifications.incorrectlyAnswered(); + notifications.sendInPenaltyBox(player.getName()); + return player.inPenaltyBox(); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulator.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulator.java index c6786613d80ab0599cbceaed061113a6e0e9eaaf..983c1f2deb18abb41a13bbc06e159a4209544f10 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulator.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulator.java @@ -3,13 +3,13 @@ package com.adaptionsoft.games.uglytrivia; import java.util.Random; class AnswerRandomSimulator { - private final Random rand; + private final Random rand; - AnswerRandomSimulator(Random rand) { - this.rand = rand; - } + AnswerRandomSimulator(Random rand) { + this.rand = rand; + } - boolean isRight() { - return !(rand.nextInt(9) == 7); - } + boolean isRight() { + return !(rand.nextInt(9) == 7); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Board.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Board.java index 8187277f9b74fcf327b8ac7f904793124b0b4a6a..ffd3ec1dcca9dec282002cd11c849ab71cf6d2fd 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Board.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Board.java @@ -1,17 +1,17 @@ package com.adaptionsoft.games.uglytrivia; class Board { - private final int limitBoardSize; + private final int limitBoardSize; - Board(int limitBoardSize) { - this.limitBoardSize = limitBoardSize; - } + Board(int limitBoardSize) { + this.limitBoardSize = limitBoardSize; + } - boolean isBeyondLimitBoard(int position) { - return position >= limitBoardSize; - } + boolean isBeyondLimitBoard(int position) { + return position >= limitBoardSize; + } - int getLimit() { - return limitBoardSize; - } + int getLimit() { + return limitBoardSize; + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Category.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Category.java index cad25d092f2005cc2262d43ebd2c4206b8f005be..7193552bcfd6d8d43f29a9f5a00de3d35482d875 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Category.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Category.java @@ -1,28 +1,26 @@ package com.adaptionsoft.games.uglytrivia; - import java.util.Arrays; import java.util.List; enum Category { - POP("Pop", List.of(0,4,8)), - SCIENCE("Science", List.of(1,5,9)), - SPORTS("Sports", List.of(2,6,10)), - ROCK("Rock", List.of()); - - private final String category; - private final List<Integer> positions; + POP("Pop", List.of(0, 4, 8)), + SCIENCE("Science", List.of(1, 5, 9)), + SPORTS("Sports", List.of(2, 6, 10)), + ROCK("Rock", List.of()); + private final String category; + private final List<Integer> positions; - Category(String category, List<Integer> positions) { - this.category = category; - this.positions = positions; - } + Category(String category, List<Integer> positions) { + this.category = category; + this.positions = positions; + } - static Category fromPosition(int position) { - return Arrays.stream(Category.values()).filter(category -> category.positions.contains(position)).findFirst().orElse(Category.ROCK); - } + static Category fromPosition(int position) { + return Arrays.stream(Category.values()).filter(category -> category.positions.contains(position)).findFirst().orElse(Category.ROCK); + } - String getCategory() { - return category; - } + String getCategory() { + return category; + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/ConsolePrinter.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/ConsolePrinter.java index f6f333bbcc559d0ab760da9c90160dc7dd1b48a5..ea4299587c73eb442291c00e6edb5f5e75e671b6 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/ConsolePrinter.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/ConsolePrinter.java @@ -3,12 +3,13 @@ package com.adaptionsoft.games.uglytrivia; import java.io.PrintStream; class ConsolePrinter { - private final PrintStream print; - public ConsolePrinter(PrintStream print) { - this.print = print; - } - - void sendMessage(String message) { - print.println(message); - } + private final PrintStream print; + + public ConsolePrinter(PrintStream print) { + this.print = print; + } + + void sendMessage(String message) { + print.println(message); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Deck.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Deck.java index efc0de1487bef9fbf95ded2b78c5a10b422e181d..dc63b4a3ae7f11ccd268fc182f2a3e5ca0611c44 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Deck.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Deck.java @@ -5,26 +5,25 @@ import java.util.LinkedList; import java.util.Map; class Deck { - Map<Category, LinkedList<Question>> deck; + Map<Category, LinkedList<Question>> deck; - Deck(int limitDeckSize) { + Deck(int limitDeckSize) { + deck = new HashMap<>(); - deck = new HashMap<>(); + deck.put(Category.POP, new LinkedList<>()); + deck.put(Category.SCIENCE, new LinkedList<>()); + deck.put(Category.SPORTS, new LinkedList<>()); + deck.put(Category.ROCK, new LinkedList<>()); - deck.put(Category.POP, new LinkedList<>()); - deck.put(Category.SCIENCE, new LinkedList<>()); - deck.put(Category.SPORTS, new LinkedList<>()); - deck.put(Category.ROCK, new LinkedList<>()); - - for (int i = 0; i < limitDeckSize; i++) { - deck.get(Category.POP).addLast(new Question(Category.POP, i)); - deck.get(Category.SCIENCE).addLast(new Question(Category.SCIENCE, i)); - deck.get(Category.SPORTS).addLast(new Question(Category.SPORTS, i)); - deck.get(Category.ROCK).addLast(new Question(Category.ROCK, i)); - } + for (int i = 0; i < limitDeckSize; i++) { + deck.get(Category.POP).addLast(new Question(Category.POP, i)); + deck.get(Category.SCIENCE).addLast(new Question(Category.SCIENCE, i)); + deck.get(Category.SPORTS).addLast(new Question(Category.SPORTS, i)); + deck.get(Category.ROCK).addLast(new Question(Category.ROCK, i)); } + } - String removeFirstQuestion(Category category) { - return deck.get(category).removeFirst().getMessage(); - } + String removeFirstQuestion(Category category) { + return deck.get(category).removeFirst().getMessage(); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Dice.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Dice.java index 7735479e0cb362bea46c6c47febdb82ada0bed8b..9a58ff540f0cd2a50ad64215a07b7abda46a313f 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Dice.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Dice.java @@ -3,13 +3,13 @@ package com.adaptionsoft.games.uglytrivia; import java.util.Random; class Dice { - private final Random rand; + private final Random rand; - public Dice(Random rand) { - this.rand = rand; - } + public Dice(Random rand) { + this.rand = rand; + } - public int roll() { - return rand.nextInt(5) + 1; - } + public int roll() { + return rand.nextInt(5) + 1; + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Game.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Game.java index c32f47d85d8ff394d5e1ed0d538ee2b9fcaba8b5..5e6c34513d43508a8112af9f3e790ee34c40d45c 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Game.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Game.java @@ -1,81 +1,80 @@ package com.adaptionsoft.games.uglytrivia; class Game { - static final int MAX_PLAYER_PLAYABLE = 6; - static final int MAX_GOLD_COINS = 6; - static final int MIN_PLAYER_PLAYABLE = 2; - static final int LIMIT_DECK_SIZE = 50; - private final Turn turn; - private final Answer answer; - private final Notifications notifications; - private final Deck deck; - - private Players players; - - Game(Turn turn, Answer answer, Notifications notifications) { - this.notifications = notifications; - this.turn = turn; - this.answer = answer; - players = new Players(); - deck = new Deck(LIMIT_DECK_SIZE); + static final int MAX_PLAYER_PLAYABLE = 6; + static final int MAX_GOLD_COINS = 6; + static final int MIN_PLAYER_PLAYABLE = 2; + static final int LIMIT_DECK_SIZE = 50; + private final Turn turn; + private final Answer answer; + private final Notifications notifications; + private final Deck deck; + + private Players players; + + Game(Turn turn, Answer answer, Notifications notifications) { + this.notifications = notifications; + this.turn = turn; + this.answer = answer; + players = new Players(); + deck = new Deck(LIMIT_DECK_SIZE); + } + + boolean isPlayable() { + return minimumPlayer() && limitPlayersNotExceeded(); + } + + private boolean minimumPlayer() { + return howManyPlayers() >= MIN_PLAYER_PLAYABLE; + } + + private boolean limitPlayersNotExceeded() { + return howManyPlayers() < MAX_PLAYER_PLAYABLE; + } + + boolean add(String playerName) { + players = players.add(playerName); + + notifications.addPlayer(playerName); + notifications.playerPlace(howManyPlayers()); + + return true; + } + + private int howManyPlayers() { + return players.howManyPlayers(); + } + + boolean playTurn() { + updateCurrentPlayer(turn.tryToPlay(currentPlayer())); + askQuestion(); + updateCurrentPlayer(answer.answer(currentPlayer())); + + if (didPlayerWin()) { + return true; } - boolean isPlayable() { - return minimumPlayer() && limitPlayersNotExceeded(); - } - - private boolean minimumPlayer() { - return howManyPlayers() >= MIN_PLAYER_PLAYABLE; - } + players = players.nextPlayer(); + return false; + } - private boolean limitPlayersNotExceeded() { - return howManyPlayers() < MAX_PLAYER_PLAYABLE; - } - - boolean add(String playerName) { + private boolean didPlayerWin() { + return currentPlayer().getPurse() == MAX_GOLD_COINS; + } - players = players.add(playerName); + private void updateCurrentPlayer(Player currentPlayer) { + players = players.updateCurrentPlayer(currentPlayer); + } - notifications.addPlayer(playerName); - notifications.playerPlace(howManyPlayers()); + private void askQuestion() { + notifications.askQuestion(deck.removeFirstQuestion(currentCategory())); + } - return true; - } + private Category currentCategory() { + return Category.fromPosition(currentPlayer().getPosition()); + } - private int howManyPlayers() { - return players.howManyPlayers(); - } - - boolean playTurn() { - updateCurrentPlayer(turn.tryToPlay(currentPlayer())); - askQuestion(); - updateCurrentPlayer(answer.answer(currentPlayer())); - - if (didPlayerWin()) { - return true; - } - - players = players.nextPlayer(); - return false; - } - - private boolean didPlayerWin() { - return currentPlayer().getPurse() == MAX_GOLD_COINS; - } - - private void updateCurrentPlayer(Player currentPlayer) { - players = players.updateCurrentPlayer(currentPlayer); - } - - private void askQuestion() { - notifications.askQuestion(deck.removeFirstQuestion(currentCategory())); - } - - private Category currentCategory() { - return Category.fromPosition(currentPlayer().getPosition()); - } - - private Player currentPlayer() { - return players.getCurrentPlayer(); - } + private Player currentPlayer() { + return players.getCurrentPlayer(); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Notifications.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Notifications.java index 589b0d3dd16a16d6fd5073499c0eab2a4a99579b..25d123e1088f6dd6426c39d220e0598140d66d68 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Notifications.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Notifications.java @@ -1,61 +1,61 @@ package com.adaptionsoft.games.uglytrivia; class Notifications { - private final ConsolePrinter printer; + private final ConsolePrinter printer; - public Notifications(ConsolePrinter printer) { - this.printer = printer; - } + public Notifications(ConsolePrinter printer) { + this.printer = printer; + } - void addPlayer(String player) { - printer.sendMessage(player + " was added"); - } + void addPlayer(String player) { + printer.sendMessage(player + " was added"); + } - void playerPlace(int place) { - printer.sendMessage("They are player number " + place); - } + void playerPlace(int place) { + printer.sendMessage("They are player number " + place); + } - void currentPlayer(String player) { - printer.sendMessage(player + " is the current player"); - } + void currentPlayer(String player) { + printer.sendMessage(player + " is the current player"); + } - void roll(int roll) { - printer.sendMessage("They have rolled a " + roll); - } + void roll(int roll) { + printer.sendMessage("They have rolled a " + roll); + } - void notGettingOutOfPenaltyBox(String player) { - printer.sendMessage(player + " is not getting out of the penalty box"); - } + void notGettingOutOfPenaltyBox(String player) { + printer.sendMessage(player + " is not getting out of the penalty box"); + } - void newLocation(String player, int location) { - printer.sendMessage(player + "'s new location is " + location); - } + void newLocation(String player, int location) { + printer.sendMessage(player + "'s new location is " + location); + } - void currentCategory(String category) { - printer.sendMessage("The category is " + category); - } + void currentCategory(String category) { + printer.sendMessage("The category is " + category); + } - void gettingOutOfPenaltyBox(String player) { - printer.sendMessage(player + " is getting out of the penalty box"); - } + void gettingOutOfPenaltyBox(String player) { + printer.sendMessage(player + " is getting out of the penalty box"); + } - void correctAnswer() { - printer.sendMessage("Answer was correct!!!!"); - } + void correctAnswer() { + printer.sendMessage("Answer was correct!!!!"); + } - void actualGoldCoins(String player, int goldCoins) { - printer.sendMessage(player + " now has " + goldCoins + " Gold Coins."); - } + void actualGoldCoins(String player, int goldCoins) { + printer.sendMessage(player + " now has " + goldCoins + " Gold Coins."); + } - void incorrectlyAnswered() { - printer.sendMessage("Question was incorrectly answered"); - } + void incorrectlyAnswered() { + printer.sendMessage("Question was incorrectly answered"); + } - void sendInPenaltyBox(String player) { - printer.sendMessage(player + " was sent to the penalty box"); - } + void sendInPenaltyBox(String player) { + printer.sendMessage(player + " was sent to the penalty box"); + } - void askQuestion(String question) { - printer.sendMessage(question); - } + void askQuestion(String question) { + printer.sendMessage(question); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Player.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Player.java index 485a86da3a5f769253b6b7870d25a5c7d28cb9f5..95bcbaae85a2ed0163aad1db00d2986cd5ef36a8 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Player.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Player.java @@ -1,137 +1,135 @@ package com.adaptionsoft.games.uglytrivia; -import org.apache.maven.surefire.shade.booter.org.apache.commons.lang3.builder.HashCodeBuilder; - import java.util.Optional; +import org.apache.maven.surefire.shade.booter.org.apache.commons.lang3.builder.HashCodeBuilder; class Player { - private final String name; - private final int position; - private final int purse; - private final boolean inPenaltyBox; - private final int order; - - Player(String name, int order) { - this.name = name; - this.position = 0; - this.purse = 0; - this.inPenaltyBox = false; - this.order = order; - } + private final String name; + private final int position; + private final int purse; + private final boolean inPenaltyBox; + private final int order; - private Player(PlayerBuilder builder) { - name = builder.name; - position = builder.position; - purse = builder.purse; - inPenaltyBox = builder.isInPenaltyBox; - order = builder.order; - } + Player(String name, int order) { + this.name = name; + this.position = 0; + this.purse = 0; + this.inPenaltyBox = false; + this.order = order; + } - String getName() { - return name; - } + private Player(PlayerBuilder builder) { + name = builder.name; + position = builder.position; + purse = builder.purse; + inPenaltyBox = builder.isInPenaltyBox; + order = builder.order; + } - int getPosition() { - return position; - } + String getName() { + return name; + } - Player position(int position) { - int newPosition = this.position + position; - return buildNewPlayer(Optional.of(newPosition), Optional.empty(), Optional.empty()); - } + int getPosition() { + return position; + } - Player reset(int borderBoard) { - Integer newPosition = position - borderBoard; - return buildNewPlayer(Optional.of(newPosition), Optional.empty(), Optional.empty()); - } + Player position(int position) { + int newPosition = this.position + position; + return buildNewPlayer(Optional.of(newPosition), Optional.empty(), Optional.empty()); + } - int getPurse() { - return purse; - } + Player reset(int borderBoard) { + Integer newPosition = position - borderBoard; + return buildNewPlayer(Optional.of(newPosition), Optional.empty(), Optional.empty()); + } - Player addCoin() { - return buildNewPlayer(Optional.empty(), Optional.of(this.purse + 1), Optional.empty()); - } + int getPurse() { + return purse; + } - boolean isInPenaltyBox() { - return inPenaltyBox; - } + Player addCoin() { + return buildNewPlayer(Optional.empty(), Optional.of(this.purse + 1), Optional.empty()); + } - Player inPenaltyBox() { - return buildNewPlayer(Optional.empty(), Optional.empty(), Optional.of(true)); - } - - Player outPenaltyBox() { - return buildNewPlayer(Optional.empty(), Optional.empty(), Optional.of(false)); - } + boolean isInPenaltyBox() { + return inPenaltyBox; + } - public int getOrder() { - return order; - } + Player inPenaltyBox() { + return buildNewPlayer(Optional.empty(), Optional.empty(), Optional.of(true)); + } - private Player buildNewPlayer(Optional<Integer> position, Optional<Integer> purse, Optional<Boolean> inPenaltyBox) { - return new PlayerBuilder() - .name(name) - .position(position.orElse(this.position)) - .purse(purse.orElse(this.purse)) - .isInPenaltyBox(inPenaltyBox.orElse(this.inPenaltyBox)) - .order(order) - .build(); - } + Player outPenaltyBox() { + return buildNewPlayer(Optional.empty(), Optional.empty(), Optional.of(false)); + } - private static class PlayerBuilder { + public int getOrder() { + return order; + } - private String name; - private int position; - private int purse; - private boolean isInPenaltyBox; - private int order; + private Player buildNewPlayer(Optional<Integer> position, Optional<Integer> purse, Optional<Boolean> inPenaltyBox) { + return new PlayerBuilder() + .name(name) + .position(position.orElse(this.position)) + .purse(purse.orElse(this.purse)) + .isInPenaltyBox(inPenaltyBox.orElse(this.inPenaltyBox)) + .order(order) + .build(); + } - PlayerBuilder name(String name) { - this.name = name; + private static class PlayerBuilder { + private String name; + private int position; + private int purse; + private boolean isInPenaltyBox; + private int order; - return this; - } + PlayerBuilder name(String name) { + this.name = name; - PlayerBuilder position(int position) { - this.position = position; + return this; + } - return this; - } + PlayerBuilder position(int position) { + this.position = position; - PlayerBuilder purse(int purse) { - this.purse = purse; + return this; + } - return this; - } + PlayerBuilder purse(int purse) { + this.purse = purse; - PlayerBuilder isInPenaltyBox(boolean isInPenaltyBox) { - this.isInPenaltyBox = isInPenaltyBox; + return this; + } - return this; - } + PlayerBuilder isInPenaltyBox(boolean isInPenaltyBox) { + this.isInPenaltyBox = isInPenaltyBox; - PlayerBuilder order(int order) { - this.order = order; + return this; + } - return this; - } + PlayerBuilder order(int order) { + this.order = order; - Player build() { - return new Player(this); - } + return this; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Player player = (Player) o; - return name.equals(player.name) && order == player.getOrder(); + Player build() { + return new Player(this); } + } - @Override - public int hashCode() { - return new HashCodeBuilder().append(name).append(order).build(); - } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Player player = (Player) o; + return name.equals(player.name) && order == player.getOrder(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(name).append(order).build(); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Players.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Players.java index ff848b095673528f6f1601a1aa7f5ff4d00a2b42..dcfc1b932ef4f56da6a82444dce8be53fb96cdf7 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Players.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Players.java @@ -6,54 +6,54 @@ import java.util.List; import java.util.stream.Collectors; class Players { - private final List<Player> players; - private int currentPlayer; + private final List<Player> players; + private int currentPlayer; - Players() { - this.players = new ArrayList<>(); - } + Players() { + this.players = new ArrayList<>(); + } - Players(List<Player> players, int currentPlayer) { - this.players = players.stream().sorted(Comparator.comparing(Player::getOrder)).collect(Collectors.toUnmodifiableList()); - this.currentPlayer = currentPlayer; - } + Players(List<Player> players, int currentPlayer) { + this.players = players.stream().sorted(Comparator.comparing(Player::getOrder)).collect(Collectors.toUnmodifiableList()); + this.currentPlayer = currentPlayer; + } - Players add(String playerName) { - List<Player> newPlayers = new ArrayList<>(players); - newPlayers.add(new Player(playerName, players.size())); + Players add(String playerName) { + List<Player> newPlayers = new ArrayList<>(players); + newPlayers.add(new Player(playerName, players.size())); - return new Players(newPlayers, currentPlayer); - } - - Player get(int index) { - return players.get(index); - } + return new Players(newPlayers, currentPlayer); + } - int howManyPlayers() { - return players.size(); - } + Player get(int index) { + return players.get(index); + } - Player getCurrentPlayer() { - return players.get(currentPlayer); - } + int howManyPlayers() { + return players.size(); + } - Players nextPlayer() { - currentPlayer++; - if (isExceededLimitPlayers(currentPlayer)) { - currentPlayer = 0; - } + Player getCurrentPlayer() { + return players.get(currentPlayer); + } - return new Players(players, currentPlayer); + Players nextPlayer() { + currentPlayer++; + if (isExceededLimitPlayers(currentPlayer)) { + currentPlayer = 0; } - private boolean isExceededLimitPlayers(int index) { - return index >= players.size(); - } + return new Players(players, currentPlayer); + } - Players updateCurrentPlayer(Player player) { - List<Player> newPlayers = new ArrayList<>(players); - newPlayers.remove(currentPlayer); - newPlayers.add(player); - return new Players(newPlayers, currentPlayer); - } + private boolean isExceededLimitPlayers(int index) { + return index >= players.size(); + } + + Players updateCurrentPlayer(Player player) { + List<Player> newPlayers = new ArrayList<>(players); + newPlayers.remove(currentPlayer); + newPlayers.add(player); + return new Players(newPlayers, currentPlayer); + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Question.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Question.java index cef34468a6fb2b70b28b79cc645503b336c95b58..e8d974fd04c3d894d29ba3d12d2c06a586cc2f1a 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Question.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Question.java @@ -1,13 +1,13 @@ package com.adaptionsoft.games.uglytrivia; class Question { - private final String message; + private final String message; - Question(Category category, int index) { - message = category.getCategory() + " Question " + index; - } + Question(Category category, int index) { + message = category.getCategory() + " Question " + index; + } - String getMessage() { - return message; - } + String getMessage() { + return message; + } } diff --git a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Turn.java b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Turn.java index b3b294179f7a0bec297ff814ede990b3711cbab7..6d17ec766f517c37c878f24cc61163fd1950bb2b 100755 --- a/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Turn.java +++ b/ugly-trivia/src/main/java/com/adaptionsoft/games/uglytrivia/Turn.java @@ -1,70 +1,70 @@ package com.adaptionsoft.games.uglytrivia; class Turn { - private final Notifications notifications; - private final Board board; - private final Dice dice; - - Turn(Notifications notifications, Board board, Dice dice) { - this.notifications = notifications; - this.board = board; - this.dice = dice; - } + private final Notifications notifications; + private final Board board; + private final Dice dice; - Player tryToPlay(Player player) { - int roll = dice.roll(); + Turn(Notifications notifications, Board board, Dice dice) { + this.notifications = notifications; + this.board = board; + this.dice = dice; + } - notifications.currentPlayer(player.getName()); - notifications.roll(roll); + Player tryToPlay(Player player) { + int roll = dice.roll(); - if (canNotGettingOutOfPenaltyBox(player, roll)) { - notifications.notGettingOutOfPenaltyBox(player.getName()); - return player; - } + notifications.currentPlayer(player.getName()); + notifications.roll(roll); - return playTurn(player, roll); + if (canNotGettingOutOfPenaltyBox(player, roll)) { + notifications.notGettingOutOfPenaltyBox(player.getName()); + return player; } - private Player playTurn(Player player, int roll) { - player = inPenaltyBox(player); + return playTurn(player, roll); + } - player = move(player, roll); + private Player playTurn(Player player, int roll) { + player = inPenaltyBox(player); - notifications.newLocation(player.getName(), player.getPosition()); - notifications.currentCategory(currentCategory(player).getCategory()); + player = move(player, roll); - return player; - } + notifications.newLocation(player.getName(), player.getPosition()); + notifications.currentCategory(currentCategory(player).getCategory()); - private Player inPenaltyBox(Player player) { - if (player.isInPenaltyBox()) { - player = player.outPenaltyBox(); - notifications.gettingOutOfPenaltyBox(player.getName()); - } - return player; - } + return player; + } - private Player move(Player player, int roll) { - return resetPlayerPosition(player.position(roll)); + private Player inPenaltyBox(Player player) { + if (player.isInPenaltyBox()) { + player = player.outPenaltyBox(); + notifications.gettingOutOfPenaltyBox(player.getName()); } + return player; + } - private Player resetPlayerPosition(Player player) { - if (board.isBeyondLimitBoard(player.getPosition())) { - return player.reset(board.getLimit()); - } + private Player move(Player player, int roll) { + return resetPlayerPosition(player.position(roll)); + } - return player; + private Player resetPlayerPosition(Player player) { + if (board.isBeyondLimitBoard(player.getPosition())) { + return player.reset(board.getLimit()); } - private Category currentCategory(Player player) { - return Category.fromPosition(player.getPosition()); - } + return player; + } - private boolean canNotGettingOutOfPenaltyBox(Player player, int roll) { - return player.isInPenaltyBox() && isPairRoll(roll); - } + private Category currentCategory(Player player) { + return Category.fromPosition(player.getPosition()); + } - private boolean isPairRoll(int roll) { - return roll % 2 == 0; - } + private boolean canNotGettingOutOfPenaltyBox(Player player, int roll) { + return player.isInPenaltyBox() && isPairRoll(roll); + } + + private boolean isPairRoll(int roll) { + return roll % 2 == 0; + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulatorUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulatorUnitTest.java index c2abe12edacaecb3d8ac9a26676eab9ea9ace187..2366134d5663b5f00cf427c7d05cce9f54bdc48a 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulatorUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerRandomSimulatorUnitTest.java @@ -1,36 +1,35 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - -import java.util.Random; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.Random; +import org.junit.jupiter.api.Test; + public class AnswerRandomSimulatorUnitTest { - Random rand = mock(Random.class); + Random rand = mock(Random.class); - @Test - public void shouldCheckIsWrongAnswerForSeven() { - AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); + @Test + public void shouldCheckIsWrongAnswerForSeven() { + AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); - when(rand.nextInt(9)).thenReturn(7); - assertThat(randomSimulator.isRight()).isFalse(); - } + when(rand.nextInt(9)).thenReturn(7); + assertThat(randomSimulator.isRight()).isFalse(); + } - @Test - public void shouldCheckIsRightAnswerForMinSeven() { - AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); + @Test + public void shouldCheckIsRightAnswerForMinSeven() { + AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); - when(rand.nextInt(9)).thenReturn(6); - assertThat(randomSimulator.isRight()).isTrue(); - } + when(rand.nextInt(9)).thenReturn(6); + assertThat(randomSimulator.isRight()).isTrue(); + } - @Test - public void shouldCheckIsRightAnswerForMoreSeven() { - AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); + @Test + public void shouldCheckIsRightAnswerForMoreSeven() { + AnswerRandomSimulator randomSimulator = new AnswerRandomSimulator(rand); - when(rand.nextInt(9)).thenReturn(8); - assertThat(randomSimulator.isRight()).isTrue(); - } + when(rand.nextInt(9)).thenReturn(8); + assertThat(randomSimulator.isRight()).isTrue(); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerUnitTest.java index 54b747ef47798080769139f173db835490bce159..164d96d276eb1dd14027ef386d77a0e2e4a3cbdf 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/AnswerUnitTest.java @@ -1,41 +1,41 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import org.junit.jupiter.api.Test; + class AnswerUnitTest { - private final Notifications notifications = mock(Notifications.class); - private final AnswerRandomSimulator randomSimulator = mock(AnswerRandomSimulator.class); - - @Test - void shouldWrongAnswer() { - Answer answer = new Answer(notifications, randomSimulator); - when(randomSimulator.isRight()).thenReturn(false); - Player player = player(); - - assertThat(answer.answer(player).isInPenaltyBox()).isTrue(); - - verify(notifications).incorrectlyAnswered(); - verify(notifications).sendInPenaltyBox(player.getName()); - } - - @Test - void shouldCorrectAnswer() { - Answer answer = new Answer(notifications, randomSimulator); - when(randomSimulator.isRight()).thenReturn(true); - Player player = player(); - - player = answer.answer(player); - assertThat(player.isInPenaltyBox()).isFalse(); - assertThat(player.getPurse()).isEqualTo(1); - - verify(notifications).correctAnswer(); - verify(notifications).actualGoldCoins(player.getName(), player.getPurse()); - } - - private Player player() { - return new Player("Julie", 0); - } + private final Notifications notifications = mock(Notifications.class); + private final AnswerRandomSimulator randomSimulator = mock(AnswerRandomSimulator.class); + + @Test + void shouldWrongAnswer() { + Answer answer = new Answer(notifications, randomSimulator); + when(randomSimulator.isRight()).thenReturn(false); + Player player = player(); + + assertThat(answer.answer(player).isInPenaltyBox()).isTrue(); + + verify(notifications).incorrectlyAnswered(); + verify(notifications).sendInPenaltyBox(player.getName()); + } + + @Test + void shouldCorrectAnswer() { + Answer answer = new Answer(notifications, randomSimulator); + when(randomSimulator.isRight()).thenReturn(true); + Player player = player(); + + player = answer.answer(player); + assertThat(player.isInPenaltyBox()).isFalse(); + assertThat(player.getPurse()).isEqualTo(1); + + verify(notifications).correctAnswer(); + verify(notifications).actualGoldCoins(player.getName(), player.getPurse()); + } + + private Player player() { + return new Player("Julie", 0); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/BoardUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/BoardUnitTest.java index 0ed09a124924c1b61945a2e16b97ef7ee019162f..07480bc3057c52bf251e7c42ce4cbf7e0ef042bc 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/BoardUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/BoardUnitTest.java @@ -1,25 +1,25 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Test; + class BoardUnitTest { - static final int BOARD_LIMIT = 10; - private final Board board = new Board(BOARD_LIMIT); + static final int BOARD_LIMIT = 10; + private final Board board = new Board(BOARD_LIMIT); - @Test - void shouldNotBeBeyondLimit() { - assertThat(board.isBeyondLimitBoard(9)).isFalse(); - } + @Test + void shouldNotBeBeyondLimit() { + assertThat(board.isBeyondLimitBoard(9)).isFalse(); + } - @Test - void shouldBeBeyondLimit() { - assertThat(board.isBeyondLimitBoard(12)).isTrue(); - } + @Test + void shouldBeBeyondLimit() { + assertThat(board.isBeyondLimitBoard(12)).isTrue(); + } - @Test - void shouldGetLimit() { - assertThat(board.getLimit()).isEqualTo(BOARD_LIMIT); - } + @Test + void shouldGetLimit() { + assertThat(board.getLimit()).isEqualTo(BOARD_LIMIT); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/CategoryUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/CategoryUnitTest.java index 5f7a9f0b75ae7162bc1ce6644dbdcd9f57776aef..1f1234e0a36ebd27cbf3e3d0f6b0d49a50d8b96d 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/CategoryUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/CategoryUnitTest.java @@ -1,29 +1,29 @@ package com.adaptionsoft.games.uglytrivia; +import static org.assertj.core.api.Assertions.*; + import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.*; - class CategoryUnitTest { - @Test - void shouldGetPopCategory() { - Assertions.assertThat(Category.POP.getCategory()).isEqualTo("Pop"); - } + @Test + void shouldGetPopCategory() { + Assertions.assertThat(Category.POP.getCategory()).isEqualTo("Pop"); + } - @Test - void shouldGetNullCategoryForUnknownPosition() { - assertThat(Category.fromPosition(50).getCategory()).isEqualTo("Rock"); - } + @Test + void shouldGetNullCategoryForUnknownPosition() { + assertThat(Category.fromPosition(50).getCategory()).isEqualTo("Rock"); + } - @Test - void shouldGetCategoryWithPositionZero() { - assertThat(Category.fromPosition(0).getCategory()).isEqualTo("Pop"); - } + @Test + void shouldGetCategoryWithPositionZero() { + assertThat(Category.fromPosition(0).getCategory()).isEqualTo("Pop"); + } - @Test - void shouldGetCategoryWithPositionOne() { - assertThat(Category.fromPosition(1).getCategory()).isEqualTo("Science"); - } + @Test + void shouldGetCategoryWithPositionOne() { + assertThat(Category.fromPosition(1).getCategory()).isEqualTo("Science"); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/ConsolePrinterUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/ConsolePrinterUnitTest.java index a5a2cd2714a655f94b295b968b0e07fbc4542342..8d1ad6733b3d4d51c8b7dac10123147c0e9fb391 100644 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/ConsolePrinterUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/ConsolePrinterUnitTest.java @@ -1,26 +1,25 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; - -import java.io.PrintStream; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.io.PrintStream; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; + class ConsolePrinterUnitTest { - PrintStream print = mock(PrintStream.class); + PrintStream print = mock(PrintStream.class); - @Test - void shouldPrintMessage() { - ConsolePrinter printer = new ConsolePrinter(print); + @Test + void shouldPrintMessage() { + ConsolePrinter printer = new ConsolePrinter(print); - ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class); - String message = "IS THIS MESSAGE"; - printer.sendMessage(message); + String message = "IS THIS MESSAGE"; + printer.sendMessage(message); - verify(print).println(messageCaptor.capture()); - assertThat(messageCaptor.getValue()).isEqualTo(message); - } + verify(print).println(messageCaptor.capture()); + assertThat(messageCaptor.getValue()).isEqualTo(message); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DeckUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DeckUnitTest.java index bd883c307f73521bc3edde0205b05eb87b64b62b..d3cc448d33c91df4237d5d1f9b6c251cac58b3b0 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DeckUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DeckUnitTest.java @@ -1,49 +1,49 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Test; + class DeckUnitTest { - @Test - void shouldRemoveOnceFirstPopQuestion() { - assertThat(new Deck(1).removeFirstQuestion(Category.POP)).isEqualTo("Pop Question 0"); - } + @Test + void shouldRemoveOnceFirstPopQuestion() { + assertThat(new Deck(1).removeFirstQuestion(Category.POP)).isEqualTo("Pop Question 0"); + } - @Test - void shouldRemoveTwiceFirstPopQuestion() { - Deck deck = new Deck(2); + @Test + void shouldRemoveTwiceFirstPopQuestion() { + Deck deck = new Deck(2); - deck.removeFirstQuestion(Category.POP); + deck.removeFirstQuestion(Category.POP); - assertThat(deck.removeFirstQuestion(Category.POP)).isEqualTo("Pop Question 1"); - } + assertThat(deck.removeFirstQuestion(Category.POP)).isEqualTo("Pop Question 1"); + } - @Test - void shouldRemoveTwiceFirstScienceQuestion() { - Deck deck = new Deck(2); + @Test + void shouldRemoveTwiceFirstScienceQuestion() { + Deck deck = new Deck(2); - deck.removeFirstQuestion(Category.SCIENCE); + deck.removeFirstQuestion(Category.SCIENCE); - assertThat(deck.removeFirstQuestion(Category.SCIENCE)).isEqualTo("Science Question 1"); - } + assertThat(deck.removeFirstQuestion(Category.SCIENCE)).isEqualTo("Science Question 1"); + } - @Test - void shouldRemoveSportsFirstScienceQuestion() { - Deck deck = new Deck(2); + @Test + void shouldRemoveSportsFirstScienceQuestion() { + Deck deck = new Deck(2); - deck.removeFirstQuestion(Category.SPORTS); + deck.removeFirstQuestion(Category.SPORTS); - assertThat(deck.removeFirstQuestion(Category.SPORTS)).isEqualTo("Sports Question 1"); - } + assertThat(deck.removeFirstQuestion(Category.SPORTS)).isEqualTo("Sports Question 1"); + } - @Test - void shouldRemoveRockFirstScienceQuestion() { - Deck deck = new Deck(2); + @Test + void shouldRemoveRockFirstScienceQuestion() { + Deck deck = new Deck(2); - deck.removeFirstQuestion(Category.ROCK); + deck.removeFirstQuestion(Category.ROCK); - assertThat(deck.removeFirstQuestion(Category.ROCK)).isEqualTo("Rock Question 1"); - } + assertThat(deck.removeFirstQuestion(Category.ROCK)).isEqualTo("Rock Question 1"); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DiceUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DiceUnitTest.java index b9799cdd260d4828d90b83c37c6a52376d5ace0d..4a59ffd7f0c390940260e4dfb64db6598b170221 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DiceUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/DiceUnitTest.java @@ -1,20 +1,18 @@ package com.adaptionsoft.games.uglytrivia; - -import org.junit.jupiter.api.Test; - -import java.util.Random; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.Random; +import org.junit.jupiter.api.Test; + class DiceUnitTest { - Random rand = mock(Random.class); + Random rand = mock(Random.class); - @Test - public void shouldRollDice() { - Dice dice = new Dice(rand); - when(rand.nextInt(5)).thenReturn(2); - assertThat(dice.roll()).isEqualTo(3); - } + @Test + public void shouldRollDice() { + Dice dice = new Dice(rand); + when(rand.nextInt(5)).thenReturn(2); + assertThat(dice.roll()).isEqualTo(3); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/GameUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/GameUnitTest.java index 4cd3e0bdc64091a2484b9313dee8f4ae48a50c64..865957feaf8b634a06238ad911a6759a7c2473b1 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/GameUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/GameUnitTest.java @@ -1,132 +1,131 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; - -import java.util.List; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; -public class GameUnitTest { - public static final String JULIE = "JULIE"; - private static final String JADE = "JADE"; - private static final String MORGANA = "Morgana"; - private static final String XENOLUNE = "Xenolune"; - private static final String LILITH = "Lilith"; - private static final String ELSA = "Elsa"; - private final Notifications notifications = mock(Notifications.class); - private final Turn turn = mock(Turn.class); - private final Answer answer = mock(Answer.class); - - private final Game game = new Game(turn, answer, notifications); - - @Test - public void shouldAddPlayer() { - assertThat(game.add(JULIE)).isTrue(); - } - - @Test - public void shouldGetOnePlayer() { - game.add(JULIE); - - verify(notifications).addPlayer(JULIE); - } - - @Test - public void shouldNotPlayableGameForOnePlayer() { - game.add(JULIE); - - assertThat(game.isPlayable()).isFalse(); - } - - @Test - public void shouldNotPlayableGameForSixPlayer() { - gamePlayable(); - game.add(MORGANA); - game.add(XENOLUNE); - game.add(LILITH); - game.add(ELSA); - - assertThat(game.isPlayable()).isFalse(); - } - - @Test - public void shouldPlayableGameForFivePlayer() { - gamePlayable(); - game.add(MORGANA); - game.add(XENOLUNE); - game.add(LILITH); - - assertThat(game.isPlayable()).isTrue(); - } - - @Test - public void shouldPlayableGameForTwoPlayers() { - gamePlayable(); - - assertThat(game.isPlayable()).isTrue(); - } - - @Test - public void shouldPlayableGameForThreePlayers() { - gamePlayable(); - game.add(MORGANA); - - assertThat(game.isPlayable()).isTrue(); - } - - @Test - public void shouldCheckNotifyAddPlayer() { - game.add(JULIE); - - verify(notifications).addPlayer(JULIE); - verify(notifications).playerPlace(1); - } - - @Test - public void shouldPlayTurnWithoutWinner() { - Player julie = new Player(JULIE, 0); - Player jade = new Player(JADE, 1); - when(turn.tryToPlay(julie)).thenReturn(julie); - when(turn.tryToPlay(jade)).thenReturn(jade); - when(answer.answer(julie)).thenReturn(julie); - when(answer.answer(jade)).thenReturn(jade); - - gamePlayable(); - assertThat(game.playTurn()).isFalse(); - assertThat(game.playTurn()).isFalse(); - - ArgumentCaptor<Player> captor = ArgumentCaptor.forClass(Player.class); - verify(turn, times(2)).tryToPlay(captor.capture()); - - List<Player> players = captor.getAllValues(); - assertThat(players).extracting("name").containsExactly(JULIE, JADE); - - verify(notifications).askQuestion("Pop Question 0"); - verify(notifications).askQuestion("Pop Question 1"); - verify(answer, times(2)).answer(any(Player.class)); - } - - @Test - public void shouldPlayTurnWithWinner() { - Player julie = new Player(JULIE, 0); - Player jade = new Player(JADE, 1); - for (int i = 0; i < 6; i++) { - jade = jade.addCoin(); - } - when(turn.tryToPlay(julie)).thenReturn(julie); - when(turn.tryToPlay(new Player(JADE, 1))).thenReturn(jade); - when(answer.answer(julie)).thenReturn(julie); - when(answer.answer(jade)).thenReturn(jade); - - gamePlayable(); - assertThat(game.playTurn()).isFalse(); - assertThat(game.playTurn()).isTrue(); - } +import java.util.List; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; - private void gamePlayable() { - game.add(JULIE); - game.add(JADE); +public class GameUnitTest { + public static final String JULIE = "JULIE"; + private static final String JADE = "JADE"; + private static final String MORGANA = "Morgana"; + private static final String XENOLUNE = "Xenolune"; + private static final String LILITH = "Lilith"; + private static final String ELSA = "Elsa"; + private final Notifications notifications = mock(Notifications.class); + private final Turn turn = mock(Turn.class); + private final Answer answer = mock(Answer.class); + + private final Game game = new Game(turn, answer, notifications); + + @Test + public void shouldAddPlayer() { + assertThat(game.add(JULIE)).isTrue(); + } + + @Test + public void shouldGetOnePlayer() { + game.add(JULIE); + + verify(notifications).addPlayer(JULIE); + } + + @Test + public void shouldNotPlayableGameForOnePlayer() { + game.add(JULIE); + + assertThat(game.isPlayable()).isFalse(); + } + + @Test + public void shouldNotPlayableGameForSixPlayer() { + gamePlayable(); + game.add(MORGANA); + game.add(XENOLUNE); + game.add(LILITH); + game.add(ELSA); + + assertThat(game.isPlayable()).isFalse(); + } + + @Test + public void shouldPlayableGameForFivePlayer() { + gamePlayable(); + game.add(MORGANA); + game.add(XENOLUNE); + game.add(LILITH); + + assertThat(game.isPlayable()).isTrue(); + } + + @Test + public void shouldPlayableGameForTwoPlayers() { + gamePlayable(); + + assertThat(game.isPlayable()).isTrue(); + } + + @Test + public void shouldPlayableGameForThreePlayers() { + gamePlayable(); + game.add(MORGANA); + + assertThat(game.isPlayable()).isTrue(); + } + + @Test + public void shouldCheckNotifyAddPlayer() { + game.add(JULIE); + + verify(notifications).addPlayer(JULIE); + verify(notifications).playerPlace(1); + } + + @Test + public void shouldPlayTurnWithoutWinner() { + Player julie = new Player(JULIE, 0); + Player jade = new Player(JADE, 1); + when(turn.tryToPlay(julie)).thenReturn(julie); + when(turn.tryToPlay(jade)).thenReturn(jade); + when(answer.answer(julie)).thenReturn(julie); + when(answer.answer(jade)).thenReturn(jade); + + gamePlayable(); + assertThat(game.playTurn()).isFalse(); + assertThat(game.playTurn()).isFalse(); + + ArgumentCaptor<Player> captor = ArgumentCaptor.forClass(Player.class); + verify(turn, times(2)).tryToPlay(captor.capture()); + + List<Player> players = captor.getAllValues(); + assertThat(players).extracting("name").containsExactly(JULIE, JADE); + + verify(notifications).askQuestion("Pop Question 0"); + verify(notifications).askQuestion("Pop Question 1"); + verify(answer, times(2)).answer(any(Player.class)); + } + + @Test + public void shouldPlayTurnWithWinner() { + Player julie = new Player(JULIE, 0); + Player jade = new Player(JADE, 1); + for (int i = 0; i < 6; i++) { + jade = jade.addCoin(); } + when(turn.tryToPlay(julie)).thenReturn(julie); + when(turn.tryToPlay(new Player(JADE, 1))).thenReturn(jade); + when(answer.answer(julie)).thenReturn(julie); + when(answer.answer(jade)).thenReturn(jade); + + gamePlayable(); + assertThat(game.playTurn()).isFalse(); + assertThat(game.playTurn()).isTrue(); + } + + private void gamePlayable() { + game.add(JULIE); + game.add(JADE); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/NotificationsUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/NotificationsUnitTest.java index c59d6e6910f686e48792056cb51f672d99cb634e..732d673260a2e44286bd919672c91235f0270afb 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/NotificationsUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/NotificationsUnitTest.java @@ -1,90 +1,89 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.mockito.Mockito.*; +import org.junit.jupiter.api.Test; + class NotificationsUnitTest { - private static final String JULIE = "Julie"; - private final ConsolePrinter printer = mock(ConsolePrinter.class); - private final Notifications notifications = new Notifications(printer); - - @Test - void shouldNotifyAddPlayer() { - notifications.addPlayer(JULIE); - verify(printer).sendMessage("Julie was added"); - ; - } - - @Test - void shouldNotifyPlayerPlace() { - notifications.playerPlace(1); - verify(printer).sendMessage("They are player number 1"); - } - - @Test - void shouldNotifyCurrentPlayer() { - notifications.currentPlayer(JULIE); - verify(printer).sendMessage("Julie is the current player"); - } - - @Test - void shouldNotifyRoll() { - notifications.roll(1); - verify(printer).sendMessage("They have rolled a 1"); - } - - @Test - void shouldNotifyNotGettingOutPenaltyBox() { - notifications.notGettingOutOfPenaltyBox(JULIE); - verify(printer).sendMessage("Julie is not getting out of the penalty box"); - } - - @Test - void shouldNotifyNewLocation() { - notifications.newLocation(JULIE, 1); - verify(printer).sendMessage("Julie's new location is 1"); - } - - @Test - void shouldNotifyCurrentCategory() { - notifications.currentCategory("Pop"); - verify(printer).sendMessage("The category is Pop"); - } - - @Test - void shouldNotifyGettingOutPenaltyBox() { - notifications.gettingOutOfPenaltyBox(JULIE); - verify(printer).sendMessage("Julie is getting out of the penalty box"); - } - - @Test - void shouldNotifyCorrectAnswer() { - notifications.correctAnswer(); - verify(printer).sendMessage("Answer was correct!!!!"); - } - - @Test - void shouldNotifyActualGoldCoins() { - notifications.actualGoldCoins(JULIE, 1); - verify(printer).sendMessage("Julie now has 1 Gold Coins."); - } - - @Test - void shouldNotifyIncorrectlyAnswered() { - notifications.incorrectlyAnswered(); - verify(printer).sendMessage("Question was incorrectly answered"); - } - - @Test - void shouldNotifySendInPenaltyBox() { - notifications.sendInPenaltyBox(JULIE); - verify(printer).sendMessage("Julie was sent to the penalty box"); - } - - @Test - void shouldAskQuestion() { - notifications.askQuestion("question"); - verify(printer).sendMessage("question"); - } + private static final String JULIE = "Julie"; + private final ConsolePrinter printer = mock(ConsolePrinter.class); + private final Notifications notifications = new Notifications(printer); + + @Test + void shouldNotifyAddPlayer() { + notifications.addPlayer(JULIE); + verify(printer).sendMessage("Julie was added"); + } + + @Test + void shouldNotifyPlayerPlace() { + notifications.playerPlace(1); + verify(printer).sendMessage("They are player number 1"); + } + + @Test + void shouldNotifyCurrentPlayer() { + notifications.currentPlayer(JULIE); + verify(printer).sendMessage("Julie is the current player"); + } + + @Test + void shouldNotifyRoll() { + notifications.roll(1); + verify(printer).sendMessage("They have rolled a 1"); + } + + @Test + void shouldNotifyNotGettingOutPenaltyBox() { + notifications.notGettingOutOfPenaltyBox(JULIE); + verify(printer).sendMessage("Julie is not getting out of the penalty box"); + } + + @Test + void shouldNotifyNewLocation() { + notifications.newLocation(JULIE, 1); + verify(printer).sendMessage("Julie's new location is 1"); + } + + @Test + void shouldNotifyCurrentCategory() { + notifications.currentCategory("Pop"); + verify(printer).sendMessage("The category is Pop"); + } + + @Test + void shouldNotifyGettingOutPenaltyBox() { + notifications.gettingOutOfPenaltyBox(JULIE); + verify(printer).sendMessage("Julie is getting out of the penalty box"); + } + + @Test + void shouldNotifyCorrectAnswer() { + notifications.correctAnswer(); + verify(printer).sendMessage("Answer was correct!!!!"); + } + + @Test + void shouldNotifyActualGoldCoins() { + notifications.actualGoldCoins(JULIE, 1); + verify(printer).sendMessage("Julie now has 1 Gold Coins."); + } + + @Test + void shouldNotifyIncorrectlyAnswered() { + notifications.incorrectlyAnswered(); + verify(printer).sendMessage("Question was incorrectly answered"); + } + + @Test + void shouldNotifySendInPenaltyBox() { + notifications.sendInPenaltyBox(JULIE); + verify(printer).sendMessage("Julie was sent to the penalty box"); + } + + @Test + void shouldAskQuestion() { + notifications.askQuestion("question"); + verify(printer).sendMessage("question"); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayerUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayerUnitTest.java index 76ffe84bfa60b795f783c3f863f27c01c8a3ccf9..cb28411772afd75bb1c8cbdf16e20b7d968387ce 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayerUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayerUnitTest.java @@ -1,104 +1,102 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; -public class PlayerUnitTest { +import org.junit.jupiter.api.Test; - private static final String JULIE = "Julie"; - private static final String PLAYER = "Player"; - private static final String JADE = "Jade"; - - @Test - public void shouldCreatePlayer() { - assertThat(player().getPosition()).isEqualTo(0); - assertThat(player().getPurse()).isEqualTo(0); - assertThat(player().getOrder()).isEqualTo(0); - } - - @Test - public void shouldGetPlayerName() { - assertThat(player().getName()).isEqualTo(JULIE); - } - - @Test - public void shouldGetNewPlayerPosition() { - Player player = player().position(1); - - assertThat(player.getPosition()).isEqualTo(1); - } - - @Test - public void shouldGetSecondNewPlayerPosition() { - Player player = player().position(1).position(1); - - assertThat(player.getPosition()).isEqualTo(2); - } - - @Test - public void shouldResetPlayerPosition() { - Player player = player().position(1).reset(1); - - assertThat(player.getPosition()).isEqualTo(0); - } - - @Test - public void shouldAddGoldCoin() { - Player player = player().addCoin(); - - assertThat(player.getPurse()).isEqualTo(1); - } - - @Test - public void shouldInPenalTyBox() { - Player player = player().inPenaltyBox(); - assertThat(player.isInPenaltyBox()).isTrue(); - } - - @Test - public void shouldOutPenalTyBox() { - Player player = player().inPenaltyBox().outPenaltyBox(); - assertThat(player.isInPenaltyBox()).isFalse(); - } - - @Test - public void shouldBeEqual() { - assertThat(player().addCoin().equals(player())).isTrue(); - } - - @Test - public void shouldNotBeEqualWhenNameIsDifferent() { - assertThat(new Player(JADE, 0).equals(player())).isFalse(); - } - - @Test - public void shouldNotBeEqualWhenOrderIsDifferent() { - assertThat(new Player(JULIE, 1).equals(player())).isFalse(); - } - - @Test - public void shouldGetSameHashCodeWithSamePlayer() { - assertThat(player().hashCode()).isEqualTo(player().hashCode()); - } - - @Test - public void shouldGetDifferentHashCodeWithDifferentPlayer() { - assertThat(player().hashCode()).isNotEqualTo(new Player(PLAYER, 1).hashCode()); - } - - @Test - public void shouldGetDifferentHashCodeWithDifferentName() { - assertThat(player().hashCode()).isNotEqualTo(new Player(PLAYER, 0).hashCode()); - } - - @Test - public void shouldGetDifferentHashCodeWithDifferentOrder() { - assertThat(player().hashCode()).isNotEqualTo(new Player(JULIE, 1).hashCode()); - } - - - private Player player() { - return new Player(JULIE, 0); - } +public class PlayerUnitTest { + private static final String JULIE = "Julie"; + private static final String PLAYER = "Player"; + private static final String JADE = "Jade"; + + @Test + public void shouldCreatePlayer() { + assertThat(player().getPosition()).isEqualTo(0); + assertThat(player().getPurse()).isEqualTo(0); + assertThat(player().getOrder()).isEqualTo(0); + } + + @Test + public void shouldGetPlayerName() { + assertThat(player().getName()).isEqualTo(JULIE); + } + + @Test + public void shouldGetNewPlayerPosition() { + Player player = player().position(1); + + assertThat(player.getPosition()).isEqualTo(1); + } + + @Test + public void shouldGetSecondNewPlayerPosition() { + Player player = player().position(1).position(1); + + assertThat(player.getPosition()).isEqualTo(2); + } + + @Test + public void shouldResetPlayerPosition() { + Player player = player().position(1).reset(1); + + assertThat(player.getPosition()).isEqualTo(0); + } + + @Test + public void shouldAddGoldCoin() { + Player player = player().addCoin(); + + assertThat(player.getPurse()).isEqualTo(1); + } + + @Test + public void shouldInPenalTyBox() { + Player player = player().inPenaltyBox(); + assertThat(player.isInPenaltyBox()).isTrue(); + } + + @Test + public void shouldOutPenalTyBox() { + Player player = player().inPenaltyBox().outPenaltyBox(); + assertThat(player.isInPenaltyBox()).isFalse(); + } + + @Test + public void shouldBeEqual() { + assertThat(player().addCoin().equals(player())).isTrue(); + } + + @Test + public void shouldNotBeEqualWhenNameIsDifferent() { + assertThat(new Player(JADE, 0).equals(player())).isFalse(); + } + + @Test + public void shouldNotBeEqualWhenOrderIsDifferent() { + assertThat(new Player(JULIE, 1).equals(player())).isFalse(); + } + + @Test + public void shouldGetSameHashCodeWithSamePlayer() { + assertThat(player().hashCode()).isEqualTo(player().hashCode()); + } + + @Test + public void shouldGetDifferentHashCodeWithDifferentPlayer() { + assertThat(player().hashCode()).isNotEqualTo(new Player(PLAYER, 1).hashCode()); + } + + @Test + public void shouldGetDifferentHashCodeWithDifferentName() { + assertThat(player().hashCode()).isNotEqualTo(new Player(PLAYER, 0).hashCode()); + } + + @Test + public void shouldGetDifferentHashCodeWithDifferentOrder() { + assertThat(player().hashCode()).isNotEqualTo(new Player(JULIE, 1).hashCode()); + } + + private Player player() { + return new Player(JULIE, 0); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayersUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayersUnitTest.java index 1df0c209855a15361a542853d217f078d1e089cc..2b44ec324eb510ae4361d7ce5aad2c1e0da5c7ed 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayersUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/PlayersUnitTest.java @@ -1,52 +1,50 @@ package com.adaptionsoft.games.uglytrivia; +import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.*; - class PlayersUnitTest { - - static final String PLAYER_NAME = "Julie"; - private static final String JADE = "Jade"; - - @Test - void shouldAddPlayer() { - Player player = new Players().add(PLAYER_NAME).get(0); - assertThat(player.getName()).isEqualTo(PLAYER_NAME); - assertThat(player.getOrder()).isEqualTo(0); - } - - @Test - void shouldGetHowManyPlayers() { - Players players = new Players().add(PLAYER_NAME); - - assertThat(players.howManyPlayers()).isEqualTo(1); - } - - @Test - void shouldGetCurrentPlayer() { - Players players = new Players().add(PLAYER_NAME).add(JADE).nextPlayer(); - assertThat(players.getCurrentPlayer().getName()).isEqualTo(JADE); - } - - @Test - void shouldGetFirstPlayerWhenNoNextPlayer() { - Players players = new Players().add(PLAYER_NAME).add(JADE).nextPlayer().nextPlayer(); - assertThat(players.getCurrentPlayer().getName()).isEqualTo(PLAYER_NAME); - } - - @Test - void shouldUpdateCurrentPlayer() { - Players players = new Players().add(PLAYER_NAME); - Player currentPlayer = player().addCoin().inPenaltyBox(); - - currentPlayer = players.updateCurrentPlayer(currentPlayer).getCurrentPlayer(); - assertThat(currentPlayer.getPurse()).isEqualTo(1); - assertThat(currentPlayer.isInPenaltyBox()).isTrue(); - } - - private Player player() { - return new Player(PLAYER_NAME, 0); - } + static final String PLAYER_NAME = "Julie"; + private static final String JADE = "Jade"; + + @Test + void shouldAddPlayer() { + Player player = new Players().add(PLAYER_NAME).get(0); + assertThat(player.getName()).isEqualTo(PLAYER_NAME); + assertThat(player.getOrder()).isEqualTo(0); + } + + @Test + void shouldGetHowManyPlayers() { + Players players = new Players().add(PLAYER_NAME); + + assertThat(players.howManyPlayers()).isEqualTo(1); + } + + @Test + void shouldGetCurrentPlayer() { + Players players = new Players().add(PLAYER_NAME).add(JADE).nextPlayer(); + assertThat(players.getCurrentPlayer().getName()).isEqualTo(JADE); + } + + @Test + void shouldGetFirstPlayerWhenNoNextPlayer() { + Players players = new Players().add(PLAYER_NAME).add(JADE).nextPlayer().nextPlayer(); + assertThat(players.getCurrentPlayer().getName()).isEqualTo(PLAYER_NAME); + } + + @Test + void shouldUpdateCurrentPlayer() { + Players players = new Players().add(PLAYER_NAME); + Player currentPlayer = player().addCoin().inPenaltyBox(); + + currentPlayer = players.updateCurrentPlayer(currentPlayer).getCurrentPlayer(); + assertThat(currentPlayer.getPurse()).isEqualTo(1); + assertThat(currentPlayer.isInPenaltyBox()).isTrue(); + } + + private Player player() { + return new Player(PLAYER_NAME, 0); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/QuestionUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/QuestionUnitTest.java index 7a2d8f58c8f84130c58b1ed754e9a0fb8e49a44c..61ce329b88b9d0f875a962810326eb0b5ad2ecfc 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/QuestionUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/QuestionUnitTest.java @@ -1,23 +1,24 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Test; + public class QuestionUnitTest { - @Test - public void shouldCreateQuestion() { - assertThat(new Question(Category.POP, 0)).isNotNull(); - } - @Test - public void shouldGetMessageForPopCategory() { - Question question = new Question(Category.POP, 0); - assertThat(question.getMessage()).isEqualTo("Pop Question 0"); - } + @Test + public void shouldCreateQuestion() { + assertThat(new Question(Category.POP, 0)).isNotNull(); + } + + @Test + public void shouldGetMessageForPopCategory() { + Question question = new Question(Category.POP, 0); + assertThat(question.getMessage()).isEqualTo("Pop Question 0"); + } - @Test - public void shouldGetMessageScienceCategory() { - assertThat(new Question(Category.SCIENCE, 1).getMessage()).isEqualTo("Science Question 1"); - } + @Test + public void shouldGetMessageScienceCategory() { + assertThat(new Question(Category.SCIENCE, 1).getMessage()).isEqualTo("Science Question 1"); + } } diff --git a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/TurnUnitTest.java b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/TurnUnitTest.java index 88d009c694b6aaf9dd988edb7d183270c5f5f53c..a1635fbf54f5c426b14c650f468bd8df18b99ddc 100755 --- a/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/TurnUnitTest.java +++ b/ugly-trivia/src/test/java/com/adaptionsoft/games/uglytrivia/TurnUnitTest.java @@ -1,77 +1,77 @@ package com.adaptionsoft.games.uglytrivia; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import org.junit.jupiter.api.Test; + public class TurnUnitTest { - static final int BOARD_LIMIT = 12; - - public static final String PLAYER_NAME = "Julie"; - private final Notifications notifications = mock(Notifications.class); - private final Dice dice = mock(Dice.class); - private final Turn turn = turn(); - - @Test - public void shouldPlayClassicTurn() { - int roll = 1; - when(dice.roll()).thenReturn(roll); - Player player = turn.tryToPlay(player()); - - assertThat(player.getPosition()).isEqualTo(1); - assertThat(player.isInPenaltyBox()).isFalse(); - - verify(notifications).roll(roll); - verify(notifications).currentPlayer(PLAYER_NAME); - verify(notifications).newLocation(PLAYER_NAME, roll); - verify(notifications).currentCategory(Category.SCIENCE.getCategory()); - - verify(notifications, never()).gettingOutOfPenaltyBox(PLAYER_NAME); - } - - @Test - public void shouldGettingOutOfPenaltyBox() { - int roll = 1; - when(dice.roll()).thenReturn(roll); - Player player = player(); - player = player.inPenaltyBox(); - - player = turn.tryToPlay(player); - - assertThat(player.isInPenaltyBox()).isFalse(); - - verify(notifications).gettingOutOfPenaltyBox(PLAYER_NAME); - verify(notifications).newLocation(PLAYER_NAME, roll); - verify(notifications).currentCategory(Category.SCIENCE.getCategory()); - } - - @Test - public void shouldNotGettingOutOfPenaltyBox() { - int roll = 2; - when(dice.roll()).thenReturn(roll); - Player player = player(); - player = player.inPenaltyBox(); - - player = turn.tryToPlay(player); - assertThat(player.isInPenaltyBox()).isTrue(); - verify(notifications).notGettingOutOfPenaltyBox(PLAYER_NAME); - } - - @Test - public void shouldResetPosition() { - when(dice.roll()).thenReturn(13); - Player player = turn.tryToPlay(player()); - - assertThat(player.getPosition()).isEqualTo(1); - verify(notifications).newLocation(PLAYER_NAME, 1); - } - - private Turn turn() { - return new Turn(notifications, new Board(BOARD_LIMIT), dice); - } - - private Player player() { - return new Player(PLAYER_NAME, 0); - } + static final int BOARD_LIMIT = 12; + + public static final String PLAYER_NAME = "Julie"; + private final Notifications notifications = mock(Notifications.class); + private final Dice dice = mock(Dice.class); + private final Turn turn = turn(); + + @Test + public void shouldPlayClassicTurn() { + int roll = 1; + when(dice.roll()).thenReturn(roll); + Player player = turn.tryToPlay(player()); + + assertThat(player.getPosition()).isEqualTo(1); + assertThat(player.isInPenaltyBox()).isFalse(); + + verify(notifications).roll(roll); + verify(notifications).currentPlayer(PLAYER_NAME); + verify(notifications).newLocation(PLAYER_NAME, roll); + verify(notifications).currentCategory(Category.SCIENCE.getCategory()); + + verify(notifications, never()).gettingOutOfPenaltyBox(PLAYER_NAME); + } + + @Test + public void shouldGettingOutOfPenaltyBox() { + int roll = 1; + when(dice.roll()).thenReturn(roll); + Player player = player(); + player = player.inPenaltyBox(); + + player = turn.tryToPlay(player); + + assertThat(player.isInPenaltyBox()).isFalse(); + + verify(notifications).gettingOutOfPenaltyBox(PLAYER_NAME); + verify(notifications).newLocation(PLAYER_NAME, roll); + verify(notifications).currentCategory(Category.SCIENCE.getCategory()); + } + + @Test + public void shouldNotGettingOutOfPenaltyBox() { + int roll = 2; + when(dice.roll()).thenReturn(roll); + Player player = player(); + player = player.inPenaltyBox(); + + player = turn.tryToPlay(player); + assertThat(player.isInPenaltyBox()).isTrue(); + verify(notifications).notGettingOutOfPenaltyBox(PLAYER_NAME); + } + + @Test + public void shouldResetPosition() { + when(dice.roll()).thenReturn(13); + Player player = turn.tryToPlay(player()); + + assertThat(player.getPosition()).isEqualTo(1); + verify(notifications).newLocation(PLAYER_NAME, 1); + } + + private Turn turn() { + return new Turn(notifications, new Board(BOARD_LIMIT), dice); + } + + private Player player() { + return new Player(PLAYER_NAME, 0); + } }