Gamelib/src/test/java/uulm/teamname/marvelous/gamelibrary/json/JSONTest.java

128 lines
3.4 KiB
Java

package uulm.teamname.marvelous.gamelibrary.json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
import uulm.teamname.marvelous.gamelibrary.entities.Entity;
import uulm.teamname.marvelous.gamelibrary.entities.EntityID;
import uulm.teamname.marvelous.gamelibrary.events.Event;
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
import uulm.teamname.marvelous.gamelibrary.events.EventType;
import uulm.teamname.marvelous.gamelibrary.json.ingame.MessageStructure;
import java.util.HashMap;
class JSONTest {
String messageStructureStart;
/** 0 is REQUESTS, 1 is EVENTS */
String[] messageStructureEnd;
/** Still need to add: messages, messageType */
MessageStructure target;
@BeforeEach
void setUp() {
messageStructureStart = """
{
"messages":[
""";
messageStructureEnd = new String[] {
"""
],
"messageType": "REQUESTS",
"customContentType": "TestCustomContent",
"customContent": {
"customKey" = "customResult",
"customNumber" = 15,
"customProperty" = true
}
""",
"""
],
"messageType": "EVENTS",
"customContentType": "TestCustomContent",
"customContent": {
"customKey": "customResult",
"customNumber": 15,
"customProperty": true
}
}
""",
};
target = new MessageStructure();
target.customContentType = "TestCustomContent";
target.customContent = new HashMap<String, Object>();
target.customContent.put("customKey", "customResult");
target.customContent.put("customNumber", 15);
target.customContent.put("customProperty", true);
}
@AfterEach
void tearDown() {
}
@Test
void parseNotificationEvents() {
Event[] targetEvents = {
new EventBuilder(EventType.Ack).buildGameStateEvent(),
new EventBuilder(EventType.Nack).buildGameStateEvent(),
};
String eventRepresentation = """
{"eventType": "Ack"},
{"eventType": "Nack"}
""";
String completeMessageStructure = messageStructureStart + eventRepresentation + messageStructureEnd[1];
target.messageType = MessageType.EVENTS;
target.messages = targetEvents;
assertThat(JSON.parse(completeMessageStructure)).isEqualTo(target);
}
@Test
@Disabled
void somewhatComplicatedInDevelopmentTest() {
String eventRepresentation = """
{
"eventType": "GamestateEvent",
"activeCharacter": {"entityID": "P2", "ID": 4},
"turnOrder": [
{"entityID": "P2", "ID": 4},
{"entityID": "P2", "ID": 2},
{"entityID": "P1", "ID": 3},
{"entityID": "NPC", "ID": 1},
{"entityID": "InfinityStones", "ID": 5},
{"entityID": "Rocks", "ID": 0}
]
}
""";
String completeMessageStructure = messageStructureStart + eventRepresentation + messageStructureEnd[1];
System.out.println(JSON.parse(completeMessageStructure));
}
@Test
@Disabled
void simpleInDevTest() throws JsonProcessingException {
String simpleEntity = """
{
"entityID": "P2",
"ID": 4
}
""";
System.out.println(new ObjectMapper().readValue(simpleEntity, EntityID.class));
}
@Test
void stringify() {
}
}