/* * Copyright (C) 2015 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 com.android.documentsui.bots; import static junit.framework.Assert.assertNotNull; import android.content.Context; import android.support.test.uiautomator.By; import android.support.test.uiautomator.BySelector; import android.support.test.uiautomator.UiDevice; import android.support.test.uiautomator.UiObject; import android.support.test.uiautomator.UiObject2; import android.support.test.uiautomator.UiSelector; import android.support.test.uiautomator.Until; /** * A test helper class that provides support for controlling directory list * and making assertions against the state of it. */ abstract class BaseBot { final UiDevice mDevice; final Context mContext; final int mTimeout; BaseBot(UiDevice device, Context context, int timeout) { mDevice = device; mContext = context; mTimeout = timeout; } /** * Asserts that the specified view or one of its descendents has focus. */ protected void assertHasFocus(String resourceName) { UiObject2 candidate = mDevice.findObject(By.res(resourceName)); assertNotNull("Expected " + resourceName + " to have focus, but it didn't.", candidate.findObject(By.focused(true))); } protected UiObject2 find(BySelector selector) { mDevice.wait(Until.findObject(selector), mTimeout); return mDevice.findObject(selector); } protected UiObject findObject(String resourceId) { final UiSelector object = new UiSelector().resourceId(resourceId); return mDevice.findObject(object); } protected UiObject findObject(String parentResourceId, String childResourceId) { final UiSelector selector = new UiSelector() .resourceId(parentResourceId) .childSelector(new UiSelector().resourceId(childResourceId)); return mDevice.findObject(selector); } protected void waitForIdle() { mDevice.waitForIdle(mTimeout); } }