TransitionInflaterTest.java revision 4c904b38c763179727b9b5ea7a80454630545663
18158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki/* 28158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Copyright (C) 2017 The Android Open Source Project 38158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * 48158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License"); 58158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * you may not use this file except in compliance with the License. 68158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * You may obtain a copy of the License at 78158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * 88158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * http://www.apache.org/licenses/LICENSE-2.0 98158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * 108158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Unless required by applicable law or agreed to in writing, software 118158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS, 128158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * See the License for the specific language governing permissions and 148158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * limitations under the License. 158158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki */ 168158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 178158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakipackage android.support.transition; 188158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 198158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertEquals; 208158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertNotNull; 218158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertTrue; 228158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.fail; 238158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 248158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.content.Context; 258158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.annotation.NonNull; 268158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.test.filters.MediumTest; 278158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.transition.test.R; 288158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.util.AttributeSet; 298158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.widget.ImageView; 308158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.widget.TextView; 318158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 328158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport org.junit.Test; 338158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 348158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport java.util.List; 358158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 368158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki@MediumTest 378158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakipublic class TransitionInflaterTest extends BaseTest { 388158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 398158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki @Test 408158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public void testInflationConstructors() throws Throwable { 418158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki TransitionInflater inflater = TransitionInflater.from(rule.getActivity()); 428158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki // TODO: Add more Transition types 438158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki Transition transition = inflater.inflateTransition(R.transition.transition_constructors); 448158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(transition instanceof TransitionSet); 458158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki TransitionSet set = (TransitionSet) transition; 468158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(4, set.getTransitionCount()); 478158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 488158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 498158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki @Test 508158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public void testInflation() { 518158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki TransitionInflater inflater = TransitionInflater.from(rule.getActivity()); 528158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki // TODO: Add more Transition types 538158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyFadeProperties(inflater.inflateTransition(R.transition.fade)); 544c904b38c763179727b9b5ea7a80454630545663Yuichi Araki verifyExplodeProperties(inflater.inflateTransition(R.transition.explode)); 558158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyAutoTransitionProperties(inflater.inflateTransition(R.transition.auto_transition)); 568158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyTransitionSetProperties(inflater.inflateTransition(R.transition.transition_set)); 578158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyCustomTransitionProperties( 588158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki inflater.inflateTransition(R.transition.custom_transition)); 598158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyTargetIds(inflater.inflateTransition(R.transition.target_ids)); 608158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyTargetNames(inflater.inflateTransition(R.transition.target_names)); 618158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki verifyTargetClass(inflater.inflateTransition(R.transition.target_classes)); 628158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 638158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 648158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki // TODO: Add test for TransitionManager 658158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 668158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyFadeProperties(Transition transition) { 678158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(transition instanceof Fade); 688158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki Fade fade = (Fade) transition; 698158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(Fade.OUT, fade.getMode()); 708158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 718158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 724c904b38c763179727b9b5ea7a80454630545663Yuichi Araki private void verifyExplodeProperties(Transition transition) { 734c904b38c763179727b9b5ea7a80454630545663Yuichi Araki assertTrue(transition instanceof Explode); 744c904b38c763179727b9b5ea7a80454630545663Yuichi Araki Visibility visibility = (Visibility) transition; 754c904b38c763179727b9b5ea7a80454630545663Yuichi Araki assertEquals(Visibility.MODE_IN, visibility.getMode()); 764c904b38c763179727b9b5ea7a80454630545663Yuichi Araki } 774c904b38c763179727b9b5ea7a80454630545663Yuichi Araki 788158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyAutoTransitionProperties(Transition transition) { 798158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(transition instanceof AutoTransition); 808158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 818158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 828158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyTransitionSetProperties(Transition transition) { 838158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(transition instanceof TransitionSet); 848158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki TransitionSet set = (TransitionSet) transition; 858158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(TransitionSet.ORDERING_SEQUENTIAL, set.getOrdering()); 868158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(2, set.getTransitionCount()); 878158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(set.getTransitionAt(0) instanceof ChangeBounds); 888158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(set.getTransitionAt(1) instanceof Fade); 898158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 908158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 918158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyCustomTransitionProperties(Transition transition) { 928158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertTrue(transition instanceof CustomTransition); 938158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 948158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 958158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyTargetIds(Transition transition) { 968158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki List<Integer> targets = transition.getTargetIds(); 978158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertNotNull(targets); 988158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(2, targets.size()); 998158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(R.id.hello, (int) targets.get(0)); 1008158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(R.id.world, (int) targets.get(1)); 1018158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1028158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1038158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyTargetNames(Transition transition) { 1048158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki List<String> targets = transition.getTargetNames(); 1058158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertNotNull(targets); 1068158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(2, targets.size()); 1078158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals("hello", targets.get(0)); 1088158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals("world", targets.get(1)); 1098158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1108158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1118158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki private void verifyTargetClass(Transition transition) { 1128158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki List<Class> targets = transition.getTargetTypes(); 1138158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertNotNull(targets); 1148158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(2, targets.size()); 1158158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(TextView.class, targets.get(0)); 1168158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki assertEquals(ImageView.class, targets.get(1)); 1178158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1188158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1198158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public static class CustomTransition extends Transition { 1208158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public CustomTransition() { 1218158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki fail("Default constructor was not expected"); 1228158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1238158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1248158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki @SuppressWarnings("unused") // This constructor is used in XML 1258158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public CustomTransition(Context context, AttributeSet attrs) { 1268158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki super(context, attrs); 1278158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1288158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1298158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki @Override 1308158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public void captureStartValues(@NonNull TransitionValues transitionValues) { 1318158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1328158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1338158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki @Override 1348158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public void captureEndValues(@NonNull TransitionValues transitionValues) { 1358158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1368158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1378158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1388158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public static class InflationFade extends Fade { 1398158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public InflationFade(Context context, AttributeSet attrs) { 1408158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki super(context, attrs); 1418158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1428158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1438158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1448158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public static class InflationChangeBounds extends ChangeBounds { 1458158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public InflationChangeBounds(Context context, AttributeSet attrs) { 1468158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki super(context, attrs); 1478158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1488158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1498158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1508158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public static class InflationTransitionSet extends TransitionSet { 1518158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public InflationTransitionSet(Context context, AttributeSet attrs) { 1528158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki super(context, attrs); 1538158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1548158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1558158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1568158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public static class InflationAutoTransition extends AutoTransition { 1578158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki public InflationAutoTransition(Context context, AttributeSet attrs) { 1588158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki super(context, attrs); 1598158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1608158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki } 1618158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki 1628158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki} 163