@Test public void testRemoveFeature() {

	// Arrange:
	final Animator mockAnimator = mock(Animator.class);
	final AnimatorWrapper wrapper = new AnimatorWrapper(mockAnimator);
	wrapper.requestFeatures(AnimatorWrapper.ALL);
	// Act + Assert:
	wrapper.removeFeature(AnimatorWrapper.START);
	assertThat(wrapper.hasFeature(AnimatorWrapper.START), is(false));
	assertThat(wrapper.hasFeature(AnimatorWrapper.PAUSE | AnimatorWrapper.RESUME | AnimatorWrapper.END | AnimatorWrapper.CANCEL), is(true));
	wrapper.removeFeature(AnimatorWrapper.PAUSE);
	assertThat(wrapper.hasFeature(AnimatorWrapper.START | AnimatorWrapper.PAUSE), is(false));
	assertThat(wrapper.hasFeature(AnimatorWrapper.RESUME | AnimatorWrapper.END | AnimatorWrapper.CANCEL), is(true));
	wrapper.removeFeature(AnimatorWrapper.RESUME);
	assertThat(wrapper.hasFeature(AnimatorWrapper.START | AnimatorWrapper.PAUSE | AnimatorWrapper.RESUME), is(false));
	assertThat(wrapper.hasFeature(AnimatorWrapper.END | AnimatorWrapper.CANCEL), is(true));
	wrapper.removeFeature(AnimatorWrapper.END);
	assertThat(wrapper.hasFeature(AnimatorWrapper.END | AnimatorWrapper.START | AnimatorWrapper.PAUSE | AnimatorWrapper.RESUME), is(false));
	assertThat(wrapper.hasFeature(AnimatorWrapper.CANCEL), is(true));
	wrapper.removeFeature(AnimatorWrapper.CANCEL);
	assertThat(wrapper.hasFeature(AnimatorWrapper.ALL), is(false));
}