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.PlayerMovedToNewTableEvent; import com.flexpoker.game.command.framework.GameEvent; public class TableBalancerMergeTablesTest { @Test public void testTwoTablesOneAlreadyPaused() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 1, 1); UUID otherTableId = tableToPlayersMap.keySet().stream() .filter(x -> !x.equals(subjectTableId)).findFirst().get(); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 2); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.singleton(otherTableId), tableToPlayersMap, createDefaultChipMapForSubjectTable( subjectTableId, tableToPlayersMap)); assertEquals(PlayerMovedToNewTableEvent.class, event.get().getClass()); assertEquals(subjectTableId, ((PlayerMovedToNewTableEvent) event.get()).getFromTableId()); } @Test public void testTwoTablesReadyToMerge() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 1, 2); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 3); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertEquals(PlayerMovedToNewTableEvent.class, event.get().getClass()); assertEquals(subjectTableId, ((PlayerMovedToNewTableEvent) event.get()).getFromTableId()); } @Test public void testThreeTablesReadyToMerge() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 1, 3, 2); UUID smallestOtherTableId = tableToPlayersMap.entrySet().stream() .filter(x -> x.getValue().size() == 2).findFirst().get() .getKey(); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 3); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertEquals(PlayerMovedToNewTableEvent.class, event.get().getClass()); assertEquals(subjectTableId, ((PlayerMovedToNewTableEvent) event.get()).getFromTableId()); assertEquals(smallestOtherTableId, ((PlayerMovedToNewTableEvent) event.get()).getToTableId()); } }