1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/* 2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project 3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License. 6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at 7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software 11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and 14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License. 15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.testing.uihelper; 18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.content.res.Resources; 20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.By; 21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.BySelector; 22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.Direction; 23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.UiDevice; 24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.UiObject2; 25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R; 27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.SideFragment; 28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport junit.framework.Assert; 30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/** 32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Helper for testing {@link SideFragment}s. 33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class SidePanelHelper extends BaseUiDeviceHelper { 35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public SidePanelHelper(UiDevice uiDevice, Resources targetResources) { 37816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super(uiDevice, targetResources); 38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public BySelector bySidePanelTitled(int titleResId) { 41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return By.copy(Constants.SIDE_PANEL) 42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko .hasDescendant(ByResource.text(mTargetResources, titleResId)); 43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 452e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko public BySelector byViewText(int textResId) { 462e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko return By.hasDescendant(ByResource.text(mTargetResources, textResId)); 472e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko } 482e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko 49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public UiObject2 assertNavigateToItem(int resId) { 506ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return assertNavigateToItem(resId, Direction.DOWN); 51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public UiObject2 assertNavigateToItem(int resId, Direction direction) { 546ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko String title = mTargetResources.getString(resId); 556ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return assertNavigateToItem(title, direction); 566ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public UiObject2 assertNavigateToItem(String title) { 586ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return assertNavigateToItem(title, Direction.DOWN); 596ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 606ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 616ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public UiObject2 assertNavigateToItem(String title, Direction direction) { 62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko BySelector sidePanelSelector = ByResource.id(mTargetResources, R.id.side_panel_list); 63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko UiObject2 sidePanelList = mUiDevice.findObject(sidePanelSelector); 64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Assert.assertNotNull(sidePanelSelector + " not found", sidePanelList); 65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 666ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return UiDeviceAsserts.assertNavigateTo(mUiDevice, sidePanelList, 676ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko By.hasDescendant(By.text(title)), direction); 68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko} 70