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