Tests for add/remove targets on Transition.
Bug 21667680
Change-Id: Ica6190638081a37ac89c6bcc4aa5e6a4631c29f6
diff --git a/tests/tests/transition/res/layout/scene1.xml b/tests/tests/transition/res/layout/scene1.xml
index 4ed5b03..140bb8d 100644
--- a/tests/tests/transition/res/layout/scene1.xml
+++ b/tests/tests/transition/res/layout/scene1.xml
@@ -16,14 +16,23 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#F00"
+ android:transitionName="red"
android:id="@+id/redSquare" />
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
+ android:transitionName="green"
android:id="@+id/greenSquare"
android:layout_below="@+id/redSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:transitionName="hello"
+ android:text="@string/hello"
+ android:id="@+id/hello"/>
</RelativeLayout>
diff --git a/tests/tests/transition/res/layout/scene2.xml b/tests/tests/transition/res/layout/scene2.xml
index 2033c95..541ec04 100644
--- a/tests/tests/transition/res/layout/scene2.xml
+++ b/tests/tests/transition/res/layout/scene2.xml
@@ -16,14 +16,22 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
+ android:transitionName="green"
android:id="@+id/greenSquare" />
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#F00"
+ android:transitionName="red"
android:id="@+id/redSquare"
android:layout_below="@+id/greenSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/world"
+ android:id="@+id/world"/>
</RelativeLayout>
diff --git a/tests/tests/transition/res/layout/scene3.xml b/tests/tests/transition/res/layout/scene3.xml
index b0625aa..01fb78d 100644
--- a/tests/tests/transition/res/layout/scene3.xml
+++ b/tests/tests/transition/res/layout/scene3.xml
@@ -16,7 +16,8 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
diff --git a/tests/tests/transition/res/layout/scene4.xml b/tests/tests/transition/res/layout/scene4.xml
new file mode 100644
index 0000000..1f1b7d6
--- /dev/null
+++ b/tests/tests/transition/res/layout/scene4.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder"/>
diff --git a/tests/tests/transition/res/values/strings.xml b/tests/tests/transition/res/values/strings.xml
index 579da74..d9cf8c7 100644
--- a/tests/tests/transition/res/values/strings.xml
+++ b/tests/tests/transition/res/values/strings.xml
@@ -15,4 +15,6 @@
-->
<resources>
<string name="add_button">Add Button</string>
+ <string name="hello">Hello</string>
+ <string name="world">World</string>
</resources>
diff --git a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
index 4bbfc2c..1537da3 100644
--- a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
@@ -107,6 +107,17 @@
});
}
+ protected void enterScene(final int layoutId) throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Scene scene = Scene.getSceneForLayout(mSceneRoot, layoutId, mActivity);
+ scene.enter();
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+ }
+
public class TestTransition extends Visibility {
public final SimpleTransitionListener listener = new SimpleTransitionListener();
diff --git a/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java b/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
index 4d18bbfb..113f5a5 100644
--- a/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
+++ b/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
@@ -22,6 +22,7 @@
* Listener captures whether each of the methods is called.
*/
class SimpleTransitionListener implements TransitionListener {
+ public Transition transition;
public boolean started;
@@ -36,6 +37,7 @@
@Override
public synchronized void onTransitionStart(Transition transition) {
started = true;
+ this.transition = transition;
notifyAll();
}
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java b/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
index 5d16b19..78db908 100644
--- a/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
+++ b/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
@@ -20,7 +20,6 @@
import android.transition.Scene;
import android.transition.TransitionManager;
import android.view.View;
-import android.widget.FrameLayout;
public class TransitionManagerTest extends BaseTransitionTest {
@@ -43,6 +42,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -60,6 +62,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -86,7 +91,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
-
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -132,7 +139,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
-
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionTest.java b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
index 6ecf8a4..340d557 100644
--- a/tests/tests/transition/src/android/transition/cts/TransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
@@ -17,9 +17,16 @@
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 {
@@ -28,11 +35,9 @@
public void testAddListener() throws Throwable {
startTransition(R.layout.scene1);
-
waitForStart();
final SimpleTransitionListener listener2 = new SimpleTransitionListener();
- mTransition.addListener(listener2);
runTestOnUiThread(new Runnable() {
@Override
@@ -50,13 +55,13 @@
assertTrue(mTransition.listener.paused);
assertTrue(mTransition.listener.resumed);
assertFalse(mTransition.listener.canceled);
- assertTrue(mTransition.listener.ended);
+ assertFalse(mTransition.listener.ended);
assertTrue(mTransition.listener.started);
- assertTrue(listener2.paused);
- assertTrue(listener2.resumed);
+ assertFalse(listener2.paused);
+ assertFalse(listener2.resumed);
assertFalse(listener2.canceled);
- assertTrue(listener2.ended);
+ assertFalse(listener2.ended);
assertTrue(listener2.started);
endTransition();
}
@@ -75,5 +80,144 @@
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();
+ }
}