@Test public void testMatchParentWidthAndHeight() { LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); view.setLayoutParams(params); target.getSize(cb); verify(cb, never()).onSizeReady(anyInt(), anyInt()); int width = 32; int height = 45; shadowView .setWidth(width) .setHeight(height) .setIsLaidOut(true); shadowObserver.fireOnPreDrawListeners(); verify(cb).onSizeReady(eq(width), eq(height)); }
@Test public void getSize_withWidthAndHeightEqualToPadding_doesNotCallSizeReady() { shadowView .setWidth(100) .setHeight(100) .setIsLaidOut(true); view.setPadding(50, 50, 50, 50); target.getSize(cb); verify(cb, never()).onSizeReady(anyInt(), anyInt()); }
@Test public void getSize_withLayoutParams_notLaidOut_doesCallSizeReady() { shadowView .setLayoutParams(new LayoutParams(10, 10)) .setWidth(100) .setHeight(100) .setIsLaidOut(false); target.getSize(cb); verify(cb, times(1)).onSizeReady(anyInt(), anyInt()); }
@Test public void testSizeCallbacksAreCalledInOrderPreDraw() { SizeReadyCallback[] cbs = new SizeReadyCallback[25]; for (int i = 0; i < cbs.length; i++) { cbs[i] = mock(SizeReadyCallback.class); target.getSize(cbs[i]); } int width = 100, height = 111; shadowView .setWidth(width) .setHeight(height) .setIsLaidOut(true); shadowObserver.fireOnPreDrawListeners(); InOrder order = inOrder((Object[]) cbs); for (SizeReadyCallback cb : cbs) { order.verify(cb).onSizeReady(eq(width), eq(height)); } }
@Test public void getSize_withWrapContentWidthAndMatchParentHeight_usesDisplayDimenWidthAndHeight() { LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); view.setLayoutParams(params); setDisplayDimens(500, 600); target.getSize(cb); verify(cb, never()).onSizeReady(anyInt(), anyInt()); int height = 32; shadowView .setHeight(height) .setIsLaidOut(true); shadowObserver.fireOnPreDrawListeners(); verify(cb).onSizeReady(600, height); }
@Test public void getSize_withValidWidthAndHeight_preV19_layoutRequested_callsSizeReady() { Util.setSdkVersionInt(18); shadowView .setWidth(100) .setHeight(100) .requestLayout(); target.getSize(cb); verify(cb).onSizeReady(100, 100); }
@Test public void getSize_withValidWidthAndHeight_notLaidOut_notLayoutRequested_callsSizeReady() { shadowView .setWidth(100) .setHeight(100) .setIsLaidOut(false); target.getSize(cb); verify(cb).onSizeReady(100, 100); }
@Test public void testSizeCallbackIsCalledPreDrawIfNoDimensAndNoLayoutParams() { target.getSize(cb); int width = 12; int height = 32; shadowView .setWidth(width) .setHeight(height) .setIsLaidOut(true); shadowObserver.fireOnPreDrawListeners(); verify(cb).onSizeReady(eq(width), eq(height)); }
@Test public void testSizeCallbackIsCalledSynchronouslyIfViewSizeSet() { int dimens = 333; shadowView .setWidth(dimens) .setHeight(dimens) .setIsLaidOut(true); target.getSize(cb); verify(cb).onSizeReady(eq(dimens), eq(dimens)); }
@Test public void getSize_withLayoutParams_emptyParams_notLaidOutOrLayoutRequested_callsSizeReady() { shadowView .setLayoutParams(new LayoutParams(0, 0)) .setWidth(100) .setHeight(100) .setIsLaidOut(false); target.getSize(cb); verify(cb).onSizeReady(100, 100); }