47 lines
1.7 KiB
Java
47 lines
1.7 KiB
Java
package uulm.teamname.marvelous.server.lobby.pipelining;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
|
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
|
|
import uulm.teamname.marvelous.gamelibrary.requests.RequestBuilder;
|
|
import uulm.teamname.marvelous.gamelibrary.events.EventType;
|
|
import uulm.teamname.marvelous.gamelibrary.gamelogic.GameInstance;
|
|
import uulm.teamname.marvelous.gamelibrary.requests.Request;
|
|
import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
|
|
|
|
import java.util.List;
|
|
import java.util.ArrayList;
|
|
import java.util.Optional;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import static org.mockito.Mockito.*;
|
|
import static org.assertj.core.api.Assertions.*;
|
|
|
|
class GameLogicSegmentTest {
|
|
|
|
@Test
|
|
void processRequests() {
|
|
var game = mock(GameInstance.class);
|
|
var request = new RequestBuilder(RequestType.DisconnectRequest).buildGameRequest();
|
|
var event = new EventBuilder(EventType.DisconnectEvent).buildGameEvent();
|
|
when(game.checkRequestsAndApply(any(ArrayList.class))).thenReturn(Optional.of(List.of(event)));
|
|
var abort = new AtomicBoolean(false);
|
|
|
|
var segment = new GameLogicSegment(game);
|
|
|
|
// note that DisconnectRequests are actually never passed to the GameLogic, ever.
|
|
var packet = new Packet(
|
|
new Request[] {request},
|
|
null);
|
|
|
|
var carrier = new ArrayList<Event>(1);
|
|
|
|
segment.processRequests(packet, carrier, abort);
|
|
|
|
assertThat(packet).isEmpty();
|
|
assertThat(carrier).contains(event);
|
|
verify(game).checkRequestsAndApply(any(Packet.class));
|
|
assertThat(abort.get()).isFalse();
|
|
}
|
|
}
|