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 195435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.scroll.arrowscroll.MultiPageTextWithPadding; 205435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.ActivityInstrumentationTestCase; 215435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.suitebuilder.annotation.LargeTest; 225435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.test.suitebuilder.annotation.MediumTest; 235435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.view.KeyEvent; 245435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.TextView; 255435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonimport android.widget.ScrollView; 265435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 275435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Peterssonpublic class MultiPageTextWithPaddingTest extends 285435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson ActivityInstrumentationTestCase<MultiPageTextWithPadding> { 295435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 305435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson private ScrollView mScrollView; 315435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 325435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson private TextView mTextView; 335435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 345435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public MultiPageTextWithPaddingTest() { 355435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson super("com.android.frameworks.coretests", MultiPageTextWithPadding.class); 365435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 375435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 385435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @Override 395435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson protected void setUp() throws Exception { 405435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson super.setUp(); 415435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 425435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mScrollView = getActivity().getScrollView(); 435435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mTextView = getActivity().getContentChildAt(0); 445435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 455435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 465435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @MediumTest 475435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public void testPreconditions() { 485435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson assertTrue("text should not fit on screen", 495435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson mTextView.getHeight() > mScrollView.getHeight()); 505435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 515435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 525435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson @LargeTest 535435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson public void testScrollDownToBottom() throws Exception { 545435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson // Calculate the number of arrow scrolls needed to reach the bottom 555435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson int scrollsNeeded = (int)Math.ceil(Math.max(0.0f, 565435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson (mTextView.getHeight() - mScrollView.getHeight())) 575435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson / mScrollView.getMaxScrollAmount()); 585435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson for (int i = 0; i < scrollsNeeded; i++) { 595435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); 605435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 615435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson 625435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson assertEquals( 635435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson "should be fully scrolled to bottom", 645435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson getActivity().getLinearLayout().getHeight() 655435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson - (mScrollView.getHeight() - mScrollView.getPaddingTop() - mScrollView 665435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson .getPaddingBottom()), mScrollView.getScrollY()); 675435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson } 685435a06010fb50dd8b495df6b7f21f15d82a2c0aMattias Petersson} 69