public void TestGiveInfoForwardedPayloadSerialization() { // Arrange int width = 2; int height = 2; var payload = new GiveInfoForwardedPayload() { RespondingID = 1, }; payload.Distances = new int[width * height]; payload.RedTeamGoalAreaInformations = new GoalInfo[width * height]; payload.BlueTeamGoalAreaInformations = new GoalInfo[width * height]; payload.Distances[0] = 1; payload.Distances[1] = 0; payload.Distances[1] = 2; payload.Distances[3] = 1; payload.RedTeamGoalAreaInformations[0] = GoalInfo.IDK; payload.RedTeamGoalAreaInformations[1] = GoalInfo.IDK; payload.RedTeamGoalAreaInformations[2] = GoalInfo.DiscoveredNotGoal; payload.RedTeamGoalAreaInformations[3] = GoalInfo.DiscoveredGoal; payload.BlueTeamGoalAreaInformations[0] = GoalInfo.IDK; payload.BlueTeamGoalAreaInformations[1] = GoalInfo.IDK; payload.BlueTeamGoalAreaInformations[2] = GoalInfo.DiscoveredNotGoal; payload.BlueTeamGoalAreaInformations[3] = GoalInfo.DiscoveredGoal; // Act var expectedJsonString = "{\"respondingID\":1,\"distances\":[1,2,0,1]," + "\"redTeamGoalAreaInformations\":[\"IDK\",\"IDK\",\"N\",\"G\"]," + "\"blueTeamGoalAreaInformations\":[\"IDK\",\"IDK\",\"N\",\"G\"]}"; var serializedPayload = JsonConvert.SerializeObject(payload); // Assert Assert.Equal(expectedJsonString, serializedPayload); }
public async Task TestAcceptMessageGiveInfoForwardedShouldChangeBoardInfo() { // Arrange PlayerConfiguration configuration = GenerateSampleConfiguration(); BufferBlock <Message> inputBuffer = new BufferBlock <Message>(); ISocketClient <Message, Message> client = GenerateSocketClient(); var player = new Models.Player(configuration, inputBuffer, client, logger); Message messageStart = CreateStartMessage(); inputBuffer.Post(messageStart); await player.AcceptMessage(CancellationToken.None); int randomDistance1 = 7; int randomDistance2 = 0; (int y, int x) = player.Position; Position randomPosition1 = new Position { X = x + 1, Y = y + 2 }; Position randomPosition2 = new Position { X = x + 2, Y = y + 2 }; Position randomPosition3 = new Position { X = x + 2, Y = y + 1 }; int[] distBoard = new int[playerBoardSize.Y * playerBoardSize.X]; GoalInfo[] infoBoard = new GoalInfo[playerBoardSize.Y * playerBoardSize.X]; for (int i = 0; i < distBoard.Length; i += playerBoardSize.X) { for (int j = 0; j < playerBoardSize.X; j++) { distBoard[i + j] = randomDistance1; infoBoard[i + j] = GoalInfo.IDK; } } distBoard[(randomPosition2.Y * playerBoardSize.X) + randomPosition2.X] = randomDistance2; infoBoard[(randomPosition3.Y * playerBoardSize.X) + randomPosition3.X] = GoalInfo.DiscoveredGoal; GiveInfoForwardedPayload payload = new GiveInfoForwardedPayload() { Distances = distBoard, RedTeamGoalAreaInformations = infoBoard, BlueTeamGoalAreaInformations = infoBoard, }; Message giveFwInfoMessage = new Message(MessageID.GiveInfoForwarded, agentID, payload); // Act inputBuffer.Post(giveFwInfoMessage); await player.AcceptMessage(CancellationToken.None); // Assert GoalInfo actualGoalInfo = player.Board[randomPosition3.Y, randomPosition3.X].GoalInfo; Assert.Equal(GoalInfo.DiscoveredGoal, actualGoalInfo); int actualDist1 = player.Board[randomPosition1.Y, randomPosition1.X].DistToPiece; Assert.Equal(randomDistance1, actualDist1); int actualDist2 = player.Board[randomPosition2.Y, randomPosition2.X].DistToPiece; Assert.Equal(randomDistance2, actualDist2); }