package com.cardshifter.core.issues; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.cardshifter.modapi.base.ECSGame; import com.cardshifter.modapi.base.Entity; import com.cardshifter.modapi.cards.DeckComponent; import com.cardshifter.modapi.cards.DrawStartCards; import com.cardshifter.modapi.cards.HandComponent; import com.cardshifter.modapi.cards.LimitedHandSizeSystem; public class Issue11Test { @Test public void handLimit() { ECSGame game = new ECSGame(); Entity owner = game.newEntity(); DeckComponent deck = new DeckComponent(owner); HandComponent hand = new HandComponent(owner); owner.addComponents(deck, hand); List<Entity> cards = new ArrayList<>(); for (int i = 0; i < 20; i++) { Entity newCard = game.newEntity(); deck.addOnBottom(newCard); cards.add(newCard); } List<Entity> denied = new ArrayList<>(); game.addSystem(new LimitedHandSizeSystem(5, event -> denied.add(event.getCardToDraw()))); game.startGame(); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); assertTrue("A card has been denied prematurely", denied.isEmpty()); DrawStartCards.drawCard(owner); assertEquals("Card was not denied", 1, denied.size()); assertEquals("Unexpected card was denied", cards.get(5), denied.get(0)); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); DrawStartCards.drawCard(owner); assertEquals("Cards has not been denied", 4, denied.size()); } }