/** Test method for {@link AbstractMediaRouteController#shouldResetState(MediaStateListener)}. */
  @Test
  @Feature({"MediaRemote"})
  public void testShouldResetState() {
    AbstractMediaRouteController mediaRouteCtrl = new DummyMediaRouteController();
    MediaStateListener listener = mock(MediaStateListener.class);

    mediaRouteCtrl.setMediaStateListener(null);

    assertTrue(mediaRouteCtrl.shouldResetState(null));
    assertTrue(mediaRouteCtrl.shouldResetState(mock(MediaStateListener.class)));

    mediaRouteCtrl.setPlayerStateForMediaItemState(MediaItemStatus.PLAYBACK_STATE_PLAYING);

    assertFalse(mediaRouteCtrl.shouldResetState(null));
    assertTrue(mediaRouteCtrl.shouldResetState(mock(MediaStateListener.class)));

    mediaRouteCtrl.setPlayerStateForMediaItemState(MediaItemStatus.PLAYBACK_STATE_FINISHED);
    mediaRouteCtrl.setMediaStateListener(listener);

    assertTrue(mediaRouteCtrl.shouldResetState(null));
    assertTrue(mediaRouteCtrl.shouldResetState(mock(MediaStateListener.class)));
    assertTrue(mediaRouteCtrl.shouldResetState(listener));

    mediaRouteCtrl.setPlayerStateForMediaItemState(MediaItemStatus.PLAYBACK_STATE_PLAYING);

    assertTrue(mediaRouteCtrl.shouldResetState(null));
    assertTrue(mediaRouteCtrl.shouldResetState(mock(MediaStateListener.class)));
    assertFalse(mediaRouteCtrl.shouldResetState(listener));
  }