feat: created proper JSON deserializer and created test for JSON, which is still used for TDD
This commit is contained in:
@ -1,5 +1,125 @@
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
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.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
|
||||
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
|
||||
void simpleInDevTest() throws JsonProcessingException {
|
||||
String simpleEntity = """
|
||||
{
|
||||
"entityID": "P2",
|
||||
"ID": 4
|
||||
}
|
||||
""";
|
||||
System.out.println(new ObjectMapper().readValue(simpleEntity, EntityID.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void stringify() {
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user