From 18d4f4a53dc0f87129a6b7a2f67267f3698da5c6 Mon Sep 17 00:00:00 2001
From: jg175 <jg175@hdm-stuttgart.de>
Date: Tue, 20 Feb 2024 22:28:57 +0100
Subject: [PATCH] Add: Tests (Unit) for SFX that are not random

---
 .../battlearena/Model/Sound/SoundEffects.java | 13 +++--
 src/test/java/SoundEffectsTest.java           | 49 +++++++++++++++++++
 2 files changed, 57 insertions(+), 5 deletions(-)
 create mode 100644 src/test/java/SoundEffectsTest.java

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java
index 8a403b54..7908e96f 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java
@@ -1,16 +1,13 @@
 package de.hdm_stuttgart.battlearena.Model.Sound;
 
 import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
-import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.AppSettings;
 import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
 import de.hdm_stuttgart.battlearena.Model.Entity.IEntity;
-import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
 import de.hdm_stuttgart.battlearena.Model.Map.ITile;
 import de.hdm_stuttgart.battlearena.Model.Map.TileManager;
-
 import javafx.scene.media.AudioClip;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.IOException;
 import java.nio.file.Path;
@@ -26,6 +23,7 @@ public class SoundEffects {
 
     private SoundFileManager fileManager = new SoundFileManager();
     private Persistence persistence = Persistence.getInstance();
+    private boolean soundEffectPlayedTest = false;
 
 
 
@@ -57,15 +55,16 @@ public class SoundEffects {
 
     public void playSoundEffectOnce(SFX soundEffect){
         String path = soundEffect.getPath();
+        log.info(path);
         String resource = path.substring(18); // Begins at Ressource Folder
         Thread sfx = new Thread(()->{
             AudioClip audioClip = new AudioClip(getClass().getResource(resource).toExternalForm());
             audioClip.setVolume((double) persistence.getSettings().getSfxVolume()/100);
             audioClip.play();
-
         });
         sfx.setDaemon(true);
         sfx.start();
+        soundEffectPlayedTest = true;
     }
 
 
@@ -76,4 +75,8 @@ public class SoundEffects {
     public int getVolume(){
         return Persistence.getInstance().getSettings().getSfxVolume();
     }
+
+    public boolean isSoundEffectPlayedTest() {
+        return soundEffectPlayedTest;
+    }
 }
diff --git a/src/test/java/SoundEffectsTest.java b/src/test/java/SoundEffectsTest.java
new file mode 100644
index 00000000..149775ef
--- /dev/null
+++ b/src/test/java/SoundEffectsTest.java
@@ -0,0 +1,49 @@
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
+import de.hdm_stuttgart.battlearena.Model.Sound.SFX;
+import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class SoundEffectsTest {
+    private static final Logger log = LogManager.getLogger(SoundEffectsTest.class);
+
+    private SoundEffects soundEffects;
+    private Persistence persistence;
+
+    @BeforeEach
+    void SetUp(){
+        soundEffects = new SoundEffects();
+        persistence = Persistence.getInstance();
+        try {
+            persistence.loadSettings();
+        } catch (DatabaseException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    void playSoundEffectOnceTest(){
+        soundEffects.playSoundEffectOnce(SFX.BOMB);
+        Assertions.assertTrue(soundEffects.isSoundEffectPlayedTest());
+    }
+
+    @Test
+    void playSoundEffectOnceVolumeTest(){
+        soundEffects.playSoundEffectOnce(SFX.SWORD_HIT);
+        soundEffects.setSfxVolume(50);
+        Assertions.assertAll(()->{
+            Assertions.assertTrue(soundEffects.isSoundEffectPlayedTest());
+            Assertions.assertEquals(50, persistence.getSettings().getSfxVolume());
+        });
+    }
+
+    @Test
+    void playSoundEffectTest(){
+
+    }
+
+}
-- 
GitLab