chnaged test framework
This commit is contained in:
@@ -1,28 +1,15 @@
|
|||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.Test;
|
||||||
import org.junit.jupiter.api.Nested;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
|
|
||||||
@DisplayName("Generische Arena")
|
public class ArenaTest {
|
||||||
class ArenaTest {
|
|
||||||
|
|
||||||
@Nested
|
|
||||||
@DisplayName("Spieler-Arena")
|
|
||||||
class PlayerArenaTests {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void attackAllAttacksEveryPlayer() {
|
||||||
"Ein Angriff wird auf alle Spieler angewendet"
|
|
||||||
)
|
|
||||||
void attackAllAttacksEveryPlayer() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Player> arena = new Arena<>();
|
Arena<Player> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -43,29 +30,27 @@ class ArenaTest {
|
|||||||
arena.attackAll(new SwordAttack());
|
arena.attackAll(new SwordAttack());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
70,
|
70,
|
||||||
warrior.getHitPoints()
|
warrior.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
40,
|
40,
|
||||||
mage.getHitPoints()
|
mage.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertFalse(
|
|
||||||
|
assertFalse(
|
||||||
warrior.isDefeated()
|
warrior.isDefeated()
|
||||||
),
|
);
|
||||||
() -> assertFalse(
|
|
||||||
|
assertFalse(
|
||||||
mage.isDefeated()
|
mage.isDefeated()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void samePlayerIsNotAddedTwice() {
|
||||||
"Dasselbe Objekt wird im Set nicht doppelt gespeichert"
|
|
||||||
)
|
|
||||||
void samePlayerIsNotAddedTwice() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Player> arena = new Arena<>();
|
Arena<Player> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -84,17 +69,9 @@ class ArenaTest {
|
|||||||
arena.size()
|
arena.size()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Nested
|
|
||||||
@DisplayName("Gegner-Arena")
|
|
||||||
class EnemyArenaTests {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void fireSpellAffectsEnemyTypesDifferently() {
|
||||||
"Double Dispatch wirkt für jeden Gegnertyp unterschiedlich"
|
|
||||||
)
|
|
||||||
void fireSpellAffectsEnemyTypesDifferently() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Enemy> arena = new Arena<>();
|
Arena<Enemy> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -115,23 +92,19 @@ class ArenaTest {
|
|||||||
arena.attackAll(new FireSpell());
|
arena.attackAll(new FireSpell());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
75,
|
75,
|
||||||
skeleton.getHitPoints()
|
skeleton.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
40,
|
40,
|
||||||
iceGolem.getHitPoints()
|
iceGolem.getHitPoints()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void swordAttackAffectsEnemyTypesDifferently() {
|
||||||
"Ein Schwert wirkt ebenfalls abhängig vom Gegnertyp"
|
|
||||||
)
|
|
||||||
void swordAttackAffectsEnemyTypesDifferently() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Enemy> arena = new Arena<>();
|
Arena<Enemy> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -152,28 +125,19 @@ class ArenaTest {
|
|||||||
arena.attackAll(new SwordAttack());
|
arena.attackAll(new SwordAttack());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
60,
|
60,
|
||||||
skeleton.getHitPoints()
|
skeleton.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
85,
|
85,
|
||||||
iceGolem.getHitPoints()
|
iceGolem.getHitPoints()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Nested
|
|
||||||
@DisplayName("Gemischte Arena")
|
|
||||||
class MixedArenaTests {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void mixedArenaAttacksAllCharacterTypes() {
|
||||||
"Spieler und Gegner können gemeinsam angegriffen werden"
|
|
||||||
)
|
|
||||||
void mixedArenaAttacksAllCharacterTypes() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Character> arena = new Arena<>();
|
Arena<Character> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -200,27 +164,24 @@ class ArenaTest {
|
|||||||
arena.attackAll(new FireSpell());
|
arena.attackAll(new FireSpell());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
70,
|
70,
|
||||||
player.getHitPoints()
|
player.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
75,
|
75,
|
||||||
skeleton.getHitPoints()
|
skeleton.getHitPoints()
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
40,
|
40,
|
||||||
iceGolem.getHitPoints()
|
iceGolem.getHitPoints()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void livingAndDefeatedCharactersAreSeparated() {
|
||||||
"Lebende und besiegte Figuren werden getrennt"
|
|
||||||
)
|
|
||||||
void livingAndDefeatedCharactersAreSeparated() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Character> arena = new Arena<>();
|
Arena<Character> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -253,32 +214,31 @@ class ArenaTest {
|
|||||||
arena.getDefeatedCharacters();
|
arena.getDefeatedCharacters();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
1,
|
1,
|
||||||
living.size()
|
living.size()
|
||||||
),
|
);
|
||||||
() -> assertTrue(
|
|
||||||
|
assertTrue(
|
||||||
living.contains(iceGolem)
|
living.contains(iceGolem)
|
||||||
),
|
);
|
||||||
() -> assertEquals(
|
|
||||||
|
assertEquals(
|
||||||
2,
|
2,
|
||||||
defeated.size()
|
defeated.size()
|
||||||
),
|
);
|
||||||
() -> assertTrue(
|
|
||||||
|
assertTrue(
|
||||||
defeated.contains(player)
|
defeated.contains(player)
|
||||||
),
|
);
|
||||||
() -> assertTrue(
|
|
||||||
|
assertTrue(
|
||||||
defeated.contains(skeleton)
|
defeated.contains(skeleton)
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void defeatedCharactersCanBeRemoved() {
|
||||||
"Besiegte Figuren können entfernt werden"
|
|
||||||
)
|
|
||||||
void defeatedCharactersCanBeRemoved() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Character> arena = new Arena<>();
|
Arena<Character> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -304,32 +264,24 @@ class ArenaTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertEquals(
|
||||||
() -> assertEquals(
|
|
||||||
1,
|
1,
|
||||||
arena.size()
|
arena.size()
|
||||||
),
|
);
|
||||||
() -> assertTrue(
|
|
||||||
|
assertTrue(
|
||||||
arena.getCharacters()
|
arena.getCharacters()
|
||||||
.contains(iceGolem)
|
.contains(iceGolem)
|
||||||
),
|
);
|
||||||
() -> assertFalse(
|
|
||||||
|
assertFalse(
|
||||||
arena.getCharacters()
|
arena.getCharacters()
|
||||||
.contains(player)
|
.contains(player)
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Nested
|
|
||||||
@DisplayName("Verwaltung der Arena")
|
|
||||||
class ArenaManagementTests {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void removeDeletesCharacter() {
|
||||||
"remove entfernt eine vorhandene Figur"
|
|
||||||
)
|
|
||||||
void removeDeletesCharacter() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Player> arena = new Arena<>();
|
Arena<Player> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -345,23 +297,17 @@ class ArenaTest {
|
|||||||
arena.remove(player);
|
arena.remove(player);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertTrue(removed);
|
||||||
() -> assertTrue(removed),
|
assertTrue(arena.isEmpty());
|
||||||
() -> assertTrue(
|
|
||||||
arena.isEmpty()
|
assertEquals(
|
||||||
),
|
|
||||||
() -> assertEquals(
|
|
||||||
0,
|
0,
|
||||||
arena.size()
|
arena.size()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName(
|
public void removingUnknownCharacterReturnsFalse() {
|
||||||
"remove liefert false für eine unbekannte Figur"
|
|
||||||
)
|
|
||||||
void removingUnknownCharacterReturnsFalse() {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
Arena<Player> arena = new Arena<>();
|
Arena<Player> arena = new Arena<>();
|
||||||
|
|
||||||
@@ -382,21 +328,16 @@ class ArenaTest {
|
|||||||
arena.remove(unknownPlayer);
|
arena.remove(unknownPlayer);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertAll(
|
assertFalse(removed);
|
||||||
() -> assertFalse(removed),
|
|
||||||
() -> assertEquals(
|
assertEquals(
|
||||||
1,
|
1,
|
||||||
arena.size()
|
arena.size()
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test(expected = UnsupportedOperationException.class)
|
||||||
@DisplayName(
|
public void returnedCharacterSetIsUnmodifiable() {
|
||||||
"getCharacters liefert ein unveränderliches Set"
|
|
||||||
)
|
|
||||||
void returnedCharacterSetIsUnmodifiable() {
|
|
||||||
// Arrange
|
|
||||||
Arena<Player> arena = new Arena<>();
|
Arena<Player> arena = new Arena<>();
|
||||||
|
|
||||||
arena.add(
|
arena.add(
|
||||||
@@ -406,40 +347,20 @@ class ArenaTest {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
Set<Player> characters =
|
arena.getCharacters().clear();
|
||||||
arena.getCharacters();
|
|
||||||
|
|
||||||
// Act und Assert
|
|
||||||
assertThrows(
|
|
||||||
UnsupportedOperationException.class,
|
|
||||||
characters::clear
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test(expected = NullPointerException.class)
|
||||||
@DisplayName(
|
public void nullCharacterCannotBeAdded() {
|
||||||
"null kann nicht hinzugefügt werden"
|
|
||||||
)
|
|
||||||
void nullCharacterCannotBeAdded() {
|
|
||||||
Arena<Character> arena = new Arena<>();
|
Arena<Character> arena = new Arena<>();
|
||||||
|
|
||||||
assertThrows(
|
arena.add(null);
|
||||||
NullPointerException.class,
|
|
||||||
() -> arena.add(null)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test(expected = NullPointerException.class)
|
||||||
@DisplayName(
|
public void nullAttackIsRejected() {
|
||||||
"attackAll akzeptiert keinen null-Angriff"
|
|
||||||
)
|
|
||||||
void nullAttackIsRejected() {
|
|
||||||
Arena<Character> arena = new Arena<>();
|
Arena<Character> arena = new Arena<>();
|
||||||
|
|
||||||
assertThrows(
|
arena.attackAll(null);
|
||||||
NullPointerException.class,
|
|
||||||
() -> arena.attackAll(null)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user