diff --git a/src/main/java/uulm/teamname/marvelous/gamelibrary/config/CharacterConfig.java b/src/main/java/uulm/teamname/marvelous/gamelibrary/config/CharacterConfig.java index 07154be..f863fde 100644 --- a/src/main/java/uulm/teamname/marvelous/gamelibrary/config/CharacterConfig.java +++ b/src/main/java/uulm/teamname/marvelous/gamelibrary/config/CharacterConfig.java @@ -1,6 +1,7 @@ package uulm.teamname.marvelous.gamelibrary.config; import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import java.util.*; @@ -11,6 +12,7 @@ import java.util.*; public class CharacterConfig { @NotEmpty + @Valid public CharacterProperties[] characters; @JsonIgnore private Map propertyMap; diff --git a/src/test/java/uulm/teamname/marvelous/gamelibrary/messages/MessageValidationUtilityTest.java b/src/test/java/uulm/teamname/marvelous/gamelibrary/messages/MessageValidationUtilityTest.java index 373abf9..0966d0d 100644 --- a/src/test/java/uulm/teamname/marvelous/gamelibrary/messages/MessageValidationUtilityTest.java +++ b/src/test/java/uulm/teamname/marvelous/gamelibrary/messages/MessageValidationUtilityTest.java @@ -4,6 +4,9 @@ import jakarta.validation.ConstraintViolation; import jakarta.validation.ValidatorFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import uulm.teamname.marvelous.gamelibrary.config.CharacterConfig; +import uulm.teamname.marvelous.gamelibrary.config.CharacterProperties; +import uulm.teamname.marvelous.gamelibrary.config.ScenarioConfig; import uulm.teamname.marvelous.gamelibrary.json.ValidationUtility; import uulm.teamname.marvelous.gamelibrary.messages.client.CharacterSelectionMessage; @@ -55,4 +58,76 @@ class MessageValidationUtilityTest { .isEqualTo("characters: doesn't have twelve elements"); } + @Test + void validateCharacterConfigTest() { + var racoon = new CharacterProperties(); + + racoon.characterID = 1; + racoon.name = "Rocket Raccoon"; + racoon.HP = 100; + racoon.MP = 2; + racoon.AP = 2; + racoon.meleeDamage = 10; + racoon.rangedDamage = 30; + racoon.attackRange = 5; + + + var quicksilver = new CharacterProperties(); + + quicksilver.characterID = 2; + quicksilver.name = "Quicksilver"; + quicksilver.HP = 100; + quicksilver.MP = 6; + quicksilver.AP = 1; + quicksilver.meleeDamage = 10; + quicksilver.rangedDamage = 10; + quicksilver.attackRange = 3; + + + var hulk = new CharacterProperties(); + + hulk.characterID = 3; + hulk.name = "Hulk"; + hulk.HP = 100; + hulk.MP = 2; + hulk.AP = 2; + hulk.meleeDamage = 10; + hulk.rangedDamage = 30; + hulk.attackRange = 5; + + var loki = new CharacterProperties(); + + loki.characterID = 19; + loki.name = "Loki"; + loki.HP = 100; + loki.MP = 6; + loki.AP = 1; + loki.meleeDamage = 10; + loki.rangedDamage = 10; + loki.attackRange = 3; + + var silversurfer = new CharacterProperties(); + + silversurfer.characterID = 20; + silversurfer.name = ""; + silversurfer.HP = 100; + silversurfer.MP = 6; + silversurfer.AP = 1; + silversurfer.meleeDamage = -1; + // silversurfer.rangedDamage = 10; + silversurfer.attackRange = 3; + + var characterConfig = new CharacterConfig(); + + assertThat(ValidationUtility.validate(characterConfig).get()) + .isEqualTo("characters must not be empty"); + + characterConfig.characters = new CharacterProperties[] {racoon, quicksilver, hulk, loki, silversurfer}; + + assertThat(ValidationUtility.validate(characterConfig).get()) + .contains("characters[4].rangedDamage must be greater than 0", + "characters[4].name must not be empty", + "characters[4].meleeDamage must be greater than 0"); + } + }