test: wrote partial EventDeserializer test
This commit is contained in:
		| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user