1913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki/*
2913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * Copyright (C) 2017 The Android Open Source Project
3913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki *
4913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
5913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * you may not use this file except in compliance with the License.
6913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * You may obtain a copy of the License at
7913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki *
8913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
9913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki *
10913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * Unless required by applicable law or agreed to in writing, software
11913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
12913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * See the License for the specific language governing permissions and
14913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki * limitations under the License.
15913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki */
16913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.transition;
18913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
19913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.hamcrest.CoreMatchers.both;
20913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.hamcrest.Matchers.greaterThan;
21913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.hamcrest.Matchers.lessThan;
22913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.hamcrest.core.Is.is;
23913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.junit.Assert.assertEquals;
24913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport static org.junit.Assert.assertThat;
25913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
26913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport android.support.test.filters.MediumTest;
27913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport android.view.View;
28913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
294d1d6a17310a57807dabb3f404715cfe43a90ed0Aurimas Liutikasimport androidx.transition.test.R;
304d1d6a17310a57807dabb3f404715cfe43a90ed0Aurimas Liutikas
31913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakiimport org.junit.Test;
32913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
33913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki@MediumTest
34913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Arakipublic class ChangeScrollTest extends BaseTransitionTest {
35913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
36913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    @Override
37913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    Transition createTransition() {
38913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        return new ChangeScroll();
39913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    }
40913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
41913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    @Test
42913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    public void testChangeScroll() throws Throwable {
43913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        enterScene(R.layout.scene5);
44913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        rule.runOnUiThread(new Runnable() {
45913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            @Override
46913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            public void run() {
47913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                final View view = rule.getActivity().findViewById(R.id.text);
48913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertEquals(0, view.getScrollX());
49913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertEquals(0, view.getScrollY());
50913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                TransitionManager.beginDelayedTransition(mRoot, mTransition);
51913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                view.scrollTo(150, 300);
52913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            }
53913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        });
54913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        waitForStart();
55913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        Thread.sleep(150);
56913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        rule.runOnUiThread(new Runnable() {
57913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            @Override
58913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            public void run() {
59913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                final View view = rule.getActivity().findViewById(R.id.text);
60913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                final int scrollX = view.getScrollX();
61913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                final int scrollY = view.getScrollY();
62913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertThat(scrollX, is(both(greaterThan(0)).and(lessThan(150))));
63913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertThat(scrollY, is(both(greaterThan(0)).and(lessThan(300))));
64913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            }
65913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        });
66913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        waitForEnd();
67913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        rule.runOnUiThread(new Runnable() {
68913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            @Override
69913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            public void run() {
70913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                final View view = rule.getActivity().findViewById(R.id.text);
71913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertEquals(150, view.getScrollX());
72913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki                assertEquals(300, view.getScrollY());
73913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            }
74913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        });
75913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    }
76913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
77913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki}
78