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