Merge pull request #6 from rubenpirreram/OrderTest-Fix

Fix: OrderTests
This commit is contained in:
rubenpirreram
2026-04-03 12:57:06 +02:00
committed by GitHub
4 changed files with 853 additions and 158 deletions
@@ -1,55 +1,141 @@
package it.polimi.ingsw.gc14.Model.Orders; package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Player; import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.NoSuchElementException;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
class Order2Test { class Order2Test {
@Test @Test
void effectZero() { void firstReturnGetsFood() {
Player p = new Player("p1"); Player p1 = new Player("p1");
Order2 order = new Order2(new ArrayList<>()); Player p2 = new Player("p2");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
Player secondToAct = order.pull();
order.effect(p, 0); int initialFood = firstToAct.getFoodValue();
order.push(firstToAct);
assertEquals(initialFood + 1, p.getFoodValue()); assertEquals(initialFood + 1, firstToAct.getFoodValue());
assertEquals(firstToAct, order.getFirst());
} }
@Test @Test
void effectOneWithFood() { void secondReturnPaysFood() {
Player p = new Player("p1"); Player p1 = new Player("p1");
Order2 order = new Order2(new ArrayList<>()); Player p2 = new Player("p2");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
p.addFood(1); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
order.effect(p, 1); secondToAct.addFood(1);
int initialPrestige = secondToAct.getPrestigeValue();
assertEquals(0, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
assertEquals(0, secondToAct.getFoodValue());
assertEquals(initialPrestige, secondToAct.getPrestigeValue());
} }
@Test @Test
void effectOneWithoutFood() { void secondReturnLosesPrestige() {
Player p = new Player("p1"); Player p1 = new Player("p1");
Order2 order = new Order2(new ArrayList<>()); Player p2 = new Player("p2");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
p.addPrestige(3); Player firstToAct = order.pull();
Player secondToAct = order.pull();
order.effect(p, 1); secondToAct.addPrestige(3);
assertEquals(0, p.getFoodValue()); order.push(firstToAct);
assertEquals(1, p.getPrestigeValue()); order.push(secondToAct);
assertEquals(0, secondToAct.getFoodValue());
assertEquals(1, secondToAct.getPrestigeValue());
} }
@Test @Test
void effectWrongIndexHigh() { void firstReturnWithBuilding() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
Player firstToAct = order.pull();
order.pull();
firstToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
assertEquals(2, firstToAct.getFoodValue());
}
@Test
void thirdPlayerThrows() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
order.pull();
order.pull();
order.push(p1);
order.push(p2);
assertThrows(IndexOutOfBoundsException.class, () -> order.push(p3));
}
@Test
void constructorLoadsPlayers() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
Order2 order = new Order2(players);
Player firstOut = order.pull();
Player secondOut = order.pull();
assertTrue((firstOut == p1 && secondOut == p2) || (firstOut == p2 && secondOut == p1));
assertThrows(NoSuchElementException.class, order::pull);
}
@Test
void wrongIndexLow() {
Player p = new Player("p1");
Order2 order = new Order2(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
}
@Test
void wrongIndexHigh() {
Player p = new Player("p1"); Player p = new Player("p1");
Order2 order = new Order2(new ArrayList<>()); Order2 order = new Order2(new ArrayList<>());
@@ -57,10 +143,15 @@ class Order2Test {
} }
@Test @Test
void effectWrongIndexLow() { void getFirst() {
Player p = new Player("p1"); Player p1 = new Player("p1");
Order2 order = new Order2(new ArrayList<>()); Order2 order = new Order2(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1)); assertNull(order.getFirst());
order.push(p1);
assertEquals(p1, order.getFirst());
assertEquals(p1, order.getFirst());
} }
} }
@@ -1,80 +1,209 @@
package it.polimi.ingsw.gc14.Model.Orders; package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Player; import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.NoSuchElementException;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
class Order3Test { class Order3Test {
@Test @Test
void effectZero() { void firstReturnGetsFood() {
Player p = new Player("Luca"); Player p1 = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
order.pull();
order.pull();
order.effect(p, 0); int initialFood = firstToAct.getFoodValue();
order.push(firstToAct);
assertEquals(initialFood + 2, p.getFoodValue()); assertEquals(initialFood + 2, firstToAct.getFoodValue());
assertEquals(firstToAct, order.getFirst());
} }
@Test @Test
void effectOne() { void secondReturnNoEffect() {
Player p = new Player("Mario"); Player p1 = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
order.pull();
order.effect(p, 1); int initialFood = secondToAct.getFoodValue();
int initialPrestige = secondToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
assertEquals(initialFood, secondToAct.getFoodValue());
assertEquals(initialPrestige, secondToAct.getPrestigeValue());
} }
@Test @Test
void effectTwoWithFood() { void thirdReturnPaysFoodAndLosesPrestige() {
Player p = new Player("Gabriele"); Player p1 = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
p.addFood(1); Player firstToAct = order.pull();
Player secondToAct = order.pull();
Player thirdToAct = order.pull();
order.effect(p, 2); thirdToAct.addFood(1);
assertEquals(0, p.getFoodValue()); order.push(firstToAct);
assertEquals(-2, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
assertEquals(0, thirdToAct.getFoodValue());
assertEquals(-2, thirdToAct.getPrestigeValue());
} }
@Test @Test
void effectTwoWithoutFood() { void thirdReturnWithoutFoodNoEffect() {
Player p = new Player("Giorgio"); Player p1 = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
order.effect(p, 2); int initialFood = thirdToAct.getFoodValue();
int initialPrestige = thirdToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
assertEquals(initialFood, thirdToAct.getFoodValue());
assertEquals(initialPrestige, thirdToAct.getPrestigeValue());
} }
@Test @Test
void effectWrongIndexHigh() { void firstReturnWithBuilding() {
Player p = new Player("Luca"); Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
Player firstToAct = order.pull();
order.pull();
order.pull();
firstToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
assertEquals(3, firstToAct.getFoodValue());
}
@Test
void fourthPlayerThrows() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
order.pull();
order.pull();
order.pull();
order.push(p1);
order.push(p2);
order.push(p3);
assertThrows(IndexOutOfBoundsException.class, () -> order.push(p4));
}
@Test
void constructorLoadsPlayers() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
Order3 order = new Order3(players);
Player firstOut = order.pull();
Player secondOut = order.pull();
Player thirdOut = order.pull();
assertTrue(firstOut == p1 || firstOut == p2 || firstOut == p3);
assertTrue(secondOut == p1 || secondOut == p2 || secondOut == p3);
assertTrue(thirdOut == p1 || thirdOut == p2 || thirdOut == p3);
assertNotEquals(firstOut, secondOut);
assertNotEquals(firstOut, thirdOut);
assertNotEquals(secondOut, thirdOut);
assertThrows(NoSuchElementException.class, order::pull);
}
@Test
void wrongIndexLow() {
Player p = new Player("p1");
Order3 order = new Order3(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
}
@Test
void wrongIndexHigh() {
Player p = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Order3 order = new Order3(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 3)); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 3));
} }
@Test @Test
void effectWrongIndexLow() { void getFirst() {
Player p = new Player("Luca"); Player p1 = new Player("p1");
Order3 order = new Order3(new ArrayList<>()); Order3 order = new Order3(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1)); assertNull(order.getFirst());
order.push(p1);
assertEquals(p1, order.getFirst());
assertEquals(p1, order.getFirst());
} }
} }
@@ -1,92 +1,291 @@
package it.polimi.ingsw.gc14.Model.Orders; package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Player; import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.NoSuchElementException;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
class Order4Test { class Order4Test {
@Test @Test
void effectZero() { void firstReturnGetsFood() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
order.pull();
order.pull();
order.pull();
order.effect(p, 0); int initialFood = firstToAct.getFoodValue();
order.push(firstToAct);
assertEquals(initialFood + 2, p.getFoodValue()); assertEquals(initialFood + 2, firstToAct.getFoodValue());
assertEquals(firstToAct, order.getFirst());
} }
@Test @Test
void effectOne() { void secondReturnGetsFood() {
Player p = new Player("Luca"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
Player secondToAct = order.pull();
order.pull();
order.pull();
order.effect(p, 1); int initialFood = secondToAct.getFoodValue();
assertEquals(initialFood + 1, p.getFoodValue()); order.push(firstToAct);
order.push(secondToAct);
assertEquals(initialFood + 1, secondToAct.getFoodValue());
} }
@Test @Test
void effectTwo() { void thirdReturnNoEffect() {
Player p = new Player("Antonio"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
order.pull();
order.effect(p, 2); int initialFood = thirdToAct.getFoodValue();
int initialPrestige = thirdToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
assertEquals(initialFood, thirdToAct.getFoodValue());
assertEquals(initialPrestige, thirdToAct.getPrestigeValue());
} }
@Test @Test
void effectThreeWithFood() { void fourthReturnPaysFoodAndLosesPrestige() {
Player p = new Player("Giovanni"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
p.addFood(1); Player firstToAct = order.pull();
Player secondToAct = order.pull();
Player thirdToAct = order.pull();
Player fourthToAct = order.pull();
order.effect(p, 3); fourthToAct.addFood(1);
assertEquals(0, p.getFoodValue()); order.push(firstToAct);
assertEquals(-2, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
order.push(fourthToAct);
assertEquals(0, fourthToAct.getFoodValue());
assertEquals(-2, fourthToAct.getPrestigeValue());
} }
@Test @Test
void effectThreeWithoutFood() { void fourthReturnWithoutFoodNoEffect() {
Player p = new Player("test"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
Player fourthToAct = order.pull();
order.effect(p, 3); int initialFood = fourthToAct.getFoodValue();
int initialPrestige = fourthToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
order.push(fourthToAct);
assertEquals(initialFood, fourthToAct.getFoodValue());
assertEquals(initialPrestige, fourthToAct.getPrestigeValue());
} }
@Test @Test
void effectWrongIndexHigh() { void firstReturnWithBuilding() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
Player firstToAct = order.pull();
order.pull();
order.pull();
order.pull();
firstToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
assertEquals(3, firstToAct.getFoodValue());
}
@Test
void secondReturnWithBuilding() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
Player firstToAct = order.pull();
Player secondToAct = order.pull();
order.pull();
order.pull();
secondToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
order.push(secondToAct);
assertEquals(2, secondToAct.getFoodValue());
}
@Test
void fifthPlayerThrows() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
order.pull();
order.pull();
order.pull();
order.pull();
order.push(p1);
order.push(p2);
order.push(p3);
order.push(p4);
assertThrows(IndexOutOfBoundsException.class, () -> order.push(p5));
}
@Test
void constructorLoadsPlayers() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
Order4 order = new Order4(players);
Player firstOut = order.pull();
Player secondOut = order.pull();
Player thirdOut = order.pull();
Player fourthOut = order.pull();
assertTrue(firstOut == p1 || firstOut == p2 || firstOut == p3 || firstOut == p4);
assertTrue(secondOut == p1 || secondOut == p2 || secondOut == p3 || secondOut == p4);
assertTrue(thirdOut == p1 || thirdOut == p2 || thirdOut == p3 || thirdOut == p4);
assertTrue(fourthOut == p1 || fourthOut == p2 || fourthOut == p3 || fourthOut == p4);
assertNotEquals(firstOut, secondOut);
assertNotEquals(firstOut, thirdOut);
assertNotEquals(firstOut, fourthOut);
assertNotEquals(secondOut, thirdOut);
assertNotEquals(secondOut, fourthOut);
assertNotEquals(thirdOut, fourthOut);
assertThrows(NoSuchElementException.class, order::pull);
}
@Test
void wrongIndexLow() {
Player p = new Player("p1");
Order4 order = new Order4(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
}
@Test
void wrongIndexHigh() {
Player p = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Order4 order = new Order4(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 4)); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 4));
} }
@Test @Test
void effectWrongIndexLow() { void getFirst() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Order4 order = new Order4(new ArrayList<>()); Order4 order = new Order4(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1)); assertNull(order.getFirst());
order.push(p1);
assertEquals(p1, order.getFirst());
assertEquals(p1, order.getFirst());
} }
} }
@@ -1,109 +1,385 @@
package it.polimi.ingsw.gc14.Model.Orders; package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Player; import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.NoSuchElementException;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.NoSuchElementException;
import static org.junit.jupiter.api.Assertions.*;
class Order5Test { class Order5Test {
@Test @Test
void effectZero() { void firstReturnGetsFood() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
order.pull();
order.pull();
order.pull();
order.pull();
order.effect(p, 0); int initialFood = firstToAct.getFoodValue();
order.push(firstToAct);
assertEquals(initialFood + 3, p.getFoodValue()); assertEquals(initialFood + 3, firstToAct.getFoodValue());
assertEquals(0, p.getPrestigeValue()); assertEquals(firstToAct, order.getFirst());
} }
@Test @Test
void effectOne() { void secondReturnGetsFood() {
Player p = new Player("Luca"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
order.pull();
order.pull();
order.pull();
order.effect(p, 1); int initialFood = secondToAct.getFoodValue();
assertEquals(initialFood + 1, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
assertEquals(initialFood + 1, secondToAct.getFoodValue());
} }
@Test @Test
void effectTwo() { void thirdReturnNoEffect() {
Player p = new Player("Antonio"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
order.pull();
order.pull();
order.effect(p, 2); int initialFood = thirdToAct.getFoodValue();
int initialPrestige = thirdToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
assertEquals(initialFood, thirdToAct.getFoodValue());
assertEquals(initialPrestige, thirdToAct.getPrestigeValue());
} }
@Test @Test
void effectThree() { void fourthReturnNoEffect() {
Player p = new Player("Giovanni"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
Player fourthToAct = order.pull();
order.pull();
order.effect(p, 3); int initialFood = fourthToAct.getFoodValue();
int initialPrestige = fourthToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
order.push(fourthToAct);
assertEquals(initialFood, fourthToAct.getFoodValue());
assertEquals(initialPrestige, fourthToAct.getPrestigeValue());
} }
@Test @Test
void effectFourWithFood() { void fifthReturnPaysFoodAndLosesPrestige() {
Player p = new Player("Francesco"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
p.addFood(1); Player firstToAct = order.pull();
Player secondToAct = order.pull();
Player thirdToAct = order.pull();
Player fourthToAct = order.pull();
Player fifthToAct = order.pull();
order.effect(p, 4); fifthToAct.addFood(1);
assertEquals(0, p.getFoodValue()); order.push(firstToAct);
assertEquals(-2, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
order.push(fourthToAct);
order.push(fifthToAct);
assertEquals(0, fifthToAct.getFoodValue());
assertEquals(-2, fifthToAct.getPrestigeValue());
} }
@Test @Test
void effectFourWithoutFood() { void fifthReturnWithoutFoodNoEffect() {
Player p = new Player("Giulio"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
int initialFood = p.getFoodValue(); Player firstToAct = order.pull();
int initialPrestige = p.getPrestigeValue(); Player secondToAct = order.pull();
Player thirdToAct = order.pull();
Player fourthToAct = order.pull();
Player fifthToAct = order.pull();
order.effect(p, 4); int initialFood = fifthToAct.getFoodValue();
int initialPrestige = fifthToAct.getPrestigeValue();
assertEquals(initialFood, p.getFoodValue()); order.push(firstToAct);
assertEquals(initialPrestige, p.getPrestigeValue()); order.push(secondToAct);
order.push(thirdToAct);
order.push(fourthToAct);
order.push(fifthToAct);
assertEquals(initialFood, fifthToAct.getFoodValue());
assertEquals(initialPrestige, fifthToAct.getPrestigeValue());
} }
@Test @Test
void effectWrongIndexHigh() { void firstReturnWithBuilding() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
Player firstToAct = order.pull();
order.pull();
order.pull();
order.pull();
order.pull();
firstToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
assertEquals(4, firstToAct.getFoodValue());
}
@Test
void secondReturnWithBuilding() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
Player firstToAct = order.pull();
Player secondToAct = order.pull();
order.pull();
order.pull();
order.pull();
secondToAct.buildingCards.add(new BuildingCard(3, 1, 1, 2));
order.push(firstToAct);
order.push(secondToAct);
assertEquals(2, secondToAct.getFoodValue());
}
@Test
void sixthPlayerThrows() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
Player p6 = new Player("p6");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
order.pull();
order.pull();
order.pull();
order.pull();
order.pull();
order.push(p1);
order.push(p2);
order.push(p3);
order.push(p4);
order.push(p5);
assertThrows(IndexOutOfBoundsException.class, () -> order.push(p6));
}
@Test
void constructorLoadsPlayers() {
Player p1 = new Player("p1");
Player p2 = new Player("p2");
Player p3 = new Player("p3");
Player p4 = new Player("p4");
Player p5 = new Player("p5");
ArrayList<Player> players = new ArrayList<>();
players.add(p1);
players.add(p2);
players.add(p3);
players.add(p4);
players.add(p5);
Order5 order = new Order5(players);
Player firstOut = order.pull();
Player secondOut = order.pull();
Player thirdOut = order.pull();
Player fourthOut = order.pull();
Player fifthOut = order.pull();
assertTrue(firstOut == p1 || firstOut == p2 || firstOut == p3 || firstOut == p4 || firstOut == p5);
assertTrue(secondOut == p1 || secondOut == p2 || secondOut == p3 || secondOut == p4 || secondOut == p5);
assertTrue(thirdOut == p1 || thirdOut == p2 || thirdOut == p3 || thirdOut == p4 || thirdOut == p5);
assertTrue(fourthOut == p1 || fourthOut == p2 || fourthOut == p3 || fourthOut == p4 || fourthOut == p5);
assertTrue(fifthOut == p1 || fifthOut == p2 || fifthOut == p3 || fifthOut == p4 || fifthOut == p5);
assertNotEquals(firstOut, secondOut);
assertNotEquals(firstOut, thirdOut);
assertNotEquals(firstOut, fourthOut);
assertNotEquals(firstOut, fifthOut);
assertNotEquals(secondOut, thirdOut);
assertNotEquals(secondOut, fourthOut);
assertNotEquals(secondOut, fifthOut);
assertNotEquals(thirdOut, fourthOut);
assertNotEquals(thirdOut, fifthOut);
assertNotEquals(fourthOut, fifthOut);
assertThrows(NoSuchElementException.class, order::pull);
}
@Test
void wrongIndexLow() {
Player p = new Player("p1");
Order5 order = new Order5(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
}
@Test
void wrongIndexHigh() {
Player p = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Order5 order = new Order5(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 5)); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 5));
} }
@Test @Test
void effectWrongIndexLow() { void getFirst() {
Player p = new Player("Marco"); Player p1 = new Player("p1");
Order5 order = new Order5(new ArrayList<>()); Order5 order = new Order5(new ArrayList<>());
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1)); assertNull(order.getFirst());
order.push(p1);
assertEquals(p1, order.getFirst());
assertEquals(p1, order.getFirst());
} }
} }