package com.flexpoker.table.command.aggregate.testhelpers; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; import com.flexpoker.model.HandRanking; import com.flexpoker.model.card.Card; import com.flexpoker.model.card.CardRank; import com.flexpoker.model.card.CardsUsedInHand; import com.flexpoker.model.card.PocketCards; import com.flexpoker.table.command.aggregate.DefaultTableFactory; import com.flexpoker.table.command.aggregate.HandEvaluation; import com.flexpoker.table.command.aggregate.Table; import com.flexpoker.table.command.commands.CreateTableCommand; import com.flexpoker.table.command.events.HandDealtEvent; import com.flexpoker.table.command.events.TableCreatedEvent; import com.flexpoker.test.util.datageneration.CardGenerator; import com.flexpoker.test.util.datageneration.DeckGenerator; public class TableTestUtils { public static Table createBasicTable(UUID tableId, UUID... playerIdsArray) { Set<UUID> playerIds = new HashSet<>(Arrays.asList(playerIdsArray)); CreateTableCommand command = new CreateTableCommand(tableId, UUID.randomUUID(), playerIds, 6); return new DefaultTableFactory().createNew(command); } public static Table createBasicTableAndStartHand(UUID tableId, UUID... playerIdsArray) { Set<UUID> playerIds = new HashSet<>(Arrays.asList(playerIdsArray)); int smallBlind = 10; int bigBlind = 20; List<Card> shuffledDeckOfCards = new ArrayList<>(); CardsUsedInHand cardsUsedInHand = DeckGenerator.createDeck(); HandEvaluation handEvaluation1 = new HandEvaluation(); handEvaluation1.setPlayerId(playerIdsArray[0]); handEvaluation1.setHandRanking(HandRanking.FLUSH); handEvaluation1.setPrimaryCardRank(CardRank.KING); HandEvaluation handEvaluation2 = new HandEvaluation(); handEvaluation2.setPlayerId(playerIdsArray[1]); handEvaluation2.setHandRanking(HandRanking.STRAIGHT); handEvaluation2.setPrimaryCardRank(CardRank.KING); Map<PocketCards, HandEvaluation> handEvaluations = new HashMap<>(); handEvaluations.put(CardGenerator.createPocketCards1(), handEvaluation1); handEvaluations.put(CardGenerator.createPocketCards2(), handEvaluation2); CreateTableCommand command = new CreateTableCommand(tableId, UUID.randomUUID(), playerIds, 6); Table table = new DefaultTableFactory().createNew(command); table.startNewHandForNewGame(smallBlind, bigBlind, shuffledDeckOfCards, cardsUsedInHand, handEvaluations); return table; } public static UUID fetchIdForButton(TableCreatedEvent tableCreatedEvent, HandDealtEvent handDealtEvent) { Map<Integer, UUID> seatPositionToPlayerIdMap = tableCreatedEvent .getSeatPositionToPlayerMap(); return seatPositionToPlayerIdMap.get(handDealtEvent.getButtonOnPosition()); } public static UUID fetchIdForSmallBlind(TableCreatedEvent tableCreatedEvent, HandDealtEvent handDealtEvent) { Map<Integer, UUID> seatPositionToPlayerIdMap = tableCreatedEvent .getSeatPositionToPlayerMap(); return seatPositionToPlayerIdMap.get(handDealtEvent.getSmallBlindPosition()); } public static UUID fetchIdForBigBlind(TableCreatedEvent tableCreatedEvent, HandDealtEvent handDealtEvent) { Map<Integer, UUID> seatPositionToPlayerIdMap = tableCreatedEvent .getSeatPositionToPlayerMap(); return seatPositionToPlayerIdMap.get(handDealtEvent.getBigBlindPosition()); } }