Fix: Building0Test, BuildingCardTest. Getter method tested

This commit is contained in:
2026-03-27 16:40:44 +01:00
parent 8e82a5aae4
commit ce1ec5b1cd
4 changed files with 176 additions and 2 deletions
@@ -47,8 +47,8 @@ public class Building0 extends BuildingCard {
numSet=player.getNType(type);
}
purchased = true;
}
@Override
public BuildingCard clone() {
return new Building0(getEra(),getPrice(),getPrestigeValue());
@@ -1,13 +1,66 @@
package it.polimi.ingsw.gc14.Model.Cards.Building.Effects;
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
import it.polimi.ingsw.gc14.Model.Player;
import jdk.jshell.spi.SPIResolutionException;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Building0Test {
@Test
@DisplayName("Testing constructor")
void testConstructor() {
int era = 1;
int price = 10;
int prestigeValue = 5;
Building0 b0 = new Building0(era, price, prestigeValue);
// Gli attributi di BuildingCard era, price e prestigeValue vengono testati in BuildingCardTest
// Attributi di Building0
assertEquals(EffectType.CARD_SET, b0.getEffectType());
assertEquals(0, b0.getEffectId());
// Gli attributi purchased e numSet non possono essere testati singolarmente in quanto non hanno metodi getter
// Ne viene testato il corretto funzionamento indirettamente attraverso applyEffect.
// Lo stesso vale per il metodo initialize
}
@Test
@DisplayName("Testing buy method")
void testBuy() {
Player p1 = new Player("test1");
Player p2 = new Player("test2");
Building0 b0 = new Building0(1,1,1);
p1.addFood(10);
p2.addFood(10);
assertEquals(true, b0.buy(p1));
assertEquals(false, b0.buy(p1));
assertEquals(false, b0.buy(p2));
}
@Test
@DisplayName("Testing clone method")
void testClone() {
int era = 1;
int price = 1;
int prestigeValue = 1;
Building0 b0 = new Building0(era, price,prestigeValue);
Building0 b1 = (Building0) b0.clone();
assertEquals(era, b1.getEra());
assertEquals(price, b1.getPrice());
assertEquals(prestigeValue, b1.getPrestigeValue());
}
@Test
@DisplayName("Set Obtained After Effect")
@@ -87,4 +140,8 @@ class Building0Test {
b0.buy(p1);
assertFalse(b0.buy(p2));
}
}
@@ -1,5 +1,9 @@
package it.polimi.ingsw.gc14.Model.Cards;
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
import it.polimi.ingsw.gc14.Model.Cards.Building.Effects.Building0;
import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@@ -31,4 +35,117 @@ class BuildingCardTest {
new BuildingCard(1, 1,-1);
});
}
@Test
@DisplayName("Testing the first constructor (3 parameters)")
void testBuildingCard1() {
// Testing correct initialization
int era0 = 1;
int price0 = 5; // Testing wrong price and prestigeValue
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(1, 0,-1);});
int prestigeValue0 = 10;
BuildingCard bc0 = new BuildingCard(era0,price0,prestigeValue0);
assertEquals(era0, bc0.getEra());
assertEquals(price0, bc0.getPrice());
assertEquals(prestigeValue0, bc0.getPrestigeValue());
// Testing edge case for prestigeValue and price
assertDoesNotThrow(() -> {new BuildingCard(1, 1,0);});
// Testing wrong price
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(1, 0,1);});
// Testing wrong prestigeValue
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(1, 1,-1);});
// Testing wrong price and prestigeValue
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(1, 0,-1);});
// The attribute era is tested in PlayableCardTest
}
@Test
@DisplayName("Testing the second constructor (4 parameters)")
void testBuildingCard2() {}{
// Testing right parameters
BuildingCard bc2 = new BuildingCard(2,1,1,1);
BuildingCard bc3 = new BuildingCard(3,1,1,1);
BuildingCard bc5 = new BuildingCard(5,1,1,1);
BuildingCard bc6 = new BuildingCard(6,1,1,1);
BuildingCard bc7 = new BuildingCard(7,1,1,1);
BuildingCard bc9 = new BuildingCard(9,1,1,1);
BuildingCard bc12 = new BuildingCard(12,1,1,1);
assertEquals(EffectType.ON_EVENT, bc2.getEffectType());
assertEquals(EffectType.ON_END_TURN, bc3.getEffectType());
assertEquals(EffectType.ON_EVENT, bc5.getEffectType());
assertEquals(EffectType.ON_EVENT, bc6.getEffectType());
assertEquals(EffectType.ON_EVENT, bc7.getEffectType());
assertEquals(EffectType.ON_EVENT, bc9.getEffectType());
assertEquals(EffectType.ON_ROUND_END, bc12.getEffectType());
// Testing wrong parameters
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(0,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(1,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(4,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(8,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(10,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(11,1,1,1);});
assertThrows(IllegalArgumentException.class, () -> {new BuildingCard(13,1,1,1);});
}
@Test
@DisplayName("Testing the getters for price, prestigeValue, effectID, effectType")
void testGetters() {
int effectID = 2;
EffectType effectType = EffectType.ON_EVENT;
int era = 1;
int price = 1;
int prestigeValue = 1;
BuildingCard bc0 = new BuildingCard(effectID,era,price,prestigeValue);
assertEquals(effectID, bc0.getEffectId());
assertEquals(effectType, bc0.getEffectType());
assertEquals(era, bc0.getEra());
assertEquals(price, bc0.getPrice());
assertEquals(prestigeValue, bc0.getPrestigeValue());
}
@Test
@DisplayName("Testing the clone method")
void testClone() {
int effectID = 2;
EffectType effectType = EffectType.ON_EVENT;
int era = 1;
int price = 1;
int prestigeValue = 1;
BuildingCard bc0 = new BuildingCard(effectID, era, price, prestigeValue);
BuildingCard bc1 = bc0.clone();
assertEquals(effectID, bc1.getEffectId());
assertEquals(effectType, bc1.getEffectType());
assertEquals(era, bc1.getEra());
assertEquals(price, bc1.getPrice());
assertEquals(prestigeValue, bc1.getPrestigeValue());
}
@Test
@DisplayName("Testing the buy method")
void testBuy() {
Player p1 = new Player("test1");
Player p2 = new Player("test2");
p1.addFood(10);
p2.addFood(10);
BuildingCard bc0 = new BuildingCard(2, 1,1,1);
assertEquals(true, bc0.buy(p1));
assertEquals(false, bc0.buy(p1));
assertEquals(false, bc0.buy(p2));
}
}