public void Handle() { var logger = Mock.Of <ILogger <ManagerConnection> >(); var stream = new Mock <IClientStreamWriter <PlayerResponse> >(); PlayerResponse?playerResponse = null; stream.Setup(s => s.WriteAsync(It.IsAny <PlayerResponse>())) .Callback <PlayerResponse>(pr => playerResponse = pr) .Returns(Task.FromResult(0)); // Create connection and start game var player = new Dummy(); var players = new[] { new PlayerInfo("Foo", () => player), new PlayerInfo("Bar", () => new Dummy()) }; var mc = new ManagerConnection(logger, players); mc.Connect(stream.Object); // Simulate incoming ShotRequest mc.Handle(ProtocolTranslator.EncodeShotRequest(new(Guid.Empty, 0, 1, new BoardContent(SquareContent.Unknown)))); Assert.NotNull(playerResponse); Assert.Equal(PlayerResponse.PayloadOneofCase.Shot, playerResponse !.PayloadCase); // Simulate incoming ShotResult Assert.Null(player.Content); mc.Handle(ProtocolTranslator.EncodeShotResult(new(Guid.Empty, SquareContent.Water))); Assert.NotNull(player.Content); Assert.Equal(SquareContent.Water, player.Content); }
public void Connect() { var stream = Mock.Of <IClientStreamWriter <PlayerResponse> >(); var logger = Mock.Of <ILogger <ManagerConnection> >(); var mc = new ManagerConnection(logger, Array.Empty <PlayerInfo>()); Assert.Equal(ManagerConnectionState.Disconnected, mc.State); mc.Connect(stream); Assert.Equal(ManagerConnectionState.Connected, mc.State); }