package com.flexpoker.table.command.aggregate.pot; import static com.flexpoker.table.command.aggregate.pot.PotTestUtils.createBasicPotHandler; import static com.flexpoker.test.util.CommonAssertions.verifyNumberOfEventsAndEntireOrderByType; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; 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 org.junit.Test; import com.flexpoker.table.command.events.PotAmountIncreasedEvent; import com.flexpoker.table.command.events.PotClosedEvent; import com.flexpoker.table.command.events.PotCreatedEvent; import com.flexpoker.table.command.framework.TableEvent; public class CalculatePotsPotHandlerTest { @Test public void testTwoPlayersSameBet() { UUID player1 = UUID.randomUUID(); UUID player2 = UUID.randomUUID(); PotHandler potHandler = createBasicPotHandler(player1, player2); Map<UUID, Integer> chipsInFrontMap = new HashMap<>(); chipsInFrontMap.put(player1, 10); chipsInFrontMap.put(player2, 10); Map<UUID, Integer> chipsInBackMap = new HashMap<>(); chipsInBackMap.put(player1, 1490); chipsInBackMap.put(player2, 1490); Set<UUID> playersStillInHand = new HashSet<>(); playersStillInHand.add(player1); playersStillInHand.add(player2); List<TableEvent> potEvents = potHandler.calculatePots(1, chipsInFrontMap, chipsInBackMap, playersStillInHand); verifyNumberOfEventsAndEntireOrderByType(potEvents, PotCreatedEvent.class, PotAmountIncreasedEvent.class); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPotId() .equals(((PotAmountIncreasedEvent) potEvents.get(1)).getPotId())); assertEquals(20, ((PotAmountIncreasedEvent) potEvents.get(1)).getAmountIncreased()); } @Test public void testTwoPlayerDifferentBets() { UUID player1 = UUID.randomUUID(); UUID player2 = UUID.randomUUID(); PotHandler potHandler = createBasicPotHandler(player1, player2); Map<UUID, Integer> chipsInFrontMap = new HashMap<>(); chipsInFrontMap.put(player1, 10); chipsInFrontMap.put(player2, 20); Map<UUID, Integer> chipsInBackMap = new HashMap<>(); chipsInBackMap.put(player1, 1490); chipsInBackMap.put(player2, 1480); Set<UUID> playersStillInHand = new HashSet<>(); playersStillInHand.add(player1); playersStillInHand.add(player2); List<TableEvent> potEvents = potHandler.calculatePots(1, chipsInFrontMap, chipsInBackMap, playersStillInHand); verifyNumberOfEventsAndEntireOrderByType(potEvents, PotCreatedEvent.class, PotAmountIncreasedEvent.class, PotAmountIncreasedEvent.class); assertEquals(20, ((PotAmountIncreasedEvent) potEvents.get(1)).getAmountIncreased()); assertEquals(10, ((PotAmountIncreasedEvent) potEvents.get(2)).getAmountIncreased()); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPotId() .equals(((PotAmountIncreasedEvent) potEvents.get(1)).getPotId())); } @Test public void testTwoPlayerOneAllIn() { UUID player1 = UUID.randomUUID(); UUID player2 = UUID.randomUUID(); PotHandler potHandler = createBasicPotHandler(player1, player2); Map<UUID, Integer> chipsInFrontMap = new HashMap<>(); chipsInFrontMap.put(player1, 1000); chipsInFrontMap.put(player2, 20); Map<UUID, Integer> chipsInBackMap = new HashMap<>(); chipsInBackMap.put(player1, 500); chipsInBackMap.put(player2, 0); Set<UUID> playersStillInHand = new HashSet<>(); playersStillInHand.add(player1); playersStillInHand.add(player2); List<TableEvent> potEvents = potHandler.calculatePots(1, chipsInFrontMap, chipsInBackMap, playersStillInHand); verifyNumberOfEventsAndEntireOrderByType(potEvents, PotCreatedEvent.class, PotAmountIncreasedEvent.class, PotClosedEvent.class, PotCreatedEvent.class, PotAmountIncreasedEvent.class); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPlayersInvolved().contains(player1)); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPlayersInvolved().contains(player2)); assertEquals(40, ((PotAmountIncreasedEvent) potEvents.get(1)).getAmountIncreased()); assertTrue(((PotCreatedEvent) potEvents.get(3)).getPlayersInvolved().contains(player1)); assertFalse(((PotCreatedEvent) potEvents.get(3)).getPlayersInvolved().contains(player2)); assertEquals(980, ((PotAmountIncreasedEvent) potEvents.get(4)).getAmountIncreased()); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPotId() .equals(((PotAmountIncreasedEvent) potEvents.get(1)).getPotId())); } @Test public void testTwoPlayerChipAndAChair() { UUID player1 = UUID.randomUUID(); UUID player2 = UUID.randomUUID(); PotHandler potHandler = createBasicPotHandler(player1, player2); Map<UUID, Integer> chipsInFrontMap = new HashMap<>(); chipsInFrontMap.put(player1, 2); chipsInFrontMap.put(player2, 1); Map<UUID, Integer> chipsInBackMap = new HashMap<>(); chipsInBackMap.put(player1, 1499); chipsInBackMap.put(player2, 0); Set<UUID> playersStillInHand = new HashSet<>(); playersStillInHand.add(player1); playersStillInHand.add(player2); List<TableEvent> potEvents = potHandler.calculatePots(1, chipsInFrontMap, chipsInBackMap, playersStillInHand); verifyNumberOfEventsAndEntireOrderByType(potEvents, PotCreatedEvent.class, PotAmountIncreasedEvent.class, PotClosedEvent.class, PotCreatedEvent.class, PotAmountIncreasedEvent.class); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPlayersInvolved().contains(player1)); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPlayersInvolved().contains(player2)); assertEquals(2, ((PotAmountIncreasedEvent) potEvents.get(1)).getAmountIncreased()); assertTrue(((PotCreatedEvent) potEvents.get(3)).getPlayersInvolved().contains(player1)); assertFalse(((PotCreatedEvent) potEvents.get(3)).getPlayersInvolved().contains(player2)); assertEquals(1, ((PotAmountIncreasedEvent) potEvents.get(4)).getAmountIncreased()); assertTrue(((PotCreatedEvent) potEvents.get(0)).getPotId() .equals(((PotAmountIncreasedEvent) potEvents.get(1)).getPotId())); } }