/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.widget.listview.arrowscroll; import android.test.ActivityInstrumentationTestCase; import android.test.suitebuilder.annotation.MediumTest; import android.widget.ListView; import android.view.KeyEvent; import android.widget.listview.ListOfShortTallShort; public class ListOfShortTallShortTest extends ActivityInstrumentationTestCase<ListOfShortTallShort> { private ListView mListView; public ListOfShortTallShortTest() { super("com.android.frameworks.coretests", ListOfShortTallShort.class); } @Override protected void setUp() throws Exception { super.setUp(); mListView = getActivity().getListView(); } @MediumTest public void testPreconditions() { assertTrue("second item should be taller than screen", mListView.getChildAt(1).getHeight() > mListView.getHeight()); } @MediumTest public void testGoDownFromShortToTall() { int topBeforeMove = mListView.getChildAt(1).getTop(); sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); assertEquals("selection should have moved to tall item below", 1, mListView.getSelectedItemPosition()); assertEquals("should not have scrolled; top should be the same.", topBeforeMove, mListView.getSelectedView().getTop()); } @MediumTest public void testGoUpFromShortToTall() { int maxMoves = 8; while (mListView.getSelectedItemPosition() != 2 && maxMoves > 0) { sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); } assertEquals("couldn't get to 3rd item", 2, mListView.getSelectedItemPosition()); assertEquals("should only be two items on screen", 2, mListView.getChildCount()); assertEquals("selected item should be last item on screen", mListView.getChildAt(1), mListView.getSelectedView()); final int bottomBeforeMove = mListView.getChildAt(0).getBottom(); sendKeys(KeyEvent.KEYCODE_DPAD_UP); assertEquals("should have moved selection to tall item above", 1, mListView.getSelectedItemPosition()); assertEquals("should not have scrolled, top should be the same", bottomBeforeMove, mListView.getChildAt(0).getBottom()); } }