EventSerializer tests
This commit is contained in:
parent
d70cd36a39
commit
f54bae4c1f
@ -248,4 +248,5 @@ class EntitySerializerTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,305 @@
|
|||||||
package uulm.teamname.marvelous.gamelibrary.json.ingame.serialize;
|
package uulm.teamname.marvelous.gamelibrary.json.ingame.serialize;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import net.jqwik.api.*;
|
//import net.jqwik.api.*;
|
||||||
import net.jqwik.api.lifecycle.BeforeProperty;
|
//import net.jqwik.api.lifecycle.BeforeProperty;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
||||||
import uulm.teamname.marvelous.gamelibrary.entities.EntityID;
|
import uulm.teamname.marvelous.gamelibrary.entities.*;
|
||||||
import uulm.teamname.marvelous.gamelibrary.entities.EntityType;
|
import uulm.teamname.marvelous.gamelibrary.entities.Character;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
|
import uulm.teamname.marvelous.gamelibrary.events.*;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
public class EventSerializerTest {
|
public class EventSerializerTest {
|
||||||
|
//System.out.println(mapper.writeValueAsString(gse));
|
||||||
|
|
||||||
|
EntityID[] turns;
|
||||||
|
EntityID turn;
|
||||||
|
Entity[] entities;
|
||||||
|
Entity entity;
|
||||||
|
EventBuilder filled;
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void serializeGamestateEvent() throws JsonProcessingException {
|
||||||
|
|
||||||
|
var mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
GamestateEvent gse = new GamestateEvent();
|
||||||
|
gse.type = EventType.Ack;
|
||||||
|
|
||||||
|
var jsonRepresentingGSE = """
|
||||||
|
{
|
||||||
|
"eventType":"Ack"
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
assertThat(mapper.writeValueAsString(gse))
|
||||||
|
.isEqualTo(jsonRepresentingGSE);
|
||||||
|
|
||||||
|
gse.type = EventType.Nack;
|
||||||
|
|
||||||
|
jsonRepresentingGSE = """
|
||||||
|
{
|
||||||
|
"eventType":"Nack"
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
assertThat(mapper.writeValueAsString(gse))
|
||||||
|
.isEqualTo(jsonRepresentingGSE);
|
||||||
|
|
||||||
|
|
||||||
|
gse.type = EventType.GamestateEvent;
|
||||||
|
|
||||||
|
EventBuilder eb = new EventBuilder(EventType.GamestateEvent);
|
||||||
|
|
||||||
|
GamestateEvent gse2 = eb // no exception if all properties present
|
||||||
|
.withEntities(entities)
|
||||||
|
.withTurnOrder(turns)
|
||||||
|
.withMapSize(new IntVector2(42, 24))
|
||||||
|
.withActiveCharacter(turn)
|
||||||
|
.withStoneCooldowns(new Integer[] {6, 5, 4, 3, 2, 1})
|
||||||
|
.withWinCondition(false)
|
||||||
|
.buildGameStateEvent();
|
||||||
|
|
||||||
|
// gse2.entities = [new EntityID(EntityType.NPC, 1),new IntVector2(1,1)]
|
||||||
|
Entity[] e = {new NPC(new EntityID(EntityType.NPC, 1), new IntVector2(1,1))};
|
||||||
|
gse2.entities = e;
|
||||||
|
EntityID[] eid = {new EntityID(EntityType.NPC, 1)};
|
||||||
|
gse2.turnOrder= eid;
|
||||||
|
var ac= new EntityID(EntityType.P1, 2);
|
||||||
|
gse2.activeCharacter = ac;
|
||||||
|
System.out.println(mapper.writeValueAsString(gse2));
|
||||||
|
/*
|
||||||
|
* private Entity[] entities;
|
||||||
|
private EntityID[] turnOrder;
|
||||||
|
private IntVector2 mapSize;
|
||||||
|
private EntityID activeCharacter;
|
||||||
|
private Integer[] stoneCooldowns;
|
||||||
|
private Boolean winCondition;
|
||||||
|
* */
|
||||||
|
//Entity[] ent = {new EntityID(EntityType.NPC};
|
||||||
|
|
||||||
|
// gse.entities = new Entity[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gen.writeArrayFieldStart("entities");
|
||||||
|
for (Entity entity : value.entities) {
|
||||||
|
gen.writeObject(entity);
|
||||||
|
}
|
||||||
|
gen.writeEndArray();
|
||||||
|
|
||||||
|
gen.writeObjectField("mapSize", value.mapSize);
|
||||||
|
|
||||||
|
gen.writeArrayFieldStart("turnOrder");
|
||||||
|
for (EntityID id : value.turnOrder) {
|
||||||
|
gen.writeObject(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
gen.writeObjectField("activeCharacter", value.activeCharacter);
|
||||||
|
|
||||||
|
gen.writeFieldName("stoneCooldowns");
|
||||||
|
gen.writeArray(
|
||||||
|
Arrays.stream(value.stoneCooldowns).mapToInt(x -> x).toArray(),
|
||||||
|
0,
|
||||||
|
value.stoneCooldowns.length);
|
||||||
|
|
||||||
|
gen.writeBooleanField("winCondition", value.winCondition);
|
||||||
|
* */
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void serializeEntityEvent() throws JsonProcessingException {
|
||||||
|
|
||||||
|
var mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
EntityEvent ee = new EntityEvent();
|
||||||
|
ee.type = EventType.SpawnEntityEvent;
|
||||||
|
ee.entity = new NPC(new EntityID(EntityType.NPC, 1), new IntVector2(1,1));
|
||||||
|
|
||||||
|
var jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"SpawnEntityEvent",
|
||||||
|
"entity":{"entityType":"NPC","ID":1,"MP":0,"stones":[],"position":[1,1]}
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
System.out.println(mapper.writeValueAsString(ee));
|
||||||
|
assertThat(mapper.writeValueAsString(ee))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
|
||||||
|
EntityEvent ee2 = new EntityEvent();
|
||||||
|
ee2.type = EventType.TakenDamageEvent;
|
||||||
|
ee2.targetEntity = new EntityID(EntityType.P1,5);
|
||||||
|
ee2.targetField = new IntVector2(1,1);
|
||||||
|
ee2.amount = 10;
|
||||||
|
|
||||||
|
// {"eventType":"TakenDamageEvent","targetEntity":{"entityID":"P1","ID":5},"targetField":[1,1],"amount":10}
|
||||||
|
System.out.println(mapper.writeValueAsString(ee2));
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"TakenDamageEvent",
|
||||||
|
"targetEntity":{"entityID":"P1","ID":5},
|
||||||
|
"targetField":[1,1],
|
||||||
|
"amount":10
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
System.out.println(mapper.writeValueAsString(ee2));
|
||||||
|
assertThat(mapper.writeValueAsString(ee2))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
EntityEvent ee3 = new EntityEvent();
|
||||||
|
ee3.type = EventType.DestroyedEntityEvent;
|
||||||
|
ee3.targetEntity = new EntityID(EntityType.P1,5);
|
||||||
|
ee3.targetField = new IntVector2(1,1);
|
||||||
|
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"DestroyedEntityEvent",
|
||||||
|
"targetEntity":{"entityID":"P1","ID":5},
|
||||||
|
"targetField":[1,1]
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
System.out.println(mapper.writeValueAsString(ee3));
|
||||||
|
assertThat(mapper.writeValueAsString(ee3))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void serializeCharacterEvent() throws JsonProcessingException {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* gen.writeObjectField("originEntity", value.originEntity);
|
||||||
|
gen.writeObjectField("targetEntity", value.targetEntity);
|
||||||
|
gen.writeObjectField("originField", value.originField);
|
||||||
|
gen.writeObjectField("targetField", value.targetField);
|
||||||
|
* */
|
||||||
|
|
||||||
|
var mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
CharacterEvent ce = new CharacterEvent();
|
||||||
|
ce.type = EventType.MeleeAttackEvent;
|
||||||
|
ce.targetEntity = new EntityID(EntityType.P1,5);
|
||||||
|
ce.targetField = new IntVector2(1,1);
|
||||||
|
ce.originEntity = new EntityID(EntityType.P2,7);
|
||||||
|
ce.targetField = new IntVector2(2,2);
|
||||||
|
|
||||||
|
var jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"MeleeAttackEvent",
|
||||||
|
"originEntity":{"entityID":"P2","ID":7},
|
||||||
|
"targetEntity":{"entityID":"P1","ID":5},
|
||||||
|
"originField":null,"targetField":[2,2]
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
System.out.println(mapper.writeValueAsString(ce));
|
||||||
|
assertThat(mapper.writeValueAsString(ce))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
CharacterEvent ce2 = new CharacterEvent();
|
||||||
|
ce2.type = EventType.UseInfinityStoneEvent;
|
||||||
|
ce2.targetEntity = new EntityID(EntityType.P1,5);
|
||||||
|
ce2.targetField = new IntVector2(1,1);
|
||||||
|
ce2.originEntity = new EntityID(EntityType.P2,7);
|
||||||
|
ce2.targetField = new IntVector2(2,2);
|
||||||
|
ce2.stoneType = StoneType.MindStone;
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"UseInfinityStoneEvent",
|
||||||
|
"originEntity":{"entityID":"P2","ID":7},
|
||||||
|
"targetEntity":{"entityID":"P1","ID":5},
|
||||||
|
"originField":null,"targetField":[2,2]
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
System.out.println(mapper.writeValueAsString(ce2));
|
||||||
|
//assertThat(mapper.writeValueAsString(ce2))
|
||||||
|
// .isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
//gen.writeObject(new EntityID(EntityType.InfinityStones, value.stoneType.getID()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void serializeGameEvent() throws JsonProcessingException {
|
||||||
|
|
||||||
|
var mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
GameEvent ge = new GameEvent();
|
||||||
|
ge.type = EventType.RoundSetupEvent;
|
||||||
|
ge.roundCount =5;
|
||||||
|
EntityID[] eid = {new EntityID(EntityType.NPC, 1)};
|
||||||
|
ge.characterOrder = eid;
|
||||||
|
|
||||||
|
var jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"MeleeAttackEvent",
|
||||||
|
"originEntity":{"entityID":"P2","ID":7},
|
||||||
|
"targetEntity":{"entityID":"P1","ID":5},
|
||||||
|
"originField":null,"targetField":[2,2]
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
// System.out.println(mapper.writeValueAsString(ge));
|
||||||
|
// assertThat(mapper.writeValueAsString(ge))
|
||||||
|
// .isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
GameEvent ge2 = new GameEvent();
|
||||||
|
ge2.type = EventType.TurnEvent;
|
||||||
|
ge2.turnCount =5;
|
||||||
|
ge2.nextCharacter = new EntityID(EntityType.NPC, 1);
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"TurnEvent",
|
||||||
|
"turnCount":5,
|
||||||
|
"nextCharacter":{"entityID":"NPC","ID":1}
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
// System.out.println(mapper.writeValueAsString(ge2));
|
||||||
|
assertThat(mapper.writeValueAsString(ge2))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
GameEvent ge3 = new GameEvent();
|
||||||
|
ge3.type = EventType.WinEvent;
|
||||||
|
ge3.playerWon =1;
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"WinEvent",
|
||||||
|
"playerWon":1
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
// System.out.println(mapper.writeValueAsString(ge3));
|
||||||
|
assertThat(mapper.writeValueAsString(ge3))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
|
||||||
|
GameEvent ge4 = new GameEvent();
|
||||||
|
ge4.type = EventType.TimeoutWarningEvent;
|
||||||
|
ge4.message = "warning";
|
||||||
|
ge4.timeLeft = 1;
|
||||||
|
|
||||||
|
jsonRepresentingEE = """
|
||||||
|
{
|
||||||
|
"eventType":"TimeoutWarningEvent",
|
||||||
|
"message":"warning",
|
||||||
|
"timeLeft":1
|
||||||
|
}""".replace("\n", "");
|
||||||
|
|
||||||
|
//System.out.println(mapper.writeValueAsString(ge4));
|
||||||
|
assertThat(mapper.writeValueAsString(ge4))
|
||||||
|
.isEqualTo(jsonRepresentingEE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
ObjectMapper mapper;
|
ObjectMapper mapper;
|
||||||
|
|
||||||
@BeforeProperty
|
@BeforeProperty
|
||||||
@ -66,8 +356,9 @@ public class EventSerializerTest {
|
|||||||
.map(pos -> new IntVector2(pos.get1(), pos.get2()));
|
.map(pos -> new IntVector2(pos.get1(), pos.get2()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Provide("attackPositions")
|
@Provide("attackPositions")
|
||||||
/** Returns tuples of origin vectors (of an attack), and the vector pointing to the attack dir */
|
// Returns tuples of origin vectors (of an attack), and the vector pointing to the attack dir
|
||||||
private Arbitrary<Tuple.Tuple2<IntVector2, IntVector2>> attackPositions() {
|
private Arbitrary<Tuple.Tuple2<IntVector2, IntVector2>> attackPositions() {
|
||||||
return Combinators.combine(randomPositions(), directions().tuple5())
|
return Combinators.combine(randomPositions(), directions().tuple5())
|
||||||
.as((origin, dir) -> {
|
.as((origin, dir) -> {
|
||||||
@ -82,4 +373,7 @@ public class EventSerializerTest {
|
|||||||
return Tuple.of(origin, attackField);
|
return Tuple.of(origin, attackField);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user