package com.flexpoker.game.command.aggregate.tablebalancer;
import static com.flexpoker.game.command.aggregate.tablebalancer.TableBalancerTestUtils.createDefaultChipMapForSubjectTable;
import static com.flexpoker.game.command.aggregate.tablebalancer.TableBalancerTestUtils.createTableToPlayersMap;
import static org.junit.Assert.assertEquals;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import org.junit.Test;
import com.flexpoker.game.command.aggregate.TableBalancer;
import com.flexpoker.game.command.events.TableResumedAfterBalancingEvent;
import com.flexpoker.game.command.framework.GameEvent;
public class TableBalancerResumedTableTest {
@Test
public void testOneBalancedTableThatIsPaused() {
UUID subjectTableId = UUID.randomUUID();
Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap(
subjectTableId, 2);
TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 2);
Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1,
subjectTableId, Collections.singleton(subjectTableId),
tableToPlayersMap, createDefaultChipMapForSubjectTable(
subjectTableId, tableToPlayersMap));
assertEquals(TableResumedAfterBalancingEvent.class,
event.get().getClass());
assertEquals(subjectTableId,
((TableResumedAfterBalancingEvent) event.get()).getTableId());
}
@Test
public void testTwoBalancedTablesOnePaused() {
UUID subjectTableId = UUID.randomUUID();
Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap(
subjectTableId, 8, 8);
UUID otherTableId = tableToPlayersMap.keySet().stream()
.filter(x -> !x.equals(subjectTableId)).findFirst().get();
TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 9);
Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1,
subjectTableId, Collections.singleton(otherTableId),
tableToPlayersMap, createDefaultChipMapForSubjectTable(
subjectTableId, tableToPlayersMap));
assertEquals(TableResumedAfterBalancingEvent.class,
event.get().getClass());
assertEquals(otherTableId,
((TableResumedAfterBalancingEvent) event.get()).getTableId());
}
}