From 0e0be9016d46089837087303ad1625410efebe4a Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sat, 2 May 2026 20:22:25 +0200 Subject: [PATCH 1/6] Add: Added Missing Tests For Various Methods. --- .../TribeCards/Events/CavePaintings.java | 1 - .../TribeCards/Characters/GathererTest.java | 2 - .../TribeCards/Characters/HunterTest.java | 7 +-- .../TribeCards/Events/CavePaintingsTest.java | 42 ++++++++++++++++++ .../Cards/TribeCards/Events/HuntTest.java | 42 ++++++++++++++++++ .../TribeCards/Events/ShamanicRitualTest.java | 34 +++++++++++++++ .../TribeCards/Events/SustenanceTest.java | 43 +++++++++++++++++++ 7 files changed, 163 insertions(+), 8 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java index 16d7395..3225bee 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java @@ -86,7 +86,6 @@ public class CavePaintings extends EventCard { return new CavePaintings(getEra(), NLower, NPrestigeRem, NPrestigeMul) ; } - /** * Prints a string representation of this {@code TribeCard}. This specific variation is used in the {@code Game}'s * toString to print a more detailed version. diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java index 10fbc3f..e4529ee 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java @@ -13,8 +13,6 @@ class GathererTest { Gatherer g = new Gatherer(1); String s = g.toString(); - System.out.println(s); - assertNotNull(s); assertFalse(s.contains(CharacterType.GATHERER.toString())); assertTrue(s.contains("⎕:")); diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java index 9da7e97..74be4a2 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java @@ -18,13 +18,10 @@ class HunterTest { @Test void testToString() { Hunter h = new Hunter(1, true); - String s = h.toString(); - - assertNotNull(s); - assertTrue(s.contains(" I")); + assertTrue(h.toString().contains(" I")); Hunter h2 = new Hunter(3, false); - assertTrue(!h2.toString().contains("I")); + assertFalse(h2.toString().contains("I")); } @Test diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintingsTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintingsTest.java index df51011..ce6f322 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintingsTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintingsTest.java @@ -94,6 +94,36 @@ class CavePaintingsTest { assertEquals(7, p1.getFoodValue()); } + @Test + @DisplayName("Not Building 9 test") + void activateEvent3() { + Player p1 = new Player("Marco"); + ArrayList players = new ArrayList<>(Arrays.asList(p1)); + CavePaintings cp1 = new CavePaintings(1, 1, 3, 2); + BuildingCard bc1 = new BuildingCard(9,1,5,5); + p1.addFood(5); + bc1.buy(p1); + new Artist(1).insert(p1); + cp1.activateEvent(players); + + assertEquals(2, p1.getPrestigeValue()); + assertEquals(1 * 1, p1.getFoodValue()); + + p1.removeFood(p1.getFoodValue()); + + BuildingCard bc2 = new BuildingCard(7,1,5,5); + BuildingCard bc3 = new BuildingCard(9,1,5,5); + p1.addFood(10); + bc2.buy(p1); + bc3.buy(p1); + new Artist(1).insert(p1); + new Artist(1).insert(p1); + cp1.activateEvent(players); + + assertEquals(8, p1.getPrestigeValue()); + assertEquals(2 * 3, p1.getFoodValue()); + } + @Test @DisplayName("Clone testing") void cloneTest() { @@ -113,4 +143,16 @@ class CavePaintingsTest { assertEquals("⎕:(Event)CAVE_PAINTINGS", cv1.toString()); } + + @Test + @DisplayName("ToStringBoard testing") + void toStringBoardTest() { + int Era = 1; + int NLower = 1; + int NPrestigeRem = 2; + int NPrestigeMul = 3; + CavePaintings cv1 = new CavePaintings(Era, NLower,NPrestigeRem,NPrestigeMul); + + assertEquals("⎕:(Event)" + cv1.getType() + " 0-"+(NLower-1)+":"+NPrestigeRem+" "+NLower+"+:"+NPrestigeMul, cv1.toStringBoard()); + } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntTest.java index f3b5cdb..f637d8e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntTest.java @@ -98,6 +98,38 @@ class HuntTest { assertEquals(1, p3.getFoodValue()); } + @Test + @DisplayName("p2 doesnt have building 7") + void activateEvent4() { + Player p1 = new Player("Giacomo"); + Player p2 = new Player("xiaomi"); + Player p3 = new Player("test"); + + ArrayList players = new ArrayList<>(Arrays.asList(p1, p2, p3)); + Hunt h1 = new Hunt(1, 3); + + assertEquals(0, p1.getFoodValue()); + + new Hunter(1, true).insert(p1); + new Hunter(1, false).insert(p1); + new Hunter(1, false).insert(p2); + new Hunter(1, false).insert(p2); + + assertEquals(0, p2.getFoodValue()); + assertEquals(0, p2.getPrestigeValue()); + + new Hunter(1, false).insert(p3); + assertEquals(0, p3.getFoodValue()); + + h1.activateEvent(players); + assertEquals(3*2, p1.getPrestigeValue()); + assertEquals(1 + 2, p1.getFoodValue()); + assertEquals(3 * 2, p2.getPrestigeValue()); + assertEquals(2, p2.getFoodValue()); + assertEquals(3, p3.getPrestigeValue()); + assertEquals(1, p3.getFoodValue()); + } + @Test @DisplayName("clone testing") void cloneTest() { @@ -120,4 +152,14 @@ class HuntTest { assertEquals("⎕:(Event)HUNT", h1.toString()); } + + @Test + @DisplayName("ToStringBoard testing") + void toStringBoardTest() { + int Era = 1; + int prestigeMultiplier = 3; + Hunt cv1 = new Hunt(Era, prestigeMultiplier); + + assertEquals("⎕:(Event)" + cv1.getType() + " 1F+" + prestigeMultiplier + "PP" + " X N Hunter", cv1.toStringBoard()); + } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitualTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitualTest.java index f7be0b1..c32fee7 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitualTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitualTest.java @@ -190,6 +190,29 @@ class ShamanicRitualTest { assertEquals(-5, p3.getPrestigeValue()); } + @Test + @DisplayName("p1 does not have building 6") + void ApplyEvent6() { + Player p1 = new Player("Marco"); + Player p2 = new Player("Luca"); + + + ArrayList players = new ArrayList<>(Arrays.asList(p1, p2)); + + new Shaman(1, 3).insert(p1); + new Shaman(1, 1).insert(p2); + + BuildingCard b = new BuildingCard(2, 1, 5, 1); + p1.addFood(5); + b.buy(p1); + + ShamanicRitual ritual = new ShamanicRitual(1, 10, 5); + ritual.activateEvent(players); + + assertEquals(10, p1.getPrestigeValue()); + assertEquals(-5, p2.getPrestigeValue()); + } + @Test @DisplayName("Clone testing") void cloneTest() { @@ -214,4 +237,15 @@ class ShamanicRitualTest { assertEquals("⎕:(Event)SHAMANIC_RITUAL", sr1.toString()); } + + @Test + @DisplayName("ToStringBoard testing") + void toStringBoardTest() { + int Era = 1; + int prestigeToAdd = 1; + int prestigeToRem = 2; + ShamanicRitual cv1 = new ShamanicRitual(Era, prestigeToAdd, prestigeToRem); + + assertEquals("⎕:(Event)" + cv1.getType() + " *>:" + prestigeToAdd + " *<:" + prestigeToRem, cv1.toStringBoard()); + } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/SustenanceTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/SustenanceTest.java index 2d08763..bbf060c 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/SustenanceTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/SustenanceTest.java @@ -102,6 +102,39 @@ class SustenanceTest { assertEquals(0, p2.getPrestigeValue()); } + @Test + @DisplayName("Missing Building 1 testing") + void activateEvent3() { + Player p1 = new Player("marco"); + Player p2 = new Player("giacomo"); + ArrayList players = new ArrayList<>(Arrays.asList(p1,p2)); + + p1.addFood(5); + new Inventor(1, 1).insert(p1); + new Shaman(1, 5).insert(p1); + new Builder(1, 5, 5).insert(p1); + new Artist(1).insert(p1); + new Hunter(1, false).insert(p1); + new Gatherer(1).insert(p1); + + p2.addFood(2); + new Artist(1).insert(p2); + new Artist(1).insert(p2); + new Artist(1).insert(p2); + + + Building1 bd2 = new Building1(1, 1, 1, CharacterType.ARTIST); + + bd2.buy(p2); + + Sustenance s = new Sustenance(1,2); + s.activateEvent(players); + assertEquals(2, p1.getFoodValue()); + assertEquals(1, p2.getFoodValue()); + assertEquals(0, p1.getPrestigeValue()); + assertEquals(0, p2.getPrestigeValue()); + } + @Test @DisplayName("Clone testing") void cloneTest() { @@ -124,6 +157,16 @@ class SustenanceTest { assertEquals("⎕:(Event)SUSTENANCE", s1.toString()); } + + @Test + @DisplayName("ToStringBoard testing") + void toStringBoardTest() { + int Era = 3; + int prestigeDebt = 15; + Sustenance cv1 = new Sustenance(Era, prestigeDebt); + + assertEquals("⎕:(Event)" + cv1.getType() + " -1F/-" + prestigeDebt + "PP", cv1.toStringBoard()); + } } From 08153bf8448bc2578218b44d08087a19c4750b6a Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 3 May 2026 18:30:30 +0200 Subject: [PATCH 2/6] Add: Added Missing Tests For "toString" Methods In Order*.java And For "toStringBoard" In HunterTest.java. --- .../TribeCards/Characters/HunterTest.java | 9 +++ .../ingsw/gc14/Model/Orders/Order2Test.java | 41 +++++++++++- .../ingsw/gc14/Model/Orders/Order3Test.java | 62 ++++++++++++----- .../ingsw/gc14/Model/Orders/Order4Test.java | 65 ++++++++++++++++-- .../ingsw/gc14/Model/Orders/Order5Test.java | 67 +++++++++++++++++-- 5 files changed, 213 insertions(+), 31 deletions(-) diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java index 74be4a2..4313efe 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java @@ -24,6 +24,15 @@ class HunterTest { assertFalse(h2.toString().contains("I")); } + @Test + void testToStringBoard() { + Hunter h = new Hunter(1, true); + assertTrue(h.toStringBoard().contains(" I")); + + Hunter h2 = new Hunter(3, false); + assertFalse(h2.toStringBoard().contains("I")); + } + @Test void testClone() { Hunter h = new Hunter(1, true, 3); 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 b21cb30..0971e8a 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 @@ -155,15 +155,52 @@ class Order2Test { assertEquals(p1, order.getFirst()); assertEquals(p1, order.getFirst()); } + @Test void toStringTest() throws NoSuchFieldException, IllegalAccessException { - Player p1 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); + String usr1 = "wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"; + String usr2 = "L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"; + + Player p1 = new Player(usr1); + Player p2 = new Player(usr2); Order2 order = new Order2(new ArrayList<>(Arrays.asList(p1, p2))); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + order.pull(); order.pull(); + + assertFalse(order.toString().contains(usr1)); + assertFalse(order.toString().contains(usr2)); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + order.push(p2); order.push(p1); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + order.pull().getUserName(); + + assertTrue(order.toString().contains(usr1)); + assertFalse(order.toString().contains(usr2)); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + Player extraPlayer = new Player("px"); + //TODO testare IndexOutOfBoundsException +// assertThrows(IndexOutOfBoundsException.class, () -> { +// Order2 ox = new Order2(new ArrayList<>(Arrays.asList(p1, p2)));; +// ox.pull(); +// ox.pull(); +// ox.pull(); +// ox.push(extraPlayer); +// }); } } \ 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 60905a5..686172a 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 @@ -183,26 +183,54 @@ class Order3Test { } @Test void toStringTest() throws NoSuchFieldException, IllegalAccessException { - Player p1 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); - Player p3 = new Player("L*Ncw1ryyrF2xn%H@4P1iC@&NNIooQQk"); - Order3 order = new Order3(new ArrayList<>(Arrays.asList(p1, p2,p3))); - Field field = Order3.class.getSuperclass().getDeclaredField("playerList"); - field.setAccessible(true); - List values =(ArrayList)field.get(order); + String usr1 = "wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"; + String usr2 = "L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"; + String usr3 = "L*Ncw1rjjrF2xn%H@4d1iC@&NNIooQQk"; - String userPulled=order.pull().getUserName(); - userPulled=order.pull().getUserName(); - userPulled=order.pull().getUserName(); + Player p1 = new Player(usr1); + Player p2 = new Player(usr2); + Player p3 = new Player(usr3); + Order3 order = new Order3(new ArrayList<>(Arrays.asList(p1, p2, p3))); - order.push(p1); + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.pull(); + order.pull(); + order.pull(); + + assertFalse(order.toString().contains(usr1)); + assertFalse(order.toString().contains(usr2)); + assertFalse(order.toString().contains(usr3)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.push(p3); order.push(p2); - values =(ArrayList)field.get(order); -// assertEquals("TURN ORDER\n" + -// "╔════════════════════════════════════╦════════════════════════════════════╦════════════════════════════════════╗\n" + -// "║ 0. ║ 1. "+values.get(1).getUserName() +"║ 2. "+values.get(2).getUserName()+"║\n" + -// "║ +2 Food ║ -- ║ -1 Food / -2 Prestige ║\n"+ -// "╚════════════════════════════════════╩════════════════════════════════════╩════════════════════════════════════╝\n", order.toString()); + order.push(p1); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.pull().getUserName(); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertFalse(order.toString().contains(usr3)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + //TODO testare IndexOutOfBoundsException } } 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 58873a0..67d4023 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 @@ -274,12 +274,65 @@ class Order4Test { @Test void toStringTest() throws NoSuchFieldException, IllegalAccessException { - Player p1 = new Player("wPIshNQhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); - Player p3 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p4 = new Player("wPIshOThiOpRRnIBFfM89s2$@q$9FGbz"); - Order4 order = new Order4(new ArrayList<>(Arrays.asList(p1, p2,p3,p4))); - String userPulled=order.pull().getUserName(); + String usr1 = "wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"; + String usr2 = "L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"; + String usr3 = "L*Ncw1rjjrF2xn%H@4d1iC@&NNIooQQk"; + String usr4 = "L*Ncw1rjkrF2xn%H@4d1iC@&NNIooQQk"; + Player p1 = new Player(usr1); + Player p2 = new Player(usr2); + Player p3 = new Player(usr3); + Player p4 = new Player(usr4); + Order4 order = new Order4(new ArrayList<>(Arrays.asList(p1, p2, p3, p4))); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains(usr4)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.pull(); + order.pull(); + order.pull(); + order.pull(); + + assertFalse(order.toString().contains(usr1)); + assertFalse(order.toString().contains(usr2)); + assertFalse(order.toString().contains(usr3)); + assertFalse(order.toString().contains(usr4)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.push(p4); + order.push(p3); + order.push(p2); + order.push(p1); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains(usr4)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.pull().getUserName(); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertFalse(order.toString().contains(usr4)); + assertTrue(order.toString().contains("+2 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + //TODO testare IndexOutOfBoundsException } } \ 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 1c97434..a43efb8 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 @@ -369,19 +369,74 @@ class Order5Test { } @Test void toStringTest() throws NoSuchFieldException, IllegalAccessException { - Player p1 = new Player("wPIshUEhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); - Player p3 = new Player("wPIshOUhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p4 = new Player("wPIshNUhiOpRRnIBFfM89s2$@q$9FGbz"); - Player p5 = new Player("wPIshKUhiOpRRnIBFfM89s2$@q$9FGbz"); - Order5 order = new Order5(new ArrayList<>(Arrays.asList(p1, p2,p3,p4,p5))); + String usr1 = "wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"; + String usr2 = "L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"; + String usr3 = "L*Ncw1rjjrF2xn%H@4d1iC@&NNIooQQk"; + String usr4 = "L*Ncw1rjkrF2xn%H@4d1iC@&NNIooQQk"; + String usr5 = "L*pcw1rjjrF2xn%H@4d1iC@&NNIooQQk"; + + Player p1 = new Player(usr1); + Player p2 = new Player(usr2); + Player p3 = new Player(usr3); + Player p4 = new Player(usr4); + Player p5 = new Player(usr5); + Order5 order = new Order5(new ArrayList<>(Arrays.asList(p1, p2, p3, p4, p5))); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains(usr4)); + assertTrue(order.toString().contains(usr5)); + assertTrue(order.toString().contains("+3 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + order.pull(); order.pull(); order.pull(); order.pull(); order.pull(); + + assertFalse(order.toString().contains(usr1)); + assertFalse(order.toString().contains(usr2)); + assertFalse(order.toString().contains(usr3)); + assertFalse(order.toString().contains(usr4)); + assertFalse(order.toString().contains(usr5)); + assertTrue(order.toString().contains("+3 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.push(p5); + order.push(p4); + order.push(p3); + order.push(p2); order.push(p1); + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains(usr4)); + assertTrue(order.toString().contains(usr5)); + assertTrue(order.toString().contains("+3 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + order.pull(); + + assertTrue(order.toString().contains(usr1)); + assertTrue(order.toString().contains(usr2)); + assertTrue(order.toString().contains(usr3)); + assertTrue(order.toString().contains(usr4)); + assertFalse(order.toString().contains(usr5)); + assertTrue(order.toString().contains("+3 Food")); + assertTrue(order.toString().contains("+1 Food")); + assertTrue(order.toString().contains("--")); + assertTrue(order.toString().contains("-1 Food / -2 PP")); + + //TODO capire come è testato IndexOutOfBoundsExceptions } } From b7f0ab1fd362450b3feb10f69ca67bd6430ddbe9 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Sun, 3 May 2026 18:42:07 +0200 Subject: [PATCH 3/6] Add: OrderPlayerTest --- .../gc14/Model/Orders/OrderPlayerTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayerTest.java diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayerTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayerTest.java new file mode 100644 index 0000000..780564a --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayerTest.java @@ -0,0 +1,26 @@ +package it.polimi.ingsw.gc14.Model.Orders; + +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + + +class OrderPlayerTest { + + @Test + void toStringShouldReturnUsernameAndPlayedStatusTrue() { + Player player = new Player("Marco"); + OrderPlayer orderPlayer = new OrderPlayer(player, true); + + assertEquals("Marco true", orderPlayer.toString()); + } + + @Test + void toStringShouldReturnUsernameAndPlayedStatusFalse() { + Player player = new Player("Luca"); + OrderPlayer orderPlayer = new OrderPlayer(player, false); + + assertEquals("Luca false", orderPlayer.toString()); + } +} \ No newline at end of file From 1f177408829c88e60b95962845b4196086a72cf4 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Sun, 3 May 2026 19:00:57 +0200 Subject: [PATCH 4/6] Fix: toString --- .../ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java | 2 +- .../polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java | 2 +- .../gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java | 2 +- .../ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java index 3225bee..c9b5fd1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java @@ -105,6 +105,6 @@ public class CavePaintings extends EventCard { */ @Override public String toStringBoard() { - return super.toString()+" 0-"+(NLower-1)+":"+NPrestigeRem+" "+NLower+"+:"+NPrestigeMul; + return super.toStringBoard()+" 0-"+(NLower-1)+":"+NPrestigeRem+" "+NLower+"+:"+NPrestigeMul; } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java index 090b3bd..9969a8d 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java @@ -84,7 +84,7 @@ public class Hunt extends EventCard { */ @Override public String toStringBoard() { - return super.toString()+" 1F+"+prestigeMultiplier+"PP"+" X N Hunter"; + return super.toStringBoard()+" 1F+"+prestigeMultiplier+"PP"+" X N Hunter"; } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java index 70703d5..1a65f10 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java @@ -111,7 +111,7 @@ public class ShamanicRitual extends EventCard { */ @Override public String toStringBoard() { - return super.toString()+" *>:"+prestigeToAdd+" *<:"+prestigeToRemove; + return super.toStringBoard()+" *>:"+prestigeToAdd+" *<:"+prestigeToRemove; } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java index add51ff..4be09a0 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java @@ -103,6 +103,6 @@ public class Sustenance extends EventCard { */ @Override public String toStringBoard() { - return super.toString()+" -1F/-"+PrestigeDebt+"PP"; + return super.toStringBoard()+" -1F/-"+PrestigeDebt+"PP"; } } From 3f0073cddad75d47a86802570ecce38f57a3eb43 Mon Sep 17 00:00:00 2001 From: rubenpirreram Date: Tue, 5 May 2026 15:19:29 +0200 Subject: [PATCH 5/6] Fix: Building8Test --- .../gc14/Model/Cards/Building/Effects/Building8Test.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8Test.java index 15372ed..fc6268a 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8Test.java @@ -57,13 +57,14 @@ class Building8Test { 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()); + assertEquals(PrestigeMul* p.buildingCards.stream().filter(x -> x.getEffectId() == 8).count(), p.getPrestigeValue()); + p.removePrestige(p.getPrestigeValue()); Builder b2 = new Builder(Era, 1, PrestigeMul); p.builders.add(b2); b8.applyEffect(p); - assertEquals(2 + 4, p.getPrestigeValue()); + assertEquals(PrestigeMul * 2, p.getPrestigeValue()); } @Test From 318b82de4f2bb84180f48114ddb30a4090dc6354 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Wed, 6 May 2026 15:51:01 +0200 Subject: [PATCH 6/6] Fix: full game flow test and add: edge case coverage --- .../it/polimi/ingsw/gc14/Model/GameTest.java | 112 +++++++++++++++++- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java index dd11d00..1f5bb4e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java @@ -699,6 +699,8 @@ class GameTest { assertTrue(game.addPlayer(new Player("p" + nPlayers + "_" + i))); } + assertEquals(nPlayers, game.getCurrentPlayerNumber()); + assertEquals(nPlayers, game.getPlayers().size()); assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); assertEquals(1, game.getCurrentState().getRound()); assertNotNull(game.getCurrentState().getCurrentPlayer()); @@ -706,6 +708,7 @@ class GameTest { for (int expectedRound = 1; expectedRound < 10; expectedRound++) { assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); assertEquals(expectedRound, game.getCurrentState().getRound()); + assertEquals(nPlayers, game.getCurrentPlayerNumber()); playOneFullRound(game); @@ -721,6 +724,7 @@ class GameTest { "The round should increase after completing round " + expectedRound + "." ); + assertEquals(nPlayers, game.getCurrentPlayerNumber()); assertNotNull(game.getCurrentState().getCurrentPlayer()); } @@ -735,11 +739,8 @@ class GameTest { "The game should end after completing round 10 with " + nPlayers + " players." ); - assertEquals( - 10, - game.getCurrentState().getRound(), - "The game should end at round 10 with " + nPlayers + " players." - ); + assertEquals(10, game.getCurrentState().getRound()); + assertEquals(nPlayers, game.getPlayers().size()); } } @@ -1095,4 +1096,105 @@ class GameTest { ); } + @Test + void skipDrawingShouldRejectWrongPlayer() { + Game game = new Game(3); + + List players = addPlayers(game, 3, "skip_wrong_"); + + completeSlotChoice(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + Player wrongPlayer = players.stream() + .filter(p -> !p.equals(current)) + .findFirst() + .orElseThrow(); + + assertFalse(game.SkipLowerDrawing(wrongPlayer)); + assertFalse(game.SkipUpperDrawing(wrongPlayer)); + } + + @Test + void skipDrawingShouldReturnFalseWhenDrawableCardsExist() { + Game game = new Game(3); + + addPlayers(game, 3, "skip_drawable_"); + + completeSlotChoice(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + assertNotNull(current); + + boolean checkedAtLeastOneSkip = false; + + if (game.getCurrentState().getNLower() > 0 + && firstNonEventIndexOrMinusOne(game.getLowerListTribeCards()) != -1) { + assertFalse(game.SkipLowerDrawing(current)); + checkedAtLeastOneSkip = true; + } + + if (game.getCurrentState().getNUpper() > 0 + && firstNonEventIndexOrMinusOne(game.getUpperListTribeCards()) != -1) { + assertFalse(game.SkipUpperDrawing(current)); + checkedAtLeastOneSkip = true; + } + + assertTrue( + checkedAtLeastOneSkip, + "The test should check at least one skip rejection when drawable cards exist." + ); + } + + @Test + void pickOptionalTribeCardShouldRejectEventCard() { + Game game = new Game(3); + + List players = addPlayers(game, 3, "optional_event_"); + + giveOptionalEffectToAllPlayers(players.get(0), players.get(1), players.get(2)); + + completeSlotChoice(game); + resolveActionsUntilOptionalCardEffect(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + assertNotNull(current); + + int eventIndex = firstEventIndexOrMinusOne(game.getUpperListTribeCards()); + + assertNotEquals( + -1, + eventIndex, + "There should be at least one event card in the upper tribe list to test rejection." + ); + + assertFalse(game.PickOptionalTribeCardByIndex(current, eventIndex)); + } + + @Test + void cardListsShouldReturnCopiesOfLists() { + Game game = new Game(3); + + List upper = game.getUpperListTribeCards(); + int originalSize = upper.size(); + + upper.clear(); + + assertEquals(originalSize, game.getUpperListTribeCards().size()); + } + + @Test + void getPlayersShouldReturnAddedPlayers() { + Game game = new Game(3); + + Player p1 = new Player("gp1"); + Player p2 = new Player("gp2"); + + assertTrue(game.addPlayer(p1)); + assertTrue(game.addPlayer(p2)); + + assertEquals(2, game.getPlayers().size()); + assertTrue(game.getPlayers().contains(p1)); + assertTrue(game.getPlayers().contains(p2)); + } + } \ No newline at end of file