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