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