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