From f722c8ed8e36ad2e311792e8c97337e644570bfb Mon Sep 17 00:00:00 2001
From: Nicolai Brand <nicolahb@stud.ntnu.no>
Date: Sun, 21 May 2023 20:01:21 +0200
Subject: [PATCH] test: some unit tests for Playthrough

---
 .../group_30/paths/model/Playthrough.java     |  2 +-
 .../group_30/paths/model/PlayhtroughTest.java | 46 +++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java

diff --git a/src/main/java/edu/ntnu/idatt2001/group_30/paths/model/Playthrough.java b/src/main/java/edu/ntnu/idatt2001/group_30/paths/model/Playthrough.java
index 1290478..0433bdb 100644
--- a/src/main/java/edu/ntnu/idatt2001/group_30/paths/model/Playthrough.java
+++ b/src/main/java/edu/ntnu/idatt2001/group_30/paths/model/Playthrough.java
@@ -70,7 +70,7 @@ public class Playthrough {
             return;
         }
 
-        if (!currentPassage.hasLinks()) {
+        if (currentPassage != null && !currentPassage.hasLinks()) {
             gameState = PlaythroughState.STUCK;
         }
     }
diff --git a/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java
new file mode 100644
index 0000000..859a2db
--- /dev/null
+++ b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java
@@ -0,0 +1,46 @@
+package edu.ntnu.idatt2001.group_30.paths.model;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import edu.ntnu.idatt2001.group_30.paths.model.goals.Goal;
+import edu.ntnu.idatt2001.group_30.paths.model.goals.GoldGoal;
+import java.util.List;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class PlaythroughTest {
+
+    private Playthrough playthrough;
+    Passage openingPassage;
+
+    @BeforeEach
+    void setUp() {
+        openingPassage = new Passage("Opening passage", "This is the opening passage");
+        Player player = new Player("Player", 10, 20, 30);
+        Story story = new Story("My story", openingPassage);
+        List<Goal> goals = List.of(new GoldGoal(50));
+        Game game = new Game(player, story, goals);
+
+        playthrough = new Playthrough(game);
+    }
+
+    @Test
+    void testBeginPlaythrough() {
+        PlaythroughState state = playthrough.beginPlaythrough();
+        assertEquals(PlaythroughState.STUCK, state);
+        assertEquals(openingPassage, playthrough.getCurrentPassage());
+    }
+
+    @Test
+    void testMakeTurn() {
+        playthrough.beginPlaythrough();
+        Link link = new Link("Link", "Passage123");
+        PlaythroughState state = playthrough.makeTurn(link);
+        assertEquals(PlaythroughState.STUCK, state);
+    }
+
+    @Test
+    void testMakeTurnWithNullLink() {
+        assertThrows(NullPointerException.class, () -> playthrough.makeTurn(null));
+    }
+}
-- 
GitLab