205 lines
9.3 KiB
Java
205 lines
9.3 KiB
Java
package Server;
|
|
|
|
import Server.Cards.BuildingCard;
|
|
|
|
import Server.Cards.CardDeck;
|
|
import Server.Cards.CharacterCard;
|
|
import Server.Cards.EventCard;
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
class BuildingManagerTest {
|
|
|
|
static List<Player> players = new ArrayList<>();
|
|
|
|
@BeforeAll
|
|
static void setUp(){
|
|
BuildingManager buildingManager = new BuildingManager();
|
|
|
|
Player winner = new Player("Winner", TotemColor.YELLOW);
|
|
winner.addFood(10);
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;1;2;I;SHAMAN;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;2;2;I;SHAMAN;2;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;3;2;I;BUILDER;3;1"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;12;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;13;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;12;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;13;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;12;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;13;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;12;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;13;3;I;GATHERER;3;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;14;0;I;ARTIST;0;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;15;0;I;ARTIST;0;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;21;0;I;ARTIST;1;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;22;0;I;INVENTOR;9;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;23;4;I;INVENTOR;5;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;43;0;I;HUNTER;0;0"));
|
|
winner.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;44;3;I;HUNTER;0;0"));
|
|
players.add(winner);
|
|
|
|
Player medium = new Player("Medium", TotemColor.RED);
|
|
medium.addFood(10);
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;56;2;I;SHAMAN;3;0"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;34;2;I;BUILDER;3;1"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;32;3;I;GATHERER;3;0"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;33;0;I;ARTIST;0;0"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;45;3;I;HUNTER;0;0"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;72;0;I;ARTIST;9;0"));
|
|
medium.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;73;4;I;INVENTOR;5;0"));
|
|
players.add(medium);
|
|
|
|
Player loser = new Player("Loser", TotemColor.BLUE);
|
|
loser.addFood(2);
|
|
loser.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;54;2;I;SHAMAN;3;0"));
|
|
loser.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;36;2;I;BUILDER;3;1"));
|
|
loser.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;82;0;I;INVENTOR;9;0"));
|
|
loser.getPlayerTribe().addCharacter(CharacterCard.parsRow("C;93;4;I;INVENTOR;5;0"));
|
|
players.add(loser);
|
|
|
|
CardDeck cardDeck = new CardDeck();
|
|
//cardDeck.setForNPlayerPath("./src/test/resources/files/only_building_deck.csv", 5);
|
|
cardDeck.setForNPlayer(BuildingManagerTest.class.getResourceAsStream("/files/only_building_deck.csv"), 4);
|
|
//for(BuildingCard c: cardDeck.drawBuilding(30)){
|
|
// buildingManager.addActiveBuilding(c, players.getFirst());
|
|
//}
|
|
//buildingManager.addActiveBuilding(BuildingCard.parsRow("B;5;3;III;6;2;SHAMAN_NO_LOSS"), players.get(2));
|
|
}
|
|
|
|
@Test
|
|
void foodForSix() {
|
|
int initialFood = players.getFirst().getFoodTokens();
|
|
CharacterCard cardForSix = CharacterCard.parsRow("C;39;2;I;BUILDER;3;1");
|
|
BuildingManager.foodForSix(players.getFirst(), cardForSix);
|
|
assertEquals(initialFood + 6, players.getFirst().getFoodTokens());
|
|
|
|
players.getFirst().getPlayerTribe().addCharacter(cardForSix);
|
|
BuildingManager.foodForSix(players.getFirst(), cardForSix);
|
|
assertEquals(initialFood + 6, players.getFirst().getFoodTokens());
|
|
}
|
|
|
|
@Test
|
|
void sustainDiscount() {
|
|
|
|
EventCard sustainment = EventCard.parsRow("E;1;0;I;SUSTAINMENT;2;0");
|
|
ArrayList<Integer> target = new ArrayList<>();
|
|
target.add(players.getFirst().getFoodTokens());
|
|
target.add(players.getFirst().getPrestigePoints());
|
|
target.add(players.get(1).getFoodTokens() - 4);
|
|
target.add(players.get(1).getPrestigePoints());
|
|
target.add(0);
|
|
target.add(players.get(2).getPrestigePoints()-4);
|
|
assertEquals(target, EventsSolver.sustainment(sustainment, players));
|
|
}
|
|
|
|
@Test
|
|
void shamanicBuildings() {
|
|
EventCard shamanicRitual = EventCard.parsRow("E;1;0;I;SHAMANIC_RITUAL;10;5");
|
|
ArrayList<Integer> target = new ArrayList<>();
|
|
target.add(players.getFirst().getPrestigePoints() + 20);
|
|
target.add(players.get(1).getPrestigePoints()-5);
|
|
target.add(players.get(2).getPrestigePoints());
|
|
assertEquals(target, EventsSolver.shamanicRitual(shamanicRitual, players));
|
|
}
|
|
|
|
@Test
|
|
void bonusEndTurn() {
|
|
assertEquals(1, BuildingManager.bonusEndTurn(players.getFirst(), 1));
|
|
assertEquals(0, BuildingManager.bonusEndTurn(players.getFirst(), 0));
|
|
assertEquals(0, BuildingManager.bonusEndTurn(players.getFirst(), -1));
|
|
}
|
|
|
|
@Test
|
|
void foodPerInventors() {
|
|
int initialFood = players.getFirst().getFoodTokens();
|
|
CharacterCard builder = CharacterCard.parsRow("C;57;2;I;INVENTOR;9;0");
|
|
BuildingManager.foodPerInventors(players.getFirst(), builder);
|
|
assertEquals(initialFood + 3, players.getFirst().getFoodTokens());
|
|
|
|
players.getFirst().getPlayerTribe().addCharacter(builder);
|
|
BuildingManager.foodPerInventors(players.getFirst(), builder);
|
|
assertEquals(initialFood+3, players.getFirst().getFoodTokens());
|
|
|
|
initialFood = players.get(2).getFoodTokens();
|
|
BuildingManager.foodPerInventors(players.get(2), builder);
|
|
assertEquals(initialFood, players.get(2).getFoodTokens());
|
|
}
|
|
|
|
@Test
|
|
void shamanBonus() {
|
|
assertEquals(3, BuildingManager.shamanBonus(players.getFirst()));
|
|
assertEquals(0, BuildingManager.shamanBonus(players.get(1)));
|
|
}
|
|
|
|
@Test
|
|
void hunterBonus() {
|
|
EventCard hunt = EventCard.parsRow("E;1;0;I;HUNT;2;0");
|
|
ArrayList<Integer> target = new ArrayList<>();
|
|
target.add(players.getFirst().getFoodTokens()+4);
|
|
target.add(players.getFirst().getPrestigePoints()+6);
|
|
target.add(players.get(1).getFoodTokens()+1);
|
|
target.add(players.get(1).getPrestigePoints()+2);
|
|
target.add(players.get(2).getFoodTokens());
|
|
target.add(players.get(2).getPrestigePoints());
|
|
assertEquals(target, EventsSolver.hunt(hunt, players));
|
|
}
|
|
|
|
@Test
|
|
void endgameBuilderBonus() {
|
|
}
|
|
|
|
@Test
|
|
void paintingFoodBonus() {
|
|
int winnerInitial = players.getFirst().getFoodTokens();
|
|
int middleInitial = players.get(1).getFoodTokens();
|
|
|
|
EventCard cavePainting = EventCard.parsRow("E;4;4;FINAL;CAVE_PAINTINGS;2;2");
|
|
EventsSolver.cavePaintings(cavePainting, players);
|
|
assertEquals(winnerInitial + 3 , players.getFirst().getFoodTokens());
|
|
assertEquals(middleInitial, players.get(1).getFoodTokens());
|
|
}
|
|
|
|
@Test
|
|
void endgameForSix() {
|
|
int winnerInitial = players.getFirst().getPrestigePoints();
|
|
int middleInitial = players.get(1).getPrestigePoints();
|
|
|
|
BuildingManager.endgameForSix(players.getFirst());
|
|
BuildingManager.endgameForSix(players.get(1));
|
|
assertEquals(winnerInitial + 6 , players.getFirst().getPrestigePoints());
|
|
assertEquals(middleInitial, players.get(1).getPrestigePoints());
|
|
}
|
|
|
|
@Test
|
|
void endgameBonusCharacter() {
|
|
int winnerInitial = players.getFirst().getPrestigePoints();
|
|
int middleInitial = players.get(1).getPrestigePoints();
|
|
|
|
BuildingManager.endgameBonusCharacter(players.getFirst());
|
|
BuildingManager.endgameBonusCharacter(players.get(1));
|
|
assertEquals(winnerInitial + 9 , players.getFirst().getPrestigePoints());
|
|
assertEquals(middleInitial, players.get(1).getPrestigePoints());
|
|
}
|
|
|
|
@Test
|
|
void extraDraw() {
|
|
assertTrue(BuildingManager.extraDraw(players.getFirst()));
|
|
assertFalse(BuildingManager.extraDraw(players.get(1)));
|
|
}
|
|
|
|
@Test
|
|
void endgameBonusPoints() {
|
|
int initialWinner = players.getFirst().getPrestigePoints();
|
|
int initialMedium = players.get(1).getPrestigePoints();
|
|
|
|
BuildingManager.endgameBonusPoints(players.getFirst());
|
|
BuildingManager.endgameBonusPoints(players.get(1));
|
|
assertEquals(initialWinner+25, players.getFirst().getPrestigePoints());
|
|
assertEquals(initialMedium, players.get(1).getPrestigePoints());
|
|
}
|
|
} |