diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java index d870839..b566c13 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java @@ -1,55 +1,141 @@ package it.polimi.ingsw.gc14.Model.Orders; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.Test; - import java.util.ArrayList; - +import java.util.NoSuchElementException; import static org.junit.jupiter.api.Assertions.*; class Order2Test { @Test - void effectZero() { - Player p = new Player("p1"); - Order2 order = new Order2(new ArrayList<>()); + void firstReturnGetsFood() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + ArrayList 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 - void effectOneWithFood() { - Player p = new Player("p1"); - Order2 order = new Order2(new ArrayList<>()); + void secondReturnPaysFood() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + ArrayList players = new ArrayList<>(); + players.add(p1); + players.add(p2); + Order2 order = new Order2(players); - p.addFood(1); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + Player secondToAct = order.pull(); - order.effect(p, 1); + secondToAct.addFood(1); + int initialPrestige = secondToAct.getPrestigeValue(); - assertEquals(0, p.getFoodValue()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + + assertEquals(0, secondToAct.getFoodValue()); + assertEquals(initialPrestige, secondToAct.getPrestigeValue()); } @Test - void effectOneWithoutFood() { - Player p = new Player("p1"); - Order2 order = new Order2(new ArrayList<>()); + void secondReturnLosesPrestige() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + ArrayList 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()); - assertEquals(1, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + + assertEquals(0, secondToAct.getFoodValue()); + assertEquals(1, secondToAct.getPrestigeValue()); } @Test - void effectWrongIndexHigh() { + void firstReturnWithBuilding() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + ArrayList 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 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 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"); Order2 order = new Order2(new ArrayList<>()); @@ -57,10 +143,15 @@ class Order2Test { } @Test - void effectWrongIndexLow() { - Player p = new Player("p1"); + void getFirst() { + Player p1 = new Player("p1"); 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()); } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java index fd801b3..c15c129 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java @@ -1,80 +1,209 @@ package it.polimi.ingsw.gc14.Model.Orders; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.Test; - import java.util.ArrayList; - +import java.util.NoSuchElementException; import static org.junit.jupiter.api.Assertions.*; class Order3Test { @Test - void effectZero() { - Player p = new Player("Luca"); - Order3 order = new Order3(new ArrayList<>()); + void firstReturnGetsFood() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + ArrayList 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 - void effectOne() { - Player p = new Player("Mario"); - Order3 order = new Order3(new ArrayList<>()); + void secondReturnNoEffect() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + ArrayList players = new ArrayList<>(); + players.add(p1); + players.add(p2); + players.add(p3); + Order3 order = new Order3(players); - int initialFood = p.getFoodValue(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + Player secondToAct = order.pull(); + order.pull(); - order.effect(p, 1); + int initialFood = secondToAct.getFoodValue(); + int initialPrestige = secondToAct.getPrestigeValue(); - assertEquals(initialFood, p.getFoodValue()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + + assertEquals(initialFood, secondToAct.getFoodValue()); + assertEquals(initialPrestige, secondToAct.getPrestigeValue()); } @Test - void effectTwoWithFood() { - Player p = new Player("Gabriele"); - Order3 order = new Order3(new ArrayList<>()); + void thirdReturnPaysFoodAndLosesPrestige() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + ArrayList 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()); - assertEquals(-2, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + + assertEquals(0, thirdToAct.getFoodValue()); + assertEquals(-2, thirdToAct.getPrestigeValue()); } @Test - void effectTwoWithoutFood() { - Player p = new Player("Giorgio"); - Order3 order = new Order3(new ArrayList<>()); + void thirdReturnWithoutFoodNoEffect() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + ArrayList players = new ArrayList<>(); + players.add(p1); + players.add(p2); + players.add(p3); + Order3 order = new Order3(players); - int initialFood = p.getFoodValue(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + Player secondToAct = order.pull(); + Player thirdToAct = order.pull(); - order.effect(p, 2); + int initialFood = thirdToAct.getFoodValue(); + int initialPrestige = thirdToAct.getPrestigeValue(); - assertEquals(initialFood, p.getFoodValue()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + + assertEquals(initialFood, thirdToAct.getFoodValue()); + assertEquals(initialPrestige, thirdToAct.getPrestigeValue()); } @Test - void effectWrongIndexHigh() { - Player p = new Player("Luca"); + void firstReturnWithBuilding() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + ArrayList 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 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 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<>()); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 3)); } @Test - void effectWrongIndexLow() { - Player p = new Player("Luca"); + void getFirst() { + Player p1 = new Player("p1"); 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()); } -} \ No newline at end of file +} + diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java index e935965..3a683b6 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java @@ -1,92 +1,291 @@ package it.polimi.ingsw.gc14.Model.Orders; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.Test; - import java.util.ArrayList; - +import java.util.NoSuchElementException; import static org.junit.jupiter.api.Assertions.*; class Order4Test { @Test - void effectZero() { - Player p = new Player("Marco"); - Order4 order = new Order4(new ArrayList<>()); + void firstReturnGetsFood() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList 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 - void effectOne() { - Player p = new Player("Luca"); - Order4 order = new Order4(new ArrayList<>()); + void secondReturnGetsFood() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList 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 - void effectTwo() { - Player p = new Player("Antonio"); - Order4 order = new Order4(new ArrayList<>()); + void thirdReturnNoEffect() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList players = new ArrayList<>(); + players.add(p1); + players.add(p2); + players.add(p3); + players.add(p4); + Order4 order = new Order4(players); - int initialFood = p.getFoodValue(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + 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()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + + assertEquals(initialFood, thirdToAct.getFoodValue()); + assertEquals(initialPrestige, thirdToAct.getPrestigeValue()); } @Test - void effectThreeWithFood() { - Player p = new Player("Giovanni"); - Order4 order = new Order4(new ArrayList<>()); + void fourthReturnPaysFoodAndLosesPrestige() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList 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()); - assertEquals(-2, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + order.push(fourthToAct); + + assertEquals(0, fourthToAct.getFoodValue()); + assertEquals(-2, fourthToAct.getPrestigeValue()); } @Test - void effectThreeWithoutFood() { - Player p = new Player("test"); - Order4 order = new Order4(new ArrayList<>()); + void fourthReturnWithoutFoodNoEffect() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList players = new ArrayList<>(); + players.add(p1); + players.add(p2); + players.add(p3); + players.add(p4); + Order4 order = new Order4(players); - int initialFood = p.getFoodValue(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + 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()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + order.push(fourthToAct); + + assertEquals(initialFood, fourthToAct.getFoodValue()); + assertEquals(initialPrestige, fourthToAct.getPrestigeValue()); } @Test - void effectWrongIndexHigh() { - Player p = new Player("Marco"); + void firstReturnWithBuilding() { + Player p1 = new Player("p1"); + Player p2 = new Player("p2"); + Player p3 = new Player("p3"); + Player p4 = new Player("p4"); + ArrayList 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 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 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 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<>()); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 4)); } @Test - void effectWrongIndexLow() { - Player p = new Player("Marco"); + void getFirst() { + Player p1 = new Player("p1"); 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()); } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java index f3678c6..a9a21c7 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java @@ -1,109 +1,385 @@ package it.polimi.ingsw.gc14.Model.Orders; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.Test; import java.util.ArrayList; +import java.util.HashSet; +import java.util.NoSuchElementException; +import java.util.Set; 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 { @Test - void effectZero() { - Player p = new Player("Marco"); - Order5 order = new Order5(new ArrayList<>()); + void firstReturnGetsFood() { + 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 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(0, p.getPrestigeValue()); + assertEquals(initialFood + 3, firstToAct.getFoodValue()); + assertEquals(firstToAct, order.getFirst()); } @Test - void effectOne() { - Player p = new Player("Luca"); - Order5 order = new Order5(new ArrayList<>()); + void secondReturnGetsFood() { + 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 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(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + Player secondToAct = order.pull(); + order.pull(); + order.pull(); + order.pull(); - order.effect(p, 1); + int initialFood = secondToAct.getFoodValue(); - assertEquals(initialFood + 1, p.getFoodValue()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + + assertEquals(initialFood + 1, secondToAct.getFoodValue()); } @Test - void effectTwo() { - Player p = new Player("Antonio"); - Order5 order = new Order5(new ArrayList<>()); + void thirdReturnNoEffect() { + 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 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(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + 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()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + + assertEquals(initialFood, thirdToAct.getFoodValue()); + assertEquals(initialPrestige, thirdToAct.getPrestigeValue()); } @Test - void effectThree() { - Player p = new Player("Giovanni"); - Order5 order = new Order5(new ArrayList<>()); + void fourthReturnNoEffect() { + 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 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(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + 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()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + order.push(fourthToAct); + + assertEquals(initialFood, fourthToAct.getFoodValue()); + assertEquals(initialPrestige, fourthToAct.getPrestigeValue()); } @Test - void effectFourWithFood() { - Player p = new Player("Francesco"); - Order5 order = new Order5(new ArrayList<>()); + void fifthReturnPaysFoodAndLosesPrestige() { + 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 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()); - assertEquals(-2, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + order.push(fourthToAct); + order.push(fifthToAct); + + assertEquals(0, fifthToAct.getFoodValue()); + assertEquals(-2, fifthToAct.getPrestigeValue()); } @Test - void effectFourWithoutFood() { - Player p = new Player("Giulio"); - Order5 order = new Order5(new ArrayList<>()); + void fifthReturnWithoutFoodNoEffect() { + 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 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(); - int initialPrestige = p.getPrestigeValue(); + Player firstToAct = order.pull(); + 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()); - assertEquals(initialPrestige, p.getPrestigeValue()); + order.push(firstToAct); + order.push(secondToAct); + order.push(thirdToAct); + order.push(fourthToAct); + order.push(fifthToAct); + + assertEquals(initialFood, fifthToAct.getFoodValue()); + assertEquals(initialPrestige, fifthToAct.getPrestigeValue()); } @Test - void effectWrongIndexHigh() { - Player p = new Player("Marco"); + void firstReturnWithBuilding() { + 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 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 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 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 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<>()); assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 5)); } @Test - void effectWrongIndexLow() { - Player p = new Player("Marco"); + void getFirst() { + Player p1 = new Player("p1"); 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()); } -} \ No newline at end of file +} + + + + + + + + + + + + + + + + +