blob: 8a9f3a3b63b30021460095da9b14ce16c99b7e35 [file] [log] [blame]
/*
* Copyright (C) 2015 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.transition.cts;
import com.android.cts.transition.R;
import android.animation.ObjectAnimator;
import android.transition.AutoTransition;
import android.transition.Scene;
import android.transition.TransitionManager;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class TransitionTest extends BaseTransitionTest {
public TransitionTest() {
}
public void testAddListener() throws Throwable {
startTransition(R.layout.scene1);
waitForStart();
final SimpleTransitionListener listener2 = new SimpleTransitionListener();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
AutoTransition autoTransition = new AutoTransition();
autoTransition.setDuration(100);
autoTransition.addListener(listener2);
Scene scene = Scene.getSceneForLayout(mSceneRoot, R.layout.scene2, mActivity);
TransitionManager.go(scene, autoTransition);
}
});
waitForStart(listener2);
assertTrue(mTransition.listener.paused);
assertTrue(mTransition.listener.resumed);
assertFalse(mTransition.listener.canceled);
assertFalse(mTransition.listener.ended);
assertTrue(mTransition.listener.started);
assertFalse(listener2.paused);
assertFalse(listener2.resumed);
assertFalse(listener2.canceled);
assertFalse(listener2.ended);
assertTrue(listener2.started);
endTransition();
}
public void testRemoveListener() throws Throwable {
startTransition(R.layout.scene1);
waitForStart();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
mTransition.removeListener(mTransition.listener);
}
});
Thread.sleep(150);
assertFalse(mTransition.listener.ended);
}
public void testAddTargetId() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget(R.id.holder);
mTransition.addTarget(R.id.hello);
assertEquals(2, mTransition.getTargetIds().size());
startTransition(R.layout.scene1);
assertEquals(1, mTargets.size());
assertEquals(R.id.hello, mTargets.get(0).getId());
endTransition();
}
public void testRemoveTargetId() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget(R.id.holder);
mTransition.addTarget(R.id.hello);
mTransition.addTarget(R.id.redSquare);
assertEquals(3, mTransition.getTargetIds().size());
mTransition.removeTarget(0); // nothing should happen
mTransition.removeTarget(R.id.redSquare);
assertEquals(2, mTransition.getTargetIds().size());
startTransition(R.layout.scene1);
assertEquals(1, mTargets.size());
assertEquals(R.id.hello, mTargets.get(0).getId());
endTransition();
}
public void testAddTargetClass() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget(RelativeLayout.class);
mTransition.addTarget(TextView.class);
assertEquals(2, mTransition.getTargetTypes().size());
startTransition(R.layout.scene1);
assertEquals(1, mTargets.size());
assertTrue(mTargets.get(0) instanceof TextView);
endTransition();
}
public void testRemoveTargetClass() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget(TextView.class);
mTransition.addTarget(View.class);
mTransition.addTarget(RelativeLayout.class);
assertEquals(3, mTransition.getTargetTypes().size());
mTransition.removeTarget(ImageView.class); // should do nothing
mTransition.removeTarget(View.class);
assertEquals(2, mTransition.getTargetTypes().size());
startTransition(R.layout.scene1);
assertEquals(1, mTargets.size());
assertTrue(mTargets.get(0) instanceof TextView);
endTransition();
}
public void testAddTargetView() throws Throwable {
enterScene(R.layout.scene1);
final View[] target = new View[1];
runTestOnUiThread(new Runnable() {
@Override
public void run() {
target[0] = mActivity.findViewById(R.id.hello);
}
});
mTransition.addTarget(target[0]);
assertEquals(1, mTransition.getTargets().size());
runTestOnUiThread(new Runnable() {
@Override
public void run() {
TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
target[0].setVisibility(View.GONE);
}
});
waitForStart();
assertEquals(1, mTargets.size());
assertEquals(target[0], mTargets.get(0));
endTransition();
}
public void testRemoveTargetView() throws Throwable {
enterScene(R.layout.scene1);
final View[] target = new View[3];
runTestOnUiThread(new Runnable() {
@Override
public void run() {
target[0] = mActivity.findViewById(R.id.hello);
target[1] = mActivity.findViewById(R.id.greenSquare);
target[2] = mActivity.findViewById(R.id.redSquare);
}
});
mTransition.addTarget(target[0]);
mTransition.addTarget(target[1]);
assertEquals(2, mTransition.getTargets().size());
mTransition.removeTarget(target[2]); // should do nothing
mTransition.removeTarget(target[1]);
assertEquals(1, mTransition.getTargets().size());
runTestOnUiThread(new Runnable() {
@Override
public void run() {
TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
target[0].setVisibility(View.GONE);
}
});
waitForStart();
assertEquals(1, mTargets.size());
assertEquals(target[0], mTargets.get(0));
endTransition();
}
public void testAddTargetName() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget("red");
mTransition.addTarget("holder");
assertEquals(2, mTransition.getTargetNames().size());
assertEquals(0, mTargets.size());
startTransition(R.layout.scene2);
assertEquals(1, mTargets.size());
assertEquals(R.id.redSquare, mTargets.get(0).getId());
endTransition();
}
public void testRemoveTargetName() throws Throwable {
enterScene(R.layout.scene4);
mTransition.addTarget("holder");
mTransition.addTarget("red");
mTransition.addTarget("green");
assertEquals(3, mTransition.getTargetNames().size());
mTransition.removeTarget("purple"); // should do nothing
// try to force a different String instance
String greenName = new StringBuilder("gre").append("en").toString();
mTransition.removeTarget(greenName);
assertEquals(2, mTransition.getTargetNames().size());
startTransition(R.layout.scene1);
assertEquals(1, mTargets.size());
assertEquals(R.id.redSquare, mTargets.get(0).getId());
endTransition();
}
public void testIsTransitionRequired() throws Throwable {
enterScene(R.layout.scene1);
mTransition = new NotRequiredTransition();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
mActivity.findViewById(R.id.hello).setVisibility(View.GONE);
}
});
waitForStart();
assertEquals(0, mTargets.size());
endTransition();
}
private class NotRequiredTransition extends TestTransition {
@Override
public boolean isTransitionRequired(TransitionValues startValues,
TransitionValues newValues) {
return false;
}
}
}