package com.flexpoker.game.command.aggregate.tablebalancer;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TableBalancerTestUtils {
/**
* Helper method to create a set of table to player maps. The subject
* table/number of players is treated specially in order to keep some
* control over the tests.
*
* @param subjectTableId
* @param numberOfPlayersAtEachTable
* @return
*/
public static Map<UUID, Set<UUID>> createTableToPlayersMap(
UUID subjectTableId, int numberOfSubjectTablePlayers,
int... numberOfPlayersAtOtherTables) {
Map<UUID, Set<UUID>> tableToPlayersMap = new HashMap<>();
tableToPlayersMap.put(subjectTableId,
createRandomSetOfPlayerIds(numberOfSubjectTablePlayers));
for (int i = 0; i < numberOfPlayersAtOtherTables.length; i++) {
tableToPlayersMap.put(UUID.randomUUID(), createRandomSetOfPlayerIds(
numberOfPlayersAtOtherTables[i]));
}
return tableToPlayersMap;
}
private static Set<UUID> createRandomSetOfPlayerIds(int numberOfPlayers) {
return Stream.iterate(0, e -> e + 1).limit(numberOfPlayers)
.map(x -> UUID.randomUUID()).collect(Collectors.toSet());
}
public static Map<UUID, Integer> createDefaultChipMapForSubjectTable(
UUID subjectTableId, Map<UUID, Set<UUID>> tableToPlayersMap) {
return tableToPlayersMap.get(subjectTableId).stream()
.collect(Collectors.toMap(x -> x, x -> 100));
}
}