From 7028724728d83df7f10b2482458efb761b995fa7 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Fri, 20 Mar 2026 18:27:58 +0100 Subject: [PATCH] Fix: Building4, Building4Test added --- .../Cards/Building/Effects/Building4.java | 5 +- .../Cards/Building/Effects/Building4Test.java | 67 +++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4Test.java diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java index 33c00d2..3e87b4f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java @@ -36,7 +36,7 @@ public class Building4 extends BuildingCard { numPair=0; for(Integer i : map.values()) { - numPair+=(i%2); + numPair+=(i/2); } purchased = true; @@ -71,12 +71,13 @@ public class Building4 extends BuildingCard { int temp=0; for(Integer i : map.values()) { - temp+=(i%2); + temp+=(i/2); } if(temp<= numPair) { return; } player.addFood(3*(temp-numPair)); + numPair = temp; }; } diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4Test.java new file mode 100644 index 0000000..577e361 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4Test.java @@ -0,0 +1,67 @@ +package it.polimi.ingsw.gc14.Model.Cards.Building.Effects; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Inventor; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class Building4Test { + + @Test + void buy() { + Player p = new Player("test"); + Building4 b4 = new Building4(1,1); + + assertFalse(b4.buy(p)); + + p.addFood(1); + assertTrue(b4.buy(p)); + assertEquals(0, p.getFoodValue()); + + p.addFood(1); + assertFalse(b4.buy(p)); + } + + @Test + void applyEffect() { + Player p = new Player("test"); + p.addFood(1); + Building4 b4 = new Building4(1,1); + b4.buy(p); + + b4.applyEffect(p); + assertEquals(0, p.getFoodValue()); + + new Inventor(1,1).insert(p); + new Inventor(1,1).insert(p); + b4.applyEffect(p); + assertEquals(3, p.getFoodValue()); + + b4.applyEffect(p); + assertEquals(3, p.getFoodValue()); + + new Inventor(1,2).insert(p); + new Inventor(1,2).insert(p); + b4.applyEffect(p); + assertEquals(6, p.getFoodValue()); + + Player p2 = new Player("test2"); + new Inventor(1,1).insert(p2); + new Inventor(1,1).insert(p2); + p2.addFood(1); + Building4 b4b = new Building4(1,1); + b4b.buy(p2); + b4b.applyEffect(p2); + assertEquals(0, p2.getFoodValue()); + + } + + @Test + void applyEffectException() { + Player p = new Player("test"); + Building4 b4 = new Building4(1,1); + + assertThrows(IllegalArgumentException.class, () -> b4.applyEffect(p)); + } +}