Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }