test: wrote partial EventDeserializer test
This commit is contained in:
parent
3929bde062
commit
156677f290
@ -0,0 +1,190 @@
|
|||||||
|
package uulm.teamname.marvelous.gamelibrary.json.ingame;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.entities.*;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.entities.Character;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.events.EventType;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.events.GamestateEvent;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.events.NotificationEvent;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class EventDeserializerTest {
|
||||||
|
|
||||||
|
ObjectMapper mapper;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void beforeEach() {
|
||||||
|
mapper = new ObjectMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void NotificationEventTest() throws JsonProcessingException {
|
||||||
|
var ack = new GamestateEvent();
|
||||||
|
ack.type = EventType.Ack;
|
||||||
|
|
||||||
|
var jsonRepresentingAck = "{\"eventType\": \"Ack\"}";
|
||||||
|
|
||||||
|
assertThat((GamestateEvent) mapper.readValue(jsonRepresentingAck, Event.class))
|
||||||
|
.withFailMessage("Ack was not properly deserialized")
|
||||||
|
.isEqualTo(ack);
|
||||||
|
|
||||||
|
var nack = new GamestateEvent();
|
||||||
|
nack.type = EventType.Nack;
|
||||||
|
|
||||||
|
var jsonRepresentingNack = "{\"eventType\": \"Nack\"}";
|
||||||
|
|
||||||
|
assertThat((GamestateEvent) mapper.readValue(jsonRepresentingNack, Event.class))
|
||||||
|
.withFailMessage("Nack was not properly deserialized")
|
||||||
|
.isEqualTo(nack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void GamestateEventTest() throws JsonProcessingException {
|
||||||
|
|
||||||
|
var characterAlpha = new Character(
|
||||||
|
new EntityID(EntityType.P1, 4),
|
||||||
|
new IntVector2(5, 3),
|
||||||
|
"Alpha",
|
||||||
|
210,
|
||||||
|
9,
|
||||||
|
3,
|
||||||
|
-1, // still -1 because no gameConfig object available
|
||||||
|
-1,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
characterAlpha.inventory.addStone(StoneType.valueOf(1));
|
||||||
|
characterAlpha.inventory.addStone(StoneType.valueOf(4));
|
||||||
|
|
||||||
|
characterAlpha.setPosition(new IntVector2(4, 2));
|
||||||
|
|
||||||
|
|
||||||
|
var characterSteelWall = new Character(
|
||||||
|
new EntityID(EntityType.P1, 4),
|
||||||
|
new IntVector2(255, 0),
|
||||||
|
"Steel Wall",
|
||||||
|
123,
|
||||||
|
2,
|
||||||
|
21,
|
||||||
|
-1, // still -1 because no gameConfig object available
|
||||||
|
-1,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
characterSteelWall.setPosition(new IntVector2(6, 7));
|
||||||
|
|
||||||
|
|
||||||
|
var infinityStone = new InfinityStone(
|
||||||
|
new EntityID(EntityType.InfinityStones, 3),
|
||||||
|
new IntVector2(52, 13),
|
||||||
|
StoneType.valueOf(3));
|
||||||
|
|
||||||
|
infinityStone.setPosition(new IntVector2(7, 22));
|
||||||
|
|
||||||
|
|
||||||
|
var rock = new Rock(
|
||||||
|
new EntityID(EntityType.Rocks, 15),
|
||||||
|
new IntVector2(51, 31),
|
||||||
|
195);
|
||||||
|
|
||||||
|
rock.setPosition(new IntVector2(4, 285));
|
||||||
|
|
||||||
|
var gamestate = new GamestateEvent();
|
||||||
|
gamestate.type = EventType.GamestateEvent;
|
||||||
|
gamestate.entities = new Entity[] {
|
||||||
|
characterAlpha,
|
||||||
|
characterSteelWall,
|
||||||
|
infinityStone,
|
||||||
|
rock
|
||||||
|
};
|
||||||
|
gamestate.mapSize = new IntVector2(15, 300);
|
||||||
|
gamestate.activeCharacter = new EntityID(EntityType.P2, 3);
|
||||||
|
gamestate.stoneCooldowns = new Integer[] {1, 1, 3, 1, 4, 2};
|
||||||
|
gamestate.turnOrder = new EntityID[] {
|
||||||
|
new EntityID(EntityType.P1, 5),
|
||||||
|
new EntityID(EntityType.P1, 4),
|
||||||
|
new EntityID(EntityType.P1, 3),
|
||||||
|
new EntityID(EntityType.P1, 2),
|
||||||
|
new EntityID(EntityType.P1, 1),
|
||||||
|
new EntityID(EntityType.P1, 0),
|
||||||
|
new EntityID(EntityType.P2, 0),
|
||||||
|
new EntityID(EntityType.P2, 1),
|
||||||
|
new EntityID(EntityType.P2, 2),
|
||||||
|
new EntityID(EntityType.P2, 3),
|
||||||
|
new EntityID(EntityType.P2, 4),
|
||||||
|
new EntityID(EntityType.P2, 5),
|
||||||
|
};
|
||||||
|
gamestate.winCondition = true;
|
||||||
|
|
||||||
|
|
||||||
|
var jsonRepresentingGamestate = """
|
||||||
|
{
|
||||||
|
"eventType": "GamestateEvent",
|
||||||
|
"entities": [
|
||||||
|
{
|
||||||
|
"entityType": "Character",
|
||||||
|
"Name": "Alpha",
|
||||||
|
"PID": 1,
|
||||||
|
"ID": 4,
|
||||||
|
"HP": 210,
|
||||||
|
"MP": 9,
|
||||||
|
"AP": 3,
|
||||||
|
"Stones": [1, 4],
|
||||||
|
"position": [4, 2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityType": "Character",
|
||||||
|
"Name": "Steel Wall",
|
||||||
|
"PID": 1,
|
||||||
|
"ID": 4,
|
||||||
|
"HP": 123,
|
||||||
|
"MP": 2,
|
||||||
|
"AP": 21,
|
||||||
|
"Stones": [],
|
||||||
|
"position": [6, 7]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityType": "InfinityStone",
|
||||||
|
"ID": 3,
|
||||||
|
"position": [7, 22]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityType": "Rock",
|
||||||
|
"ID": 15,
|
||||||
|
"HP": 195,
|
||||||
|
"position": [4, 285]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"turnOrder": [
|
||||||
|
{"entityID": "P1", "ID": 5},
|
||||||
|
{"entityID": "P1", "ID": 4},
|
||||||
|
{"entityID": "P1", "ID": 3},
|
||||||
|
{"entityID": "P1", "ID": 2},
|
||||||
|
{"entityID": "P1", "ID": 1},
|
||||||
|
{"entityID": "P1", "ID": 0},
|
||||||
|
{"entityID": "P2", "ID": 0},
|
||||||
|
{"entityID": "P2", "ID": 1},
|
||||||
|
{"entityID": "P2", "ID": 2},
|
||||||
|
{"entityID": "P2", "ID": 3},
|
||||||
|
{"entityID": "P2", "ID": 4}
|
||||||
|
],
|
||||||
|
"mapSize": [15, 300],
|
||||||
|
"activeCharacter": {"entityID": "P2", "ID": 3},
|
||||||
|
"stoneCooldowns": [1, 1, 3, 1, 4, 2],
|
||||||
|
"winCondition": true
|
||||||
|
}
|
||||||
|
""";
|
||||||
|
|
||||||
|
assertThat((GamestateEvent) mapper.readValue(jsonRepresentingGamestate, GamestateEvent.class))
|
||||||
|
.withFailMessage("GamestateEvent was not properly deserialized")
|
||||||
|
.isEqualTo(gamestate);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user