public void JoinSessionShouldTransitionToSessionJoinedState() { // Arrange MultiplayerSessionReservation successfulReservation = new MultiplayerSessionReservation( TestConstants.TEST_CORRELATION_ID, TestConstants.TEST_PLAYER_ID, TestConstants.TEST_RESERVATION_KEY); IClient serverClient = Substitute.For <IClient>(); serverClient.IsConnected.Returns(true); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Reservation.Returns(successfulReservation); connectionContext.Client.Returns(serverClient); SessionReserved connection = new SessionReserved(); // Act connection.JoinSession(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <SessionJoined>()); }
public void NegotiateShouldTransitionToAwaitingReservationCredentialsState() { // Arrange IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.SessionPolicy.Returns(new MultiplayerSessionPolicy(TestConstants.TEST_CORRELATION_ID, false, TestConstants.TEST_MAX_PLAYER_CONNECTIONS)); EstablishingSessionPolicy connectionState = new EstablishingSessionPolicy(TestConstants.TEST_CORRELATION_ID); // Act connectionState.NegotiateReservation(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <AwaitingReservationCredentials>()); }
public void DisconnectShouldTransitionToDisconnectedState() { // Arrange IClient serverClient = Substitute.For <IClient>(); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); SessionReservationRejected connection = new SessionReservationRejected(); // Act connection.Disconnect(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <Disconnected>()); }
public void DisconnectShouldResetTheConnectionContext() { // Arrange IClient serverClient = Substitute.For <IClient>(); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); SessionReservationRejected connectionState = new SessionReservationRejected(); // Act connectionState.Disconnect(connectionContext); // Assert connectionContext.Received().ClearSessionState(); }
public void DisconnectShouldTransitionToDisconnectedState() { // Arrange IClient serverClient = Substitute.For <IClient>(); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); AwaitingSessionReservation connectionState = new AwaitingSessionReservation(TestConstants.TEST_CORRELATION_ID); // Act connectionState.Disconnect(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <Disconnected>()); }
public void DisconnectShouldResetTheConnectionContext() { // Arrange IClient serverClient = Substitute.For <IClient>(); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); EstablishingSessionPolicy connectionState = new EstablishingSessionPolicy(TestConstants.TEST_CORRELATION_ID); // Act connectionState.Disconnect(connectionContext); // Assert connectionContext.Received().ClearSessionState(); }
public void NegotiateShouldTransitionToSessionReservationRejectedAfterReceivingRejectedReservation() { // Arrange MultiplayerSessionReservation rejectedReservation = new MultiplayerSessionReservation(TestConstants.TEST_CORRELATION_ID, TestConstants.TEST_REJECTION_STATE); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Reservation.Returns(rejectedReservation); AwaitingSessionReservation connectionState = new AwaitingSessionReservation(TestConstants.TEST_CORRELATION_ID); // Act connectionState.NegotiateReservation(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <SessionReservationRejected>()); }
public void NegotiateShouldTransitionToAwaitingSessionReservationState() { // Arrange IClient serverClient = Substitute.For <IClient>(); serverClient.IsConnected.Returns(true); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); connectionContext.PlayerSettings.Returns(TestConstants.TEST_PLAYER_SETTINGS); connectionContext.AuthenticationContext.Returns(TestConstants.TEST_AUTHENTICATION_CONTEXT); AwaitingReservationCredentials connectionState = new AwaitingReservationCredentials(); // Act connectionState.NegotiateReservation(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <AwaitingSessionReservation>()); }
public void NegotiateShouldTransitionToEstablishingSessionPolicyState() { // Arrange IClient serverClient = Substitute.For <IClient>(); serverClient.IsConnected.Returns(false); serverClient .When(client => client.Start(Arg.Any <string>())) .Do(info => serverClient.IsConnected.Returns(true)); IMultiplayerSessionConnectionContext connectionContext = Substitute.For <IMultiplayerSessionConnectionContext>(); connectionContext.Client.Returns(serverClient); Disconnected connectionState = new Disconnected(); // Act connectionState.NegotiateReservation(connectionContext); // Assert connectionContext.Received().UpdateConnectionState(Arg.Any <EstablishingSessionPolicy>()); }