TransitionInflaterTest.java revision ae4925aede60914bcca5ed47d7ce868ae14313a2
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.support.transition;
18
19import static junit.framework.TestCase.assertFalse;
20
21import static org.junit.Assert.assertEquals;
22import static org.junit.Assert.assertNotNull;
23import static org.junit.Assert.assertTrue;
24import static org.junit.Assert.fail;
25
26import android.content.Context;
27import android.support.annotation.NonNull;
28import android.support.test.filters.MediumTest;
29import android.support.transition.test.R;
30import android.util.AttributeSet;
31import android.view.Gravity;
32import android.widget.ImageView;
33import android.widget.TextView;
34
35import org.junit.Test;
36
37import java.util.List;
38
39@MediumTest
40public class TransitionInflaterTest extends BaseTest {
41
42    @Test
43    public void testInflationConstructors() throws Throwable {
44        TransitionInflater inflater = TransitionInflater.from(rule.getActivity());
45        // TODO: Add more Transition types
46        Transition transition = inflater.inflateTransition(R.transition.transition_constructors);
47        assertTrue(transition instanceof TransitionSet);
48        TransitionSet set = (TransitionSet) transition;
49        assertEquals(4, set.getTransitionCount());
50    }
51
52    @Test
53    public void testInflation() {
54        TransitionInflater inflater = TransitionInflater.from(rule.getActivity());
55        // TODO: Add more Transition types
56        verifyFadeProperties(inflater.inflateTransition(R.transition.fade));
57        verifySlideProperties(inflater.inflateTransition(R.transition.slide));
58        verifyExplodeProperties(inflater.inflateTransition(R.transition.explode));
59        verifyChangeImageTransformProperties(
60                inflater.inflateTransition(R.transition.change_image_transform));
61        verifyChangeTransformProperties(inflater.inflateTransition(R.transition.change_transform));
62        verifyChangeClipBoundsProperties(
63                inflater.inflateTransition(R.transition.change_clip_bounds));
64        verifyAutoTransitionProperties(inflater.inflateTransition(R.transition.auto_transition));
65        verifyTransitionSetProperties(inflater.inflateTransition(R.transition.transition_set));
66        verifyCustomTransitionProperties(
67                inflater.inflateTransition(R.transition.custom_transition));
68        verifyTargetIds(inflater.inflateTransition(R.transition.target_ids));
69        verifyTargetNames(inflater.inflateTransition(R.transition.target_names));
70        verifyTargetClass(inflater.inflateTransition(R.transition.target_classes));
71    }
72
73    // TODO: Add test for TransitionManager
74
75    private void verifyFadeProperties(Transition transition) {
76        assertTrue(transition instanceof Fade);
77        Fade fade = (Fade) transition;
78        assertEquals(Fade.OUT, fade.getMode());
79    }
80
81    private void verifySlideProperties(Transition transition) {
82        assertTrue(transition instanceof Slide);
83        Slide slide = (Slide) transition;
84        assertEquals(Gravity.TOP, slide.getSlideEdge());
85    }
86
87    private void verifyExplodeProperties(Transition transition) {
88        assertTrue(transition instanceof Explode);
89        Visibility visibility = (Visibility) transition;
90        assertEquals(Visibility.MODE_IN, visibility.getMode());
91    }
92
93    private void verifyChangeImageTransformProperties(Transition transition) {
94        assertTrue(transition instanceof ChangeImageTransform);
95    }
96
97    private void verifyChangeTransformProperties(Transition transition) {
98        assertTrue(transition instanceof ChangeTransform);
99        ChangeTransform changeTransform = (ChangeTransform) transition;
100        assertFalse(changeTransform.getReparent());
101        assertFalse(changeTransform.getReparentWithOverlay());
102    }
103
104    private void verifyChangeClipBoundsProperties(Transition transition) {
105        assertTrue(transition instanceof ChangeClipBounds);
106    }
107
108    private void verifyAutoTransitionProperties(Transition transition) {
109        assertTrue(transition instanceof AutoTransition);
110    }
111
112    private void verifyTransitionSetProperties(Transition transition) {
113        assertTrue(transition instanceof TransitionSet);
114        TransitionSet set = (TransitionSet) transition;
115        assertEquals(TransitionSet.ORDERING_SEQUENTIAL, set.getOrdering());
116        assertEquals(2, set.getTransitionCount());
117        assertTrue(set.getTransitionAt(0) instanceof ChangeBounds);
118        assertTrue(set.getTransitionAt(1) instanceof Fade);
119    }
120
121    private void verifyCustomTransitionProperties(Transition transition) {
122        assertTrue(transition instanceof CustomTransition);
123    }
124
125    private void verifyTargetIds(Transition transition) {
126        List<Integer> targets = transition.getTargetIds();
127        assertNotNull(targets);
128        assertEquals(2, targets.size());
129        assertEquals(R.id.hello, (int) targets.get(0));
130        assertEquals(R.id.world, (int) targets.get(1));
131    }
132
133    private void verifyTargetNames(Transition transition) {
134        List<String> targets = transition.getTargetNames();
135        assertNotNull(targets);
136        assertEquals(2, targets.size());
137        assertEquals("hello", targets.get(0));
138        assertEquals("world", targets.get(1));
139    }
140
141    private void verifyTargetClass(Transition transition) {
142        List<Class> targets = transition.getTargetTypes();
143        assertNotNull(targets);
144        assertEquals(2, targets.size());
145        assertEquals(TextView.class, targets.get(0));
146        assertEquals(ImageView.class, targets.get(1));
147    }
148
149    public static class CustomTransition extends Transition {
150        public CustomTransition() {
151            fail("Default constructor was not expected");
152        }
153
154        @SuppressWarnings("unused") // This constructor is used in XML
155        public CustomTransition(Context context, AttributeSet attrs) {
156            super(context, attrs);
157        }
158
159        @Override
160        public void captureStartValues(@NonNull TransitionValues transitionValues) {
161        }
162
163        @Override
164        public void captureEndValues(@NonNull TransitionValues transitionValues) {
165        }
166    }
167
168    public static class InflationFade extends Fade {
169        public InflationFade(Context context, AttributeSet attrs) {
170            super(context, attrs);
171        }
172    }
173
174    public static class InflationChangeBounds extends ChangeBounds {
175        public InflationChangeBounds(Context context, AttributeSet attrs) {
176            super(context, attrs);
177        }
178    }
179
180    public static class InflationTransitionSet extends TransitionSet {
181        public InflationTransitionSet(Context context, AttributeSet attrs) {
182            super(context, attrs);
183        }
184    }
185
186    public static class InflationAutoTransition extends AutoTransition {
187        public InflationAutoTransition(Context context, AttributeSet attrs) {
188            super(context, attrs);
189        }
190    }
191
192}
193