private static async Task <Library.Level1.Types.Result> ExecuteRequestedAction( Messaging.Level1.Actions.ActionDecoder decoder, DirectCommunicator communicator, IGame game, Task <Library.Level1.Types.Result> responseTask) { var decodedAction = decoder.Decode(await communicator.ReceiveFromContestantAsync()); var sentResponse = game.Execute(decodedAction); responseTask.IsCompleted.Should().BeFalse(); communicator.SendToContestant(sentResponse); var decodedResponse = await responseTask; return(decodedResponse); }
public async Task PickupNothing() { var game = new Game(); var communicator = new DirectCommunicator(); var gameProxy = new Library.Level1.Game(communicator); var decoder = new Messaging.Level1.Actions.ActionDecoder(); game.Seed = 0; game.Initialize(); var responseTask = gameProxy.PickupAsync(); var decodedResponse = await ExecuteRequestedAction(decoder, communicator, game, responseTask); decodedResponse.Perceptions.Should().BeEmpty(); decodedResponse.GameState.MovesLeft.Should().Be(99); game.GameState.Should().Be(GameState.Running); }
public async Task PickupGold() { var game = new Game(); var communicator = new DirectCommunicator(); var gameProxy = new Library.Level1.Game(communicator); var decoder = new Messaging.Level1.Actions.ActionDecoder(); game.Seed = 0; game.Initialize(); game.State.PlayerPosition = (3, 2); var responseTask = gameProxy.PickupAsync(); var decodedResponse = await ExecuteRequestedAction(decoder, communicator, game, responseTask); decodedResponse.Perceptions.Should().Contain(Library.Level1.Enums.Perception.Win); decodedResponse.GameState.MovesLeft.Should().Be(99); game.GameState.Should().Be(GameState.Win); }
public async Task MoveOnGold() { var game = new Game(); var communicator = new DirectCommunicator(); var gameProxy = new Library.Level1.Game(communicator); var decoder = new Messaging.Level1.Actions.ActionDecoder(); game.Seed = 0; game.Initialize(); game.State.PlayerPosition = (3, 1); var responseTask = gameProxy.MoveAsync(Direction.South); var decodedAction = decoder.Decode(await communicator.ReceiveFromContestantAsync()); var sentResponse = game.Execute(decodedAction); sentResponse.As <Result>().GameState.PlayerPosition.Should().Be((3, 2)); responseTask.IsCompleted.Should().BeFalse(); communicator.SendToContestant(sentResponse); var decodedResponse = await responseTask; decodedResponse.Perceptions.Should().BeEquivalentTo(Perception.Glitter); decodedResponse.GameState.MovesLeft.Should().Be(99); game.GameState.Should().Be(GameState.Running); }