Fix: Building10Test Correcly Handles Buying / Utilising .buy Method From BuildingCard Class

This commit is contained in:
GabrieleRadice
2026-03-20 18:05:02 +01:00
parent e170562539
commit acd3efea25
4 changed files with 106 additions and 1 deletions
@@ -16,8 +16,8 @@ class Building0Test {
// Corretta creazione / esecuzione building card // Corretta creazione / esecuzione building card
Building0 b0 = new Building0(1, 1); Building0 b0 = new Building0(1, 1);
Player p = new Player("test"); Player p = new Player("test");
p.addFood(b0.getPrice());
b0.buy(p); b0.buy(p);
p.buildingCards.add(b0);
b0.applyEffect(p); b0.applyEffect(p);
assertEquals(0, p.getFoodValue()); assertEquals(0, p.getFoodValue());
@@ -0,0 +1,69 @@
package it.polimi.ingsw.gc14.Model.Cards.Building.Effects;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.Hunt;
import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import static org.junit.jupiter.api.Assertions.*;
class Building10Test {
@Test
void applyEffect() {
Building10 b10 = new Building10(1, 1);
Player p = new Player("test");
p.addPrestige(b10.getPrice());
b10.buy(p);
int Era = 1;
int Nset = 2;
ArrayList<Artist> Artists = new ArrayList<>();
ArrayList<Builder> Builders = new ArrayList<>();
ArrayList<Gatherers> Gatherers = new ArrayList<>();
ArrayList<Hunter> Hunters = new ArrayList<>();
ArrayList<Inventor> Inventors = new ArrayList<>();
ArrayList<Shaman> Shamans = new ArrayList<>();
for(int i = 1; i < Nset; i++) {
Artists.add(new Artist(Era));
Builders.add(new Builder(Era, 0, 0));
Gatherers.add(new Gatherers(Era));
Hunters.add(new Hunter(Era, true));
Inventors.add(new Inventor(Era, 1));
Shamans.add(new Shaman(Era, 1));
}
p.artists.addAll(Artists);
p.builders.addAll(Builders);
p.gatherers.addAll(Gatherers);
p.hunters.addAll(Hunters);
p.inventors.addAll(Inventors);
p.shamans.addAll(Shamans);
b10.applyEffect(p);
assertEquals(Nset * 6, p.getFoodValue());
}
@Test
void applyEffectException() {
assertThrows(IllegalArgumentException.class, () -> {
Building10 b10 = new Building10(1, 1);
Player p = new Player("test");
b10.applyEffect(p);
});
}
@Test
void applyEffectMultiplePlayerException() {
Building10 b10 = new Building10(1, 1);
Player p1 = new Player("test1");
Player p2 = new Player("test2");
b10.buy(p1);
assertFalse(b10.buy(p2));
}
}
@@ -41,6 +41,8 @@ class Building13Test {
Player p1 = new Player("gigi"); Player p1 = new Player("gigi");
p1.addPrestige(10); p1.addPrestige(10);
Building13 b1 = new Building13(1, 10); Building13 b1 = new Building13(1, 10);
b1.buy(p1);
p1.buildingCards.add(b1);
b1.applyEffect(p1); b1.applyEffect(p1);
assertEquals(35, p1.getPrestigeValue()); assertEquals(35, p1.getPrestigeValue());
} }
@@ -0,0 +1,34 @@
package it.polimi.ingsw.gc14.Model.Cards.Building.Effects;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Builder;
import it.polimi.ingsw.gc14.Model.Player;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Building8Test {
@Test
void applyEffect() {
Building8 b8 = new Building8(1, 1);
Player p = new Player("test");
p.addFood(b8.getPrice());
b8.buy(p);
int Era = 1;
int PrestigeMul = 1;
Builder builder1 = new Builder(Era, 1, PrestigeMul);
p.builders.add(builder1);
b8.applyEffect(p);
assertEquals(1, p.buildingCards.stream().filter(x -> x.getEffectId() == 8).count());
assertEquals(PrestigeMul * 2 * p.buildingCards.stream().filter(x -> x.getEffectId() == 8).count(), p.getPrestigeValue());
Builder b2 = new Builder(Era, 1, PrestigeMul);
p.builders.add(b2);
b8.applyEffect(p);
assertEquals(2 + 4, p.getPrestigeValue());
}
}