Ejemplo n.º 1
0
        public void ShouldBeAbleToCallConnectAgainAfterHandlingAReservationRejection()
        {
            //When
            clientBridge.HandleRejectedReservation(correlationId, TestConstants.TEST_REJECTION_STATE);
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Then
            clientBridge.CurrentState.Should().Be(ClientBridgeState.WaitingForRerservation);
        }
Ejemplo n.º 2
0
        public void ClaimingAReservationOnAReservedBridgeShouldMakeItConnected()
        {
            //When
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
            clientBridge.ConfirmReservation(correlationId, TestConstants.TEST_RESERVATION_KEY);
            clientBridge.ClaimReservation();

            //Then
            clientBridge.CurrentState.Should().Be(ClientBridgeState.Connected);
        }
Ejemplo n.º 3
0
        public void ShouldBeAbleToSendAPacketThroughAConnectedClientBridge()
        {
            //When
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
            clientBridge.ConfirmReservation(correlationId, TestConstants.TEST_RESERVATION_KEY);
            clientBridge.ClaimReservation();

            clientBridge.Send(packet);

            //Then
            serverClient.Received().Send(Arg.Is(packet));
        }
Ejemplo n.º 4
0
        public void Start(string ip)
        {
            ClientBridge.Connect(ip, playerName);

            var iterations = 0;

            do
            {
                Thread.Sleep(250);
                ProcessPackets();

                iterations++;
                if (iterations >= 20)
                {
                    break;
                }
            } while (ClientBridge.CurrentState == ClientBridgeState.WaitingForRerservation);

            switch (ClientBridge.CurrentState)
            {
            case ClientBridgeState.Reserved:
                ClientBridge.ClaimReservation();
                Log.InGame("Connected to server");
                break;

            default:
                Log.InGame("Unable to connect to server");
                break;
            }
        }
        public void TheBridgeShouldBeReservedAfterConfirmingAReservation()
        {
            //When
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
            clientBridge.ConfirmReservation(correlationId, TestConstants.TEST_RESERVATION_KEY);

            //Then
            clientBridge.CurrentState.Should().Be(ClientBridgeState.Reserved);
            clientBridge.ReservationState.Should().Be(PlayerSlotReservationState.Reserved);
        }
        public void TheBridgeShouldBeInRejectedStateAfterHandlingAReservationRejection()
        {
            //When
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
            clientBridge.HandleRejectedReservation(correlationId, TestConstants.TEST_REJECTION_STATE);

            //Then
            clientBridge.CurrentState.Should().Be(ClientBridgeState.ReservationRejected);
            clientBridge.ReservationState.Should().HaveFlag(TestConstants.TEST_REJECTION_STATE);
        }
Ejemplo n.º 7
0
        public void ShouldNotStartAConnectedClient()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(true);

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            serverClient.DidNotReceive().Start(Arg.Any <string>());
            clientBridge.CurrentState.Should().Be(ClientBridgeState.WaitingForRerservation);
        }
Ejemplo n.º 8
0
        public void GivenAClientBridgeThatIsWaitingForAReservation()
        {
            //Given
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Do(info => serverClient.IsConnected.Returns(true));

            serverClient
            .When(client => client.Send(Arg.Any <ReservePlayerSlot>()))
            .Do(info => correlationId = info.Arg <ReservePlayerSlot>().CorrelationId);

            clientBridge = new ClientBridge(serverClient);
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
        }
Ejemplo n.º 9
0
        public void TheBridgeShouldBeInTheWaitingStateAfterConnecting()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Do(info => serverClient.IsConnected.Returns(true));

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            clientBridge.CurrentState.Should().Be(ClientBridgeState.WaitingForRerservation);
        }
Ejemplo n.º 10
0
        public void ConnectShouldThrowClientConnectionFailedExceptionAndBeInFaultedStateOnFailure()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Throw <Exception>();

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            Action action = () => clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            action.ShouldThrow <ClientConnectionFailedException>();
            clientBridge.CurrentState.Should().Be(ClientBridgeState.Failed);
        }
Ejemplo n.º 11
0
 public void NegotiatePlayerSlotReservation(string ipAddress, string playerName)
 {
     clientBridge.Connect(ipAddress, playerName);
 }