15435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson/* 25435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * Copyright (C) 2011 Sony Ericsson Mobile Communications AB. 35435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * 45435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * Licensed under the Apache License, Version 2.0 (the "License"); 55435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * you may not use this file except in compliance with the License. 65435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * You may obtain a copy of the License at 75435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * 85435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * http://www.apache.org/licenses/LICENSE-2.0 95435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * 105435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * Unless required by applicable law or agreed to in writing, software 115435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * distributed under the License is distributed on an "AS IS" BASIS, 125435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * See the License for the specific language governing permissions and 145435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson * limitations under the License. 155435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson */ 165435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 175435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonpackage android.widget.scroll.arrowscroll; 185435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 197bee548aa64436f0bfe51cfb0b8e2d9367569464Abodunrinwa Tokiimport android.test.suitebuilder.annotation.Suppress; 205435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.scroll.arrowscroll.MultiPageTextWithPadding; 215435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.ActivityInstrumentationTestCase; 225435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.suitebuilder.annotation.LargeTest; 235435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.suitebuilder.annotation.MediumTest; 245435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.view.KeyEvent; 255435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.TextView; 265435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.ScrollView; 275435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 287bee548aa64436f0bfe51cfb0b8e2d9367569464Abodunrinwa Toki@Suppress // Flaky 295435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonpublic class MultiPageTextWithPaddingTest extends 305435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson ActivityInstrumentationTestCase<MultiPageTextWithPadding> { 315435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 325435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson private ScrollView mScrollView; 335435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 345435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson private TextView mTextView; 355435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 365435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public MultiPageTextWithPaddingTest() { 375435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson super("com.android.frameworks.coretests", MultiPageTextWithPadding.class); 385435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 395435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 405435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @Override 415435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson protected void setUp() throws Exception { 425435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson super.setUp(); 435435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 445435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mScrollView = getActivity().getScrollView(); 455435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mTextView = getActivity().getContentChildAt(0); 465435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 475435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 485435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @MediumTest 495435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public void testPreconditions() { 505435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson assertTrue("text should not fit on screen", 515435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mTextView.getHeight() > mScrollView.getHeight()); 525435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 535435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 545435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @LargeTest 555435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public void testScrollDownToBottom() throws Exception { 565435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson // Calculate the number of arrow scrolls needed to reach the bottom 575435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson int scrollsNeeded = (int)Math.ceil(Math.max(0.0f, 585435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson (mTextView.getHeight() - mScrollView.getHeight())) 595435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson / mScrollView.getMaxScrollAmount()); 605435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson for (int i = 0; i < scrollsNeeded; i++) { 615435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); 625435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 635435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 645435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson assertEquals( 655435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson "should be fully scrolled to bottom", 665435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson getActivity().getLinearLayout().getHeight() 675435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson - (mScrollView.getHeight() - mScrollView.getPaddingTop() - mScrollView 685435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson .getPaddingBottom()), mScrollView.getScrollY()); 695435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 705435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson} 71