public void PlayerMovesFromTaskFieldToToRightOccupiedGoalField() { // from (2, 3) to (2, 2) InitGameMaster(); var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.Move); Player.SetLocation(2, 3); RegisterPlayer(Player, Player.GUID); var goalField = new GoalField(2, 2, TeamColour.blue, GoalFieldType.unknown) { playerIdSpecified = true, playerId = 7, timestamp = DateTime.Now, }; DataAgent data = new DataAgent(Player.ID) { PlayerGUID = guid, GameFinished = false, PlayerLocation = Player.Location, Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) } }; // action: Player moves down to (2,2) data.Process(Player.Controller); Assert.AreEqual(new GameArea.GameObjects.Location(2, 3), Player.Location); Assert.IsNull(Player.GetBoard.GetField(2, 3).Player); Assert.IsNotNull(Player.GetBoard.GetField(2, 2).Player); Assert.AreEqual(goalField.playerId, Player.GetBoard.GetField(2, 2).Player.ID); // check if Player has stored an encountered stranger in his board view }
public async Task TestPutAsync() { var conf = GenerateConfiguration(); var socketClient = GenerateSocketClient(); var player = GenerateGMPlayer(conf, socketClient); var piece = new NormalPiece(); var field = new GoalField(0, 0); player.Holding = piece; Assert.True(field.MoveHere(player)); // Act (PutEvent putEvent, bool removed) = await player.PutAsync(CancellationToken.None); Assert.True(putEvent == PutEvent.NormalOnGoalField && removed); Assert.True(player.Holding is null); Assert.Equal(MessageID.PutAnswer, lastSended.MessageID); Assert.Null(prevSended); await Task.Delay(conf.PutPenalty * 2); lastSended = null; (putEvent, removed) = await player.PutAsync(CancellationToken.None); Assert.False(putEvent == PutEvent.NormalOnGoalField || removed); Assert.Equal(MessageID.PutError, lastSended.MessageID); var payload = (PutErrorPayload)lastSended.Payload; Assert.Equal(PutError.AgentNotHolding, payload.ErrorSubtype); }
public List <List <Field> > SetInitialBoard(int goalAreaLength, int taskAreaLength, int boardWidth) { List <List <Field> > boardList = new List <List <Field> >(); for (int i = 0; i < boardWidth; i++) { boardList.Add(new List <Field>()); for (int j = 0; j < taskAreaLength + 2 * goalAreaLength; j++) { if (j >= goalAreaLength && j < goalAreaLength + taskAreaLength) { TaskField tF = new TaskField(); tF.x = (uint)i; tF.y = (uint)j; tF.pieceIdSpecified = false; boardList[i].Add(tF); } else { GoalField gF = new GoalField(); gF.x = (uint)i; gF.y = (uint)j; gF.type = GoalFieldType.nongoal; gF.team = (i < goalAreaLength) ? TeamColour.blue : TeamColour.red; boardList[i].Add(gF); } } } return(boardList); }
public void PlayerMovesFromTaskFieldToRightEmptyGoalField() { // from (2, 3) to (2, 2) InitGameMaster(); var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.Move); Player.SetLocation(2, 3); RegisterPlayer(Player, Player.GUID); var goalField = new GoalField(2, 2, TeamColour.blue, GoalFieldType.unknown) { timestamp = DateTime.Now, }; DataAgent data = new DataAgent(Player.ID) { PlayerGUID = guid, GameFinished = false, PlayerLocation = new GameArea.GameObjects.Location(2, 2), Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) } }; // action: Player moves down to (2,2) data.Process(Player.Controller); Assert.AreEqual(new GameArea.GameObjects.Location(2, 2), Player.Location); Assert.IsNull(Player.GetBoard.GetField(2, 3).Player); Assert.IsNull(Player.GetBoard.GetField(2, 2).Player); }
public List <List <Field> > CreateInitialBoard(int goalsHeight, int tasksHeight, int boardWidth) { List <List <Field> > board = new List <List <Field> >(); for (int i = 0; i < boardWidth; i++) { board.Add(new List <Field>()); for (int j = 0; j < tasksHeight + 2 * goalsHeight; j++) { if (j >= goalsHeight && j < goalsHeight + tasksHeight) { TaskField tF = new TaskField(); tF.x = (uint)i; tF.y = (uint)j; tF.pieceIdSpecified = false; tF.distanceToPiece = -3; board[i].Add(tF); } else { GoalField gF = new GoalField(); gF.x = (uint)i; gF.y = (uint)j; gF.type = GoalFieldType.unknown; gF.team = (i < goalsHeight) ? TeamColour.blue : TeamColour.red; board[i].Add(gF); } } } return(board); }
public void TestNormalPiecePut() { int x = 3; int y = 4; NormalPiece piece = new NormalPiece(); GoalField field = new GoalField(x, y); bool result = field.Put(piece).putEvent == PutEvent.NormalOnGoalField ? true : false; Assert.True(result); }
public void GoalFieldTest() { GoalField message = new GoalField(); message.type = GoalFieldType.goal; message.team = TeamColour.red; string xml = XmlMessageConverter.ToXml(message); GoalField result = (GoalField)XmlMessageConverter.ToObject(xml); Assert.AreEqual(GoalFieldType.goal, result.type); Assert.AreEqual(TeamColour.red, result.team); }
public void HandleGoalField(GoalField goalField) { var oldGoalField = this[goalField]; if (goalField.IsNewerThan(oldGoalField)) { ClearPlayerFromField(oldGoalField); HandlePlayerInField(goalField); this[goalField] = goalField; } }
public void GoalFieldsArrayContainsNullGoal() { var field = new GoalField(1, 2, TeamColour.red); defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field), null }; var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals, defaultSettings.GameDefinition.GoalAreaLength, defaultSettings.GameDefinition.TaskAreaLength, defaultSettings.GameDefinition.BoardWidth); Assert.IsFalse(string.IsNullOrEmpty(message)); Assert.AreEqual(ValidatorMessages.NULL_GOALFIELD, message); }
public void GoalInTaskArea() { var field1 = new GoalField(6, 2, TeamColour.red); var field2 = new GoalField(10, 2, TeamColour.blue); defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field1), new GameArea.GameObjects.GoalField(field2) }; var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals, defaultSettings.GameDefinition.GoalAreaLength, defaultSettings.GameDefinition.TaskAreaLength, defaultSettings.GameDefinition.BoardWidth); Assert.IsFalse(string.IsNullOrEmpty(message)); Assert.AreEqual(ValidatorMessages.GOALS_OUTSIDE_GOAL_AREA, message); }
public void MarkGoalAsCompleted(GoalField goal) { switch (goal.Team) { case TeamColor.Blue: UncompletedBlueGoalsLocations.Remove(goal); break; case TeamColor.Red: UncompletedRedGoalsLocations.Remove(goal); break; default: throw new ArgumentOutOfRangeException(); } }
public DataMessageBuilder AddGoalField(GoalField goalField) { if (goalFields == null) { goalFields = new[] { goalField } } ; else { var l = new List <GoalField>(goalFields) { goalField }; goalFields = l.ToArray(); } return(this); }
public void GoalFieldEqual() { GoalField goalField1 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; GoalField goalField2 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; var dt = DateTime.Now; goalField2.timestamp = dt; goalField1.timestamp = dt; Assert.AreEqual(goalField1, goalField2); }
public void GoalFieldsBlueTeamNoGoals() { var field1 = new GoalField(11, 2, TeamColour.red); var field2 = new GoalField(10, 2, TeamColour.red); var field3 = new GoalField(10, 3, TeamColour.red); defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field1), new GameArea.GameObjects.GoalField(field2), new GameArea.GameObjects.GoalField(field3) }; var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals, defaultSettings.GameDefinition.GoalAreaLength, defaultSettings.GameDefinition.TaskAreaLength, defaultSettings.GameDefinition.BoardWidth); Assert.IsFalse(string.IsNullOrEmpty(message)); Assert.AreEqual(ValidatorMessages.BLUE_TEAM_HAS_NO_GOAL, message); }
public void GoalFieldLocationUnequal() { GoalField goalField1 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; GoalField goalField2 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; goalField2.x = 0; goalField2.y = 1; goalField1.x = 0; goalField1.y = 2; Assert.AreNotEqual(goalField1, goalField2); }
public void DataTest() { Data message = new Data(); message.playerId = 0; message.gameFinished = true; GoalField[] goalFieldsTab = new GoalField[3]; goalFieldsTab[0] = new GoalField() { team = TeamColour.red }; message.GoalFields = goalFieldsTab; Piece[] pieceTab = new Piece[2]; pieceTab[0] = new Piece() { playerId = 2, playerIdSpecified = true }; message.Pieces = pieceTab; message.PlayerLocation = new Location() { x = 3 }; TaskField[] taskFieldTab = new TaskField[3]; taskFieldTab[0] = new TaskField() { x = 3 }; message.TaskFields = taskFieldTab; string xml = XmlMessageConverter.ToXml(message); Data result = (Data)XmlMessageConverter.ToObject(xml); Assert.AreEqual((ulong)0, result.playerId); Assert.AreEqual(true, result.gameFinished); Assert.AreEqual(TeamColour.red, result.GoalFields[0].team); Assert.AreEqual((ulong)2, result.Pieces[0].playerId); Assert.AreEqual((uint)3, result.PlayerLocation.x); Assert.AreEqual((ulong)3, result.TaskFields[0].x); }
public void GoalEqual() { GoalField goalField1 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; GoalField goalField2 = new GoalField(1, 3, TeamColour.red) { type = Messages.GoalFieldType.goal }; Assert.AreEqual(goalField1, goalField2); goalField1.playerId = 10; goalField2.playerId = 9; Assert.AreNotEqual(goalField1, goalField2); goalField2.playerId = 10; Assert.AreEqual(goalField1, goalField2); //TODO: more tests for equal }
public void PlayerPlacesNormalPieceOnGoalFieldOfTypeNonGoal() { InitGameMaster(); var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.PlacePiece); // equip an Player with a sham piece var messagePieceKnown = new Piece(PieceType.normal, 100) { timestamp = DateTime.Now, }; EquipPlayerWithPiece(messagePieceKnown, Player); Player.SetLocation(4, 1); // we change a location of an original object var goalField = new GoalField(4, 1, TeamColour.blue) { playerIdSpecified = true, playerId = Player.ID, timestamp = DateTime.Now, type = GoalFieldType.nongoal, }; DataAgent data = new DataAgent(Player.ID) { PlayerGUID = guid, GameFinished = false, PlayerLocation = Player.Location, Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) } }; // action: Player places a piece data.Process(Player.Controller); // assert Assert.IsNotNull(Player.GetPiece); Assert.AreEqual(GoalFieldType.nongoal, Player.GetBoard.GetGoalField(Player.Location).Type); }
protected DataMessage() { TaskFields = new TaskField[0]; GoalFields = new GoalField[0]; Pieces = new Piece[0]; }
public void MarkGoalAsCompleted(GoalField goal) { }
public void HandleGoalFieldAfterPlace(int playerId, GoalField goalField) { Players[playerId].Piece = null; this[goalField] = goalField; }
protected SuggestAction() { TaskFields = new TaskField[0]; GoalFields = new GoalField[0]; }