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