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 static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Collections; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; import org.junit.Test; import com.flexpoker.game.command.aggregate.TableBalancer; import com.flexpoker.game.command.events.TableRemovedEvent; import com.flexpoker.game.command.framework.GameEvent; public class TableBalancerRemoveTableTest { @Test public void testSubjectTableIsEmpty() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 0, 2); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 2); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertEquals(TableRemovedEvent.class, event.get().getClass()); assertEquals(subjectTableId, ((TableRemovedEvent) event.get()).getTableId()); } @Test public void testSingleOtherEmptyTable() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 2, 0); 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.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertEquals(TableRemovedEvent.class, event.get().getClass()); assertEquals(otherTableId, ((TableRemovedEvent) event.get()).getTableId()); } @Test public void testMultipleOtherEmptyTables() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 2, 0, 0); Set<UUID> otherTableIds = tableToPlayersMap.keySet().stream() .filter(x -> !x.equals(subjectTableId)) .collect(Collectors.toSet()); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 2); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertEquals(TableRemovedEvent.class, event.get().getClass()); assertTrue(otherTableIds .contains(((TableRemovedEvent) event.get()).getTableId())); } @Test public void testNoEmptyOtherwiseBalancedTables() { UUID subjectTableId = UUID.randomUUID(); Map<UUID, Set<UUID>> tableToPlayersMap = createTableToPlayersMap( subjectTableId, 2, 2); TableBalancer tableBalancer = new TableBalancer(UUID.randomUUID(), 2); Optional<GameEvent> event = tableBalancer.createSingleBalancingEvent(1, subjectTableId, Collections.emptySet(), tableToPlayersMap, createDefaultChipMapForSubjectTable(subjectTableId, tableToPlayersMap)); assertFalse(event.isPresent()); } }