| /* |
| * Copyright (C) 2008 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.focus; |
| |
| import android.widget.listview.ListButtonsDiagonalAcrossItems; |
| |
| import android.test.ActivityInstrumentationTestCase; |
| import android.test.suitebuilder.annotation.MediumTest; |
| import android.view.FocusFinder; |
| import android.view.KeyEvent; |
| import android.view.View; |
| import android.widget.Button; |
| import android.widget.ListView; |
| |
| /** |
| * Test that ListView will override default behavior of focus searching to |
| * make sure going right and left doesn't change selection |
| */ |
| public class ListButtonsDiagonalAcrossItemsTest extends ActivityInstrumentationTestCase<ListButtonsDiagonalAcrossItems> { |
| |
| private Button mLeftButton; |
| private Button mCenterButton; |
| private Button mRightButton; |
| private ListView mListView; |
| |
| public ListButtonsDiagonalAcrossItemsTest() { |
| super("com.android.frameworks.coretests", ListButtonsDiagonalAcrossItems.class); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| mLeftButton = getActivity().getLeftButton(); |
| mCenterButton = getActivity().getCenterButton(); |
| mRightButton = getActivity().getRightButton(); |
| |
| mListView = getActivity().getListView(); |
| } |
| |
| @MediumTest |
| public void testPreconditions() { |
| final ListView lv = mListView; |
| assertEquals("num children", 3, lv.getChildCount()); |
| |
| assertEquals("selected position", 0, lv.getSelectedItemPosition()); |
| assertTrue("left button focused", mLeftButton.isFocused()); |
| |
| assertTrue("left left of center", |
| mLeftButton.getRight() |
| < mCenterButton.getLeft()); |
| |
| assertTrue("center left of right", |
| mCenterButton.getRight() |
| < mRightButton.getLeft()); |
| |
| assertEquals("focus search right from left button should be center button", |
| mCenterButton, |
| FocusFinder.getInstance().findNextFocus(mListView, mLeftButton, View.FOCUS_RIGHT)); |
| assertEquals("focus search right from center button should be right button", |
| mRightButton, |
| FocusFinder.getInstance().findNextFocus(mListView, mCenterButton, View.FOCUS_RIGHT)); |
| assertEquals("focus search left from centr button should be left button", |
| mLeftButton, |
| FocusFinder.getInstance().findNextFocus(mListView, mCenterButton, View.FOCUS_LEFT)); |
| } |
| |
| @MediumTest |
| public void testGoingRightDoesNotChangeSelection() { |
| sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); |
| |
| assertEquals("selected position shouldn't have changed", |
| 0, |
| mListView.getSelectedItemPosition()); |
| assertTrue("left should still be focused", mLeftButton.isFocused()); |
| } |
| |
| @MediumTest |
| public void testGoingLeftDoesNotChangeSelection() { |
| sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); |
| assertEquals("list view postion", 1, mListView.getSelectedItemPosition()); |
| assertTrue("mCenterButton.isFocused()", mCenterButton.isFocused()); |
| |
| sendKeys(KeyEvent.KEYCODE_DPAD_LEFT); |
| assertEquals("selected position shouldn't have changed", |
| 1, |
| mListView.getSelectedItemPosition()); |
| assertTrue("center should still be focused", mCenterButton.isFocused()); |
| } |
| |
| } |