@Test
  public void isMostlyVisible_whenViewIsInvisibleOrGone_shouldReturnFalse() throws Exception {
    View view = createViewMock(View.INVISIBLE, 100, 100, 100, 100, true, true);
    assertThat(visibilityChecker.isVisible(view, MIN_PERCENTAGE_VIEWED)).isFalse();

    reset(view);
    view = createViewMock(View.GONE, 100, 100, 100, 100, true, true);
    assertThat(visibilityChecker.isVisible(view, MIN_PERCENTAGE_VIEWED)).isFalse();
  }
 @Test
 public void isMostlyVisible_whenViewIsNull_shouldReturnFalse() throws Exception {
   assertThat(visibilityChecker.isVisible(null, MIN_PERCENTAGE_VIEWED)).isFalse();
 }
  @Test
  public void isMostlyVisible_whenViewHasZeroWidthAndHeight_shouldReturnFalse() throws Exception {
    view = createViewMock(View.VISIBLE, 100, 100, 0, 0, true, true);

    assertThat(visibilityChecker.isVisible(view, MIN_PERCENTAGE_VIEWED)).isFalse();
  }
  @Test
  public void isMostlyVisible_whenViewIs49PercentVisible_shouldReturnFalse() throws Exception {
    view = createViewMock(View.VISIBLE, 49, 100, 100, 100, true, true);

    assertThat(visibilityChecker.isVisible(view, MIN_PERCENTAGE_VIEWED)).isFalse();
  }
  @Test
  public void isMostlyVisible_whenViewIsEntirelyOnScreen_shouldReturnTrue() throws Exception {
    view = createViewMock(View.VISIBLE, 100, 100, 100, 100, true, true);

    assertThat(visibilityChecker.isVisible(view, MIN_PERCENTAGE_VIEWED)).isTrue();
  }