/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.support.transition;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.sameInstance;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.support.test.annotation.UiThreadTest;
import android.support.test.filters.MediumTest;
import android.support.transition.test.R;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import org.junit.Test;
import java.util.List;
@MediumTest
public class TransitionTest extends BaseTest {
@Test
public void testDuration() {
Transition transition = new EmptyTransition();
long duration = 12345;
assertThat(transition.setDuration(duration), is(sameInstance(transition)));
assertThat(transition.getDuration(), is(duration));
}
@Test
public void testInterpolator() {
Transition transition = new EmptyTransition();
TimeInterpolator interpolator = new LinearInterpolator();
assertThat(transition.setInterpolator(interpolator), is(sameInstance(transition)));
assertThat(transition.getInterpolator(), is(interpolator));
}
@Test
public void testStartDelay() {
Transition transition = new EmptyTransition();
long startDelay = 12345;
assertThat(transition.setStartDelay(startDelay), is(sameInstance(transition)));
assertThat(transition.getStartDelay(), is(startDelay));
}
@Test
public void testTargetIds() {
Transition transition = new EmptyTransition();
assertThat(transition.addTarget(R.id.view0), is(sameInstance(transition)));
assertThat(transition.addTarget(R.id.view1), is(sameInstance(transition)));
List<Integer> targetIds = transition.getTargetIds();
assertThat(targetIds.size(), is(2));
assertThat(targetIds, hasItem(R.id.view0));
assertThat(targetIds, hasItem(R.id.view1));
assertThat(transition.removeTarget(R.id.view0), is(sameInstance(transition)));
targetIds = transition.getTargetIds();
assertThat(targetIds.size(), is(1));
assertThat(targetIds, not(hasItem(R.id.view0)));
assertThat(targetIds, hasItem(R.id.view1));
}
@Test
@UiThreadTest
public void testTargets() {
// Set up views
TransitionActivity activity = rule.getActivity();
ViewGroup root = activity.getRoot();
View container = LayoutInflater.from(activity).inflate(R.layout.scene0, root, false);
root.addView(container);
View view0 = container.findViewById(R.id.view0);
View view1 = container.findViewById(R.id.view1);
// Test transition targets
Transition transition = new EmptyTransition();
assertThat(transition.addTarget(view0), is(sameInstance(transition)));
assertThat(transition.addTarget(view1), is(sameInstance(transition)));
List<View> targets = transition.getTargets();
assertThat(targets.size(), is(2));
assertThat(targets, hasItem(sameInstance(view0)));
assertThat(targets, hasItem(sameInstance(view1)));
assertThat(transition.removeTarget(view0), is(sameInstance(transition)));
targets = transition.getTargets();
assertThat(targets.size(), is(1));
assertThat(targets, not(hasItem(sameInstance(view0))));
assertThat(targets, hasItem(sameInstance(view1)));
}
@Test
public void testListener() {
Transition transition = new EmptyTransition();
Transition.TransitionListener listener = new EmptyTransitionListener();
assertThat(transition.addListener(listener), is(sameInstance(transition)));
assertThat(transition.removeListener(listener), is(sameInstance(transition)));
}
public static class EmptyTransition extends Transition {
public void captureEndValues(TransitionValues transitionValues) {
}
public void captureStartValues(TransitionValues transitionValues) {
}
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
TransitionValues endValues) {
return null;
}
}
public static class EmptyTransitionListener implements Transition.TransitionListener {
public void onTransitionStart(Transition transition) {
}
public void onTransitionEnd(Transition transition) {
}
public void onTransitionCancel(Transition transition) {
}
public void onTransitionPause(Transition transition) {
}
public void onTransitionResume(Transition transition) {
}
}
}