FadeTest.java revision 754cb29c50f09a83251dd4bb633ba445b2411adb
1e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki/*
2e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * Copyright (C) 2016 The Android Open Source Project
3e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki *
4e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
5e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * you may not use this file except in compliance with the License.
6e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * You may obtain a copy of the License at
7e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki *
8e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
9e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki *
10e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * Unless required by applicable law or agreed to in writing, software
11e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
12e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * See the License for the specific language governing permissions and
14e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki * limitations under the License.
15e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki */
16e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
17e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakipackage android.support.transition;
18e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
19e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport static org.hamcrest.CoreMatchers.is;
20e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport static org.hamcrest.CoreMatchers.notNullValue;
21e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport static org.hamcrest.CoreMatchers.nullValue;
22e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport static org.junit.Assert.assertThat;
23e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
24e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport android.animation.Animator;
25e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport android.support.test.InstrumentationRegistry;
26e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport android.support.test.annotation.UiThreadTest;
27754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.test.filters.MediumTest;
28e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport android.view.View;
29e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport android.view.ViewGroup;
30e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
31e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport org.junit.Before;
32e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakiimport org.junit.Test;
33e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
3424797374d6c3370ab857f254e8e58248c41c3dd9Aurimas Liutikas@MediumTest
35e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Arakipublic class FadeTest extends BaseTest {
36e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
37e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    private View mView;
38e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    private ViewGroup mRoot;
39e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
40e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @Before
41e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    public void setUp() {
42e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
43e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki            @Override
44e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki            public void run() {
45e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki                mRoot = rule.getActivity().getRoot();
46e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki                mView = new View(rule.getActivity());
47e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki                mRoot.addView(mView, new ViewGroup.LayoutParams(100, 100));
48e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki            }
49e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        });
50e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    }
51e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
52e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @Test
53e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @UiThreadTest
54e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    public void testDisappear() {
55e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final Fade fade = new Fade();
56e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues startValues = new TransitionValues();
57e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        startValues.view = mView;
58e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureStartValues(startValues);
59e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        mView.setVisibility(View.INVISIBLE);
60e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues endValues = new TransitionValues();
61e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        endValues.view = mView;
62e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureEndValues(endValues);
63e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        Animator animator = fade.createAnimator(mRoot, startValues, endValues);
64e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        assertThat(animator, is(notNullValue()));
65e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    }
66e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
67e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @Test
68e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @UiThreadTest
69e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    public void testAppear() {
70e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        mView.setVisibility(View.INVISIBLE);
71e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final Fade fade = new Fade();
72e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues startValues = new TransitionValues();
73e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        startValues.view = mView;
74e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureStartValues(startValues);
75e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        mView.setVisibility(View.VISIBLE);
76e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues endValues = new TransitionValues();
77e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        endValues.view = mView;
78e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureEndValues(endValues);
79e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        Animator animator = fade.createAnimator(mRoot, startValues, endValues);
80e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        assertThat(animator, is(notNullValue()));
81e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    }
82e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
83e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @Test
84e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    @UiThreadTest
85e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    public void testNoChange() {
86e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final Fade fade = new Fade();
87e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues startValues = new TransitionValues();
88e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        startValues.view = mView;
89e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureStartValues(startValues);
90e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        final TransitionValues endValues = new TransitionValues();
91e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        endValues.view = mView;
92e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        fade.captureEndValues(endValues);
93e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        Animator animator = fade.createAnimator(mRoot, startValues, endValues);
94e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        // No visibility change; no animation should happen
95e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki        assertThat(animator, is(nullValue()));
96e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki    }
97e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki
98e73fed4be4cf678ea3828e20805ddffe73ae7ad0Yuichi Araki}
99