GameContext extends GraphicalContext<Pane> implements IGameContext { @Override public ObservableList<Node> getChildren() { return gamingRoot.getChildren(); } protected  GameContext(
        @NonNull GazePlay gazePlay,
        @NonNull Translator translator,
        @NonNull Pane root,
        @NonNull Pane gamingRoot,
        @NonNull Bravo bravo,
        @NonNull HBox menuHBox,
        @NonNull GazeDeviceManager gazeDeviceManager,
        @NonNull SoundManager soundManager,
        @NonNull Pane configPane
    ); static void updateConfigPane(final Pane configPane, Stage primaryStage); @Override void setUpOnStage(final Scene scene); void resetBordersToFront(); @Override Supplier<Dimension2D> getCurrentScreenDimensionSupplier(); @Override void startScoreLimiter(); @Override void startTimeLimiter(); @Override void setLimiterAvailable(); @Override void start(); @Override void firstStart(); @Override void stop(); @Override void updateScore(Stats stats, GameLifeCycle currentGame); @Override void updateScore(Stats stats, GameLifeCycle currentGame,  EventHandler<ActionEvent> onTimeLimiterEndEventHandler, EventHandler<ActionEvent> onScoreLimiterEndEventHandler); void createQuitShortcut(@NonNull GazePlay gazePlay, @NonNull Stats stats, GameLifeCycle currentGame); void createControlPanel(@NonNull GazePlay gazePlay, @NonNull Stats stats, GameLifeCycle currentGame); HomeButton createHomeButtonInGameScreen(@NonNull GazePlay gazePlay, @NonNull Stats stats,
                                                   @NonNull GameLifeCycle currentGame); @Override @NonNull Configuration getConfiguration(); @Override AnimationSpeedRatioSource getAnimationSpeedRatioSource(); @Override Stage getPrimaryStage(); @Override Scene getPrimaryScene(); @Override void showRoundStats(Stats stats, GameLifeCycle currentGame); @Override void playWinTransition(long delay, EventHandler<ActionEvent> onFinishedEventHandler); @Override void endWinTransition(); @Override ObservableList<Node> getChildren(); @Override Pane getRoot(); void onGameStarted();  }
@Test void shouldInitialisePointersOnConstruction() { when(mockConfiguration.isVideoRecordingEnabled()).thenReturn(true); when(mockRoot.getChildren()).thenReturn(mockList); new GameContext(mockGazePlay, mockTranslator, mockRoot, mockGamingRoot, mockBravo, mockHBox, mockGazeDeviceManager, mockSoundManager, mockConfigPane); verify(mockList, times(2)).add(any()); verify(mockRoot, times(2)).addEventFilter(any(), any()); }
@Test void shouldNotInitialisePointersOnConstruction() { when(mockConfiguration.isVideoRecordingEnabled()).thenReturn(false); when(mockRoot.getChildren()).thenReturn(mockList); new GameContext(mockGazePlay, mockTranslator, mockRoot, mockGamingRoot, mockBravo, mockHBox, mockGazeDeviceManager, mockSoundManager, mockConfigPane); verify(mockList, never()).add(any()); verify(mockRoot, never()).addEventFilter(any(), any()); }