Fix: Order2Test.java
This commit is contained in:
@@ -1,214 +1,158 @@
|
|||||||
package it.polimi.ingsw.gc14.Model.Orders;
|
package it.polimi.ingsw.gc14.Model.Orders;
|
||||||
|
|
||||||
|
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
|
||||||
|
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.NoSuchElementException;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
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");
|
||||||
|
Player p2 = new Player("p2");
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
ArrayList<Player> players = new ArrayList<>();
|
||||||
players.add(p);
|
players.add(p1);
|
||||||
|
players.add(p2);
|
||||||
|
Order2 order = new Order2(players);
|
||||||
|
|
||||||
Order2 order = new Order2(new ArrayList<>());
|
Player firstToAct = order.pull();
|
||||||
|
Player secondToAct = order.pull();
|
||||||
|
|
||||||
int initialFood = p.getFoodValue();
|
int initialFood = firstToAct.getFoodValue();
|
||||||
|
order.push(firstToAct);
|
||||||
|
|
||||||
order.effect(p, 0);
|
assertEquals(initialFood + 1, firstToAct.getFoodValue());
|
||||||
|
assertEquals(firstToAct, order.getFirst());
|
||||||
assertEquals(initialFood + 1, p.getFoodValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void effectZeroWithBuildingEffedt() {
|
void secondReturnPaysFood() {
|
||||||
Player p = new Player("p1");
|
Player p1 = new Player("p1");
|
||||||
|
Player p2 = new Player("p2");
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
ArrayList<Player> players = new ArrayList<>();
|
||||||
players.add(p);
|
players.add(p1);
|
||||||
|
players.add(p2);
|
||||||
|
Order2 order = new Order2(players);
|
||||||
|
|
||||||
|
Player firstToAct = order.pull();
|
||||||
|
Player secondToAct = order.pull();
|
||||||
|
|
||||||
|
secondToAct.addFood(1);
|
||||||
|
int initialPrestige = secondToAct.getPrestigeValue();
|
||||||
|
|
||||||
|
order.push(firstToAct);
|
||||||
|
order.push(secondToAct);
|
||||||
|
|
||||||
|
assertEquals(0, secondToAct.getFoodValue());
|
||||||
|
assertEquals(initialPrestige, secondToAct.getPrestigeValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void secondReturnLosesPrestige() {
|
||||||
|
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();
|
||||||
|
Player secondToAct = order.pull();
|
||||||
|
|
||||||
|
secondToAct.addPrestige(3);
|
||||||
|
|
||||||
|
order.push(firstToAct);
|
||||||
|
order.push(secondToAct);
|
||||||
|
|
||||||
|
assertEquals(0, secondToAct.getFoodValue());
|
||||||
|
assertEquals(1, secondToAct.getPrestigeValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
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);
|
Order2 order = new Order2(players);
|
||||||
|
|
||||||
int initialFood = p.getFoodValue();
|
Player firstOut = order.pull();
|
||||||
order.effect(p, 0);
|
Player secondOut = order.pull();
|
||||||
assertTrue(p.getFoodValue() >= initialFood + 1);
|
|
||||||
|
assertTrue((firstOut == p1 && secondOut == p2) || (firstOut == p2 && secondOut == p1));
|
||||||
|
assertThrows(NoSuchElementException.class, order::pull);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void effectOneWithFood() {
|
void wrongIndexLow() {
|
||||||
Player p = new Player("p1");
|
Player p = new Player("p1");
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p);
|
|
||||||
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
p.addFood(1);
|
|
||||||
int initialPrestige = p.getPrestigeValue();
|
|
||||||
|
|
||||||
order.effect(p, 1);
|
|
||||||
|
|
||||||
assertEquals(0, p.getFoodValue());
|
|
||||||
assertEquals(initialPrestige, p.getPrestigeValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void effectOneWithoutFood() {
|
|
||||||
Player p = new Player("p1");
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p);
|
|
||||||
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
p.addPrestige(3);
|
|
||||||
|
|
||||||
order.effect(p, 1);
|
|
||||||
|
|
||||||
assertEquals(0, p.getFoodValue());
|
|
||||||
assertEquals(1, p.getPrestigeValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void effectWrongIndexHigh() {
|
|
||||||
Player p = new Player("p1");
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p);
|
|
||||||
Order2 order = new Order2(new ArrayList<>());
|
|
||||||
|
|
||||||
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void effectWrongIndexLow() {
|
|
||||||
Player p = new Player("p1");
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p);
|
|
||||||
|
|
||||||
Order2 order = new Order2(new ArrayList<>());
|
Order2 order = new Order2(new ArrayList<>());
|
||||||
|
|
||||||
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
|
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void pullAll() {
|
void wrongIndexHigh() {
|
||||||
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 first = order.pull();
|
|
||||||
Player second = order.pull();
|
|
||||||
|
|
||||||
Set<Player> extracted = new HashSet<>();
|
|
||||||
extracted.add(first);
|
|
||||||
extracted.add(second);
|
|
||||||
|
|
||||||
assertEquals(2, extracted.size());
|
|
||||||
assertTrue(extracted.contains(p1));
|
|
||||||
assertTrue(extracted.contains(p2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void pullEmpty() {
|
|
||||||
Player p = new Player("p1");
|
Player p = new Player("p1");
|
||||||
|
Order2 order = new Order2(new ArrayList<>());
|
||||||
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
assertThrows(IndexOutOfBoundsException.class, () -> order.effect(p, 2));
|
||||||
players.add(p);
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
order.pull();
|
|
||||||
|
|
||||||
assertThrows(NoSuchElementException.class, order::pull);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void firstPlayer() {
|
void getFirst() {
|
||||||
Player p1 = new Player("p1");
|
Player p1 = new Player("p1");
|
||||||
Player p2 = new Player("p2");
|
Order2 order = new Order2(new ArrayList<>());
|
||||||
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
assertNull(order.getFirst());
|
||||||
players.add(p1);
|
|
||||||
players.add(p2);
|
|
||||||
|
|
||||||
Order2 order = new Order2(players);
|
order.push(p1);
|
||||||
|
|
||||||
Player first = order.getFirst();
|
assertEquals(p1, order.getFirst());
|
||||||
|
assertEquals(p1, order.getFirst());
|
||||||
assertTrue(first == p1 || first == p2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void pushZero() {
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
Player p = new Player("p1");
|
|
||||||
int initialFood = p.getFoodValue();
|
|
||||||
|
|
||||||
order.push(p);
|
|
||||||
|
|
||||||
assertEquals(initialFood + 1, p.getFoodValue());
|
|
||||||
assertEquals(p, order.getFirst());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void pushOneFood() {
|
|
||||||
Player p1 = new Player("p1");
|
|
||||||
Player p2 = new Player("p2");
|
|
||||||
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p1);
|
|
||||||
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
p2.addFood(1);
|
|
||||||
int initialPrestige = p2.getPrestigeValue();
|
|
||||||
|
|
||||||
order.push(p2);
|
|
||||||
|
|
||||||
assertEquals(0, p2.getFoodValue());
|
|
||||||
assertEquals(initialPrestige, p2.getPrestigeValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void pushOneNoFood() {
|
|
||||||
Player p1 = new Player("p1");
|
|
||||||
Player p2 = new Player("p2");
|
|
||||||
|
|
||||||
ArrayList<Player> players = new ArrayList<>();
|
|
||||||
players.add(p1);
|
|
||||||
|
|
||||||
Order2 order = new Order2(players);
|
|
||||||
|
|
||||||
p2.addPrestige(3);
|
|
||||||
|
|
||||||
order.push(p2);
|
|
||||||
|
|
||||||
assertEquals(1, p2.getPrestigeValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void pushFull() {
|
|
||||||
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);
|
|
||||||
|
|
||||||
assertThrows(IndexOutOfBoundsException.class, () -> order.push(p3));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user