### Question:
ChangeClipBounds extends Transition { public ChangeClipBounds() { } ChangeClipBounds();  ChangeClipBounds(Context context, AttributeSet attrs); @Override String[] getTransitionProperties(); @Override void captureStartValues(@NonNull TransitionValues transitionValues); @Override void captureEndValues(@NonNull TransitionValues transitionValues); @Override Animator createAnimator(@NonNull final ViewGroup sceneRoot, TransitionValues startValues,
            TransitionValues endValues);  }### Answer:
@SdkSuppress(minSdkVersion = 18) @Test public void testChangeClipBounds() throws Throwable { enterScene(R.layout.scene1); final View redSquare = rule.getActivity().findViewById(R.id.redSquare); final Rect newClip = new Rect(redSquare.getLeft() + 10, redSquare.getTop() + 10, redSquare.getRight() - 10, redSquare.getBottom() - 10); rule.runOnUiThread(new Runnable() { @Override public void run() { assertNull(ViewCompat.getClipBounds(redSquare)); TransitionManager.beginDelayedTransition(mRoot, mTransition); ViewCompat.setClipBounds(redSquare, newClip); } }); waitForStart(); Thread.sleep(150); rule.runOnUiThread(new Runnable() { @Override public void run() { Rect midClip = ViewCompat.getClipBounds(redSquare); assertNotNull(midClip); assertTrue(midClip.left > 0 && midClip.left < newClip.left); assertTrue(midClip.top > 0 && midClip.top < newClip.top); assertTrue(midClip.right < redSquare.getRight() && midClip.right > newClip.right); assertTrue(midClip.bottom < redSquare.getBottom() && midClip.bottom > newClip.bottom); } }); waitForEnd(); rule.runOnUiThread(new Runnable() { @Override public void run() { final Rect endRect = ViewCompat.getClipBounds(redSquare); assertNotNull(endRect); assertEquals(newClip, endRect); } }); resetListener(); rule.runOnUiThread(new Runnable() { @Override public void run() { TransitionManager.beginDelayedTransition(mRoot, mTransition); ViewCompat.setClipBounds(redSquare, null); } }); waitForStart(); Thread.sleep(150); rule.runOnUiThread(new Runnable() { @Override public void run() { Rect midClip = ViewCompat.getClipBounds(redSquare); assertNotNull(midClip); assertTrue(midClip.left > 0 && midClip.left < newClip.left); assertTrue(midClip.top > 0 && midClip.top < newClip.top); assertTrue(midClip.right < redSquare.getRight() && midClip.right > newClip.right); assertTrue(midClip.bottom < redSquare.getBottom() && midClip.bottom > newClip.bottom); } }); waitForEnd(); rule.runOnUiThread(new Runnable() { @Override public void run() { assertNull(ViewCompat.getClipBounds(redSquare)); } }); }