From 7844f093b3b820af1cba131081a35ec3959eab83 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Fri, 27 Mar 2026 17:48:52 +0100 Subject: [PATCH] Add: character card tests and Fix: clone methods for character cards --- .../Cards/TribeCards/Characters/Artist.java | 2 +- .../Cards/TribeCards/Characters/Builder.java | 2 +- .../Cards/TribeCards/Characters/Gatherer.java | 2 +- .../Cards/TribeCards/Characters/Hunter.java | 2 +- .../Cards/TribeCards/Characters/Inventor.java | 2 +- .../Cards/TribeCards/Characters/Shaman.java | 2 +- .../TribeCards/Characters/ArtistTest.java | 72 +++++++++++ .../TribeCards/Characters/BuilderTest.java | 105 ++++++++++++++++ .../TribeCards/Characters/GathererTest.java | 70 +++++++++++ .../TribeCards/Characters/HunterTest.java | 81 +++++++++++++ .../TribeCards/Characters/InventorTest.java | 113 ++++++++++++++++++ .../TribeCards/Characters/ShamanTest.java | 81 +++++++++++++ 12 files changed, 528 insertions(+), 6 deletions(-) create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ArtistTest.java create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/BuilderTest.java create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/InventorTest.java create mode 100644 src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ShamanTest.java diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Artist.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Artist.java index 09fbe37..7c3cb8b 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Artist.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Artist.java @@ -24,7 +24,7 @@ public class Artist extends Character { @Override public Character clone() { - return new Artist(getEra()); + return new Artist(getEra(), getNMin()); } @Override diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java index e046ed3..c5fb17a 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java @@ -49,7 +49,7 @@ public class Builder extends Character @Override public Character clone() { - return new Builder(getEra(),getReductionValue(), getPrestigeValue()); + return new Builder(getEra(),getReductionValue(), getPrestigeValue(), getNMin()); } public void insert(Player player) { diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Gatherer.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Gatherer.java index 6b39f54..ce4016f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Gatherer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Gatherer.java @@ -23,7 +23,7 @@ public class Gatherer extends Character { @Override public Character clone() { - return new Gatherer(getEra()); + return new Gatherer(getEra(), getNMin()); } public void insert(Player player) { player.gatherers.add(this); diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java index 9c39406..8fc09b2 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java @@ -36,7 +36,7 @@ public class Hunter extends Character { @Override public Character clone() { - return new Hunter(getEra(), getIcon()); + return new Hunter(getEra(), getIcon(), getNMin()); } @Override public void insert(Player player) { diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Inventor.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Inventor.java index 7a09298..28a81c3 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Inventor.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Inventor.java @@ -39,7 +39,7 @@ public class Inventor extends Character { @Override public Character clone() { - return new Inventor(getEra(),icon); + return new Inventor(getEra(),icon, getNMin()); } @Override public void insert(Player player) { diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java index 3df07f8..6c71208 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java @@ -37,7 +37,7 @@ public class Shaman extends Character { @Override public Character clone() { - return new Shaman(getEra(), getIcon()); + return new Shaman(getEra(), getIcon(), getNMin()); } @Override diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ArtistTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ArtistTest.java new file mode 100644 index 0000000..a4c79b5 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ArtistTest.java @@ -0,0 +1,72 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ArtistTest { + + @Test + void testToString() { + Artist a = new Artist(1); + String s = a.toString(); + + assertNotNull(s); + assertTrue(s.contains(CharacterType.ARTIST.toString())); + } + + @Test + void testClone() { + Artist a = new Artist(1, 3); + Artist clone = (Artist) a.clone(); + + assertNotNull(clone); + assertEquals(a.getEra(), clone.getEra()); + assertEquals(a.getNMin(), clone.getNMin()); + assertNotSame(a, clone); + assertEquals(a.getType(), clone.getType()); + } + + @Test + void insert() { + Player p = new Player("test"); + Artist a = new Artist(1); + + assertEquals(0, p.artists.size()); + + a.insert(p); + + assertEquals(1, p.artists.size()); + assertTrue(p.artists.contains(a)); + + Artist a2 = new Artist(1); + a2.insert(p); + + assertEquals(2, p.artists.size()); + assertTrue(p.artists.contains(a2)); + } + + @Test + void constructorTest() { + Artist a = new Artist(1); + + assertEquals(1, a.getEra()); + assertEquals(CharacterType.ARTIST, a.getType()); + assertEquals(0, a.getNMin()); + assertFalse(a.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Artist a = new Artist(1, 3); + + assertEquals(1, a.getEra()); + assertEquals(CharacterType.ARTIST, a.getType()); + assertEquals(3, a.getNMin()); + assertFalse(a.IsEventCard()); + } + + +} \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/BuilderTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/BuilderTest.java new file mode 100644 index 0000000..c484cfb --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/BuilderTest.java @@ -0,0 +1,105 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class BuilderTest { + + @Test + void getReductionValue() { + Builder b = new Builder(1, 2 , 3); + + assertEquals(2, b.getReductionValue()); + } + + @Test + void getPrestigeValue() { + Builder b = new Builder(1, 2 , 3); + assertEquals(3, b.getPrestigeValue()); + } + + @Test + void testToString() { + Builder b = new Builder(1, 2 , 3); + String s = b.toString(); + + assertNotNull(s); + assertTrue(s.contains(CharacterType.BUILDER.toString())); + assertTrue(s.contains("Reduction Value: 2")); + assertTrue(s.contains("Prestige Value: 3")); + } + + @Test + void testClone() { + Builder b = new Builder(1, 2, 3, 4); + Builder clone = (Builder) b.clone(); + + assertNotNull(clone); + assertNotSame(b, clone); + assertEquals(b.getEra(), clone.getEra()); + assertEquals(b.getType(), clone.getType()); + assertEquals(b.getReductionValue(), clone.getReductionValue()); + assertEquals(b.getPrestigeValue(), clone.getPrestigeValue()); + assertEquals(b.getNMin(), clone.getNMin()); + } + + @Test + void insert() { + Player p = new Player("test"); + Builder b = new Builder(1, 2, 3); + + assertEquals(0, p.builders.size()); + + b.insert(p); + + assertEquals(1, p.builders.size()); + assertTrue(p.builders.contains(b)); + + Builder b2 = new Builder(1, 4, 5); + b2.insert(p); + + assertEquals(2, p.builders.size()); + assertTrue(p.builders.contains(b2)); + } + + @Test + void constructorTest() { + Builder b = new Builder(1, 2, 3); + + assertEquals(1, b.getEra()); + assertEquals(CharacterType.BUILDER, b.getType()); + assertEquals(2, b.getReductionValue()); + assertEquals(3, b.getPrestigeValue()); + assertEquals(0, b.getNMin()); + assertFalse(b.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Builder b = new Builder(1, 2, 3, 4); + + assertEquals(1, b.getEra()); + assertEquals(CharacterType.BUILDER, b.getType()); + assertEquals(2, b.getReductionValue()); + assertEquals(3, b.getPrestigeValue()); + assertEquals(4, b.getNMin()); + assertFalse(b.IsEventCard()); + } + + @Test + void constructorShouldThrowIfReductionValueNegative() { + assertThrows(IllegalArgumentException.class, () -> { + new Builder(1, -1, 3); + }); + } + + @Test + void constructorShouldThrowIfPrestigeValueNegative() { + assertThrows(IllegalArgumentException.class, () -> { + new Builder(1, 2, -3); + }); + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..96d3c83 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/GathererTest.java @@ -0,0 +1,70 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class GathererTest { + + @Test + void testToString() { + Gatherer g = new Gatherer(1); + String s = g.toString(); + + assertNotNull(s); + assertTrue(s.contains(CharacterType.GATHERER.toString())); + } + + @Test + void testClone() { + Gatherer g = new Gatherer(1, 3); + Gatherer clone = (Gatherer) g.clone(); + + assertNotNull(clone); + assertEquals(g.getEra(), clone.getEra()); + assertEquals(g.getNMin(), clone.getNMin()); + assertNotSame(g, clone); + assertEquals(g.getType(), clone.getType()); + } + + @Test + void insert() { + Player p = new Player("test"); + Gatherer g = new Gatherer(1); + + assertEquals(0, p.gatherers.size()); + + g.insert(p); + + assertEquals(1, p.gatherers.size()); + assertTrue(p.gatherers.contains(g)); + + Gatherer g2 = new Gatherer(1); + g2.insert(p); + + assertEquals(2, p.gatherers.size()); + assertTrue(p.gatherers.contains(g2)); + } + + @Test + void constructorTest() { + Gatherer g = new Gatherer(1); + + assertEquals(1, g.getEra()); + assertEquals(CharacterType.GATHERER, g.getType()); + assertEquals(0, g.getNMin()); + assertFalse(g.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Gatherer g = new Gatherer(1, 3); + + assertEquals(1, g.getEra()); + assertEquals(CharacterType.GATHERER, g.getType()); + assertEquals(3, g.getNMin()); + assertFalse(g.IsEventCard()); + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..7917289 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/HunterTest.java @@ -0,0 +1,81 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class HunterTest { + + @Test + void getIcon() { + Hunter h = new Hunter(1, true); + + assertTrue(h.getIcon()); + } + + @Test + void testToString() { + Hunter h = new Hunter(1, true); + String s = h.toString(); + + assertNotNull(s); + assertTrue(s.contains(CharacterType.HUNTER.toString())); + assertTrue(s.contains("Icon: true")); + } + + @Test + void testClone() { + Hunter h = new Hunter(1, true, 3); + Hunter clone = (Hunter) h.clone(); + + assertNotNull(clone); + assertNotSame(h, clone); + assertEquals(h.getEra(), clone.getEra()); + assertEquals(h.getType(), clone.getType()); + assertEquals(h.getIcon(), clone.getIcon()); + assertEquals(h.getNMin(), clone.getNMin()); + } + + @Test + void insert() { + Player p = new Player("test"); + Hunter h = new Hunter(1, true); + + assertEquals(0, p.hunters.size()); + + h.insert(p); + + assertEquals(1, p.hunters.size()); + assertTrue(p.hunters.contains(h)); + + Hunter h2 = new Hunter(1, false); + h2.insert(p); + + assertEquals(2, p.hunters.size()); + assertTrue(p.hunters.contains(h2)); + } + + @Test + void constructorTest() { + Hunter h = new Hunter(1, true); + + assertEquals(1, h.getEra()); + assertEquals(CharacterType.HUNTER, h.getType()); + assertTrue(h.getIcon()); + assertEquals(0, h.getNMin()); + assertFalse(h.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Hunter h = new Hunter(1, false, 3); + + assertEquals(1, h.getEra()); + assertEquals(CharacterType.HUNTER, h.getType()); + assertFalse(h.getIcon()); + assertEquals(3, h.getNMin()); + assertFalse(h.IsEventCard()); + } +} \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/InventorTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/InventorTest.java new file mode 100644 index 0000000..13cdc08 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/InventorTest.java @@ -0,0 +1,113 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Orders.Order2; +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 InventorTest { + + @Test + void icon() { + Inventor i = new Inventor(1, 5); + + assertEquals(5, i.Icon()); + } + + @Test + void testToString() { + Inventor i = new Inventor(1, 5); + String s = i.toString(); + + assertNotNull(s); + assertTrue(s.contains(CharacterType.INVENTOR.toString())); + assertTrue(s.contains("Symbol:")); + assertTrue(s.contains("5")); + } + + @Test + void testClone() { + Inventor i = new Inventor(1, 5, 3); + Inventor clone = (Inventor) i.clone(); + + assertNotNull(clone); + assertNotSame(i, clone); + assertEquals(i.getEra(), clone.getEra()); + assertEquals(i.getType(), clone.getType()); + assertEquals(i.Icon(), clone.Icon()); + assertEquals(i.getNMin(), clone.getNMin()); + } + + @Test + void insert() { + Player p = new Player("test"); + Inventor i = new Inventor(1, 5); + + assertEquals(0, p.inventors.size()); + + i.insert(p); + + assertEquals(1, p.inventors.size()); + assertTrue(p.inventors.contains(i)); + + Inventor i2 = new Inventor(1, 7); + i2.insert(p); + + assertEquals(2, p.inventors.size()); + assertTrue(p.inventors.contains(i2)); + } + + @Test + void constructorTest() { + Inventor i = new Inventor(1, 5); + + assertEquals(1, i.getEra()); + assertEquals(CharacterType.INVENTOR, i.getType()); + assertEquals(5, i.Icon()); + assertEquals(0, i.getNMin()); + assertFalse(i.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Inventor i = new Inventor(1, 5, 3); + + assertEquals(1, i.getEra()); + assertEquals(CharacterType.INVENTOR, i.getType()); + assertEquals(5, i.Icon()); + assertEquals(3, i.getNMin()); + assertFalse(i.IsEventCard()); + } + + @Test + void constructorShouldThrowIfIconIsNegative() { + assertThrows(IllegalArgumentException.class, () -> { + new Inventor(1, -1); + }); + } + + @Test + void constructorShouldThrowIfIconIsGreaterThanNine() { + assertThrows(IllegalArgumentException.class, () -> { + new Inventor(1, 10); + }); + } + + @Test + void constructorWithNMinShouldThrowIfIconIsNegative() { + assertThrows(IllegalArgumentException.class, () -> { + new Inventor(1, -1, 3); + }); + } + + @Test + void constructorWithNMinShouldThrowIfIconIsGreaterThanNine() { + assertThrows(IllegalArgumentException.class, () -> { + new Inventor(1, 10, 3); + }); + } +} \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ShamanTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ShamanTest.java new file mode 100644 index 0000000..4d51a3a --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/ShamanTest.java @@ -0,0 +1,81 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters; + +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ShamanTest { + + @Test + void getIcon() { + Shaman s = new Shaman(1, 4); + + assertEquals(4, s.getIcon()); + } + + @Test + void testToString() { + Shaman s = new Shaman(1, 4); + String str = s.toString(); + + assertNotNull(str); + assertTrue(str.contains(CharacterType.SHAMAN.toString())); + assertTrue(str.contains("icon: 4")); + } + + @Test + void testClone() { + Shaman s = new Shaman(1, 4, 3); + Shaman clone = (Shaman) s.clone(); + + assertNotNull(clone); + assertNotSame(s, clone); + assertEquals(s.getEra(), clone.getEra()); + assertEquals(s.getType(), clone.getType()); + assertEquals(s.getIcon(), clone.getIcon()); + assertEquals(s.getNMin(), clone.getNMin()); + } + + @Test + void insert() { + Player p = new Player("test"); + Shaman s = new Shaman(1, 4); + + assertEquals(0, p.shamans.size()); + + s.insert(p); + + assertEquals(1, p.shamans.size()); + assertTrue(p.shamans.contains(s)); + + Shaman s2 = new Shaman(1, 6); + s2.insert(p); + + assertEquals(2, p.shamans.size()); + assertTrue(p.shamans.contains(s2)); + } + + @Test + void constructorTest() { + Shaman s = new Shaman(1, 4); + + assertEquals(1, s.getEra()); + assertEquals(CharacterType.SHAMAN, s.getType()); + assertEquals(4, s.getIcon()); + assertEquals(0, s.getNMin()); + assertFalse(s.IsEventCard()); + } + + @Test + void constructorWithNMinTest() { + Shaman s = new Shaman(1, 4, 3); + + assertEquals(1, s.getEra()); + assertEquals(CharacterType.SHAMAN, s.getType()); + assertEquals(4, s.getIcon()); + assertEquals(3, s.getNMin()); + assertFalse(s.IsEventCard()); + } +} \ No newline at end of file