/* * Copyright (C) 2017 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.assertEquals; import static junit.framework.Assert.assertTrue; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import androidx.test.uiautomator.UiDevice; import androidx.test.uiautomator.UiSelector; import com.android.documentsui.R; import com.android.documentsui.inspector.DetailsView; import com.android.documentsui.inspector.KeyValueRow; import com.android.documentsui.inspector.TableView; import java.util.HashMap; import java.util.Map; public class InspectorBot extends Bots.BaseBot { public InspectorBot(UiDevice device, Context context, int timeout) { super(device, context, timeout); } public void assertTitle(String expected) throws Exception { UiSelector detailView = new UiSelector().resourceId(mTargetPackage + ":id/inspector_details_view"); UiSelector textView = detailView.resourceId(mTargetPackage + ":id/inspector_header_title"); String text = mDevice.findObject(textView).getText(); assertEquals(expected, text); } public void assertRowPresent(String key, Activity activity) throws Exception { assertTrue(isRowPresent(key, activity)); } public void assertRowEquals(String key, String value, Activity activity) throws Exception { assertTrue(isRowEquals(key, value, activity)); } private static Map getTableRows(TableView table) throws Exception { Map rows = new HashMap<>(); int children = table.getChildCount(); for (int i = 0; i < children; i++) { View view = table.getChildAt(i); if (view instanceof KeyValueRow) { LinearLayout row = (LinearLayout) table.getChildAt(i); TextView key = (TextView) row.getChildAt(0); TextView value = (TextView) row.getChildAt(1); rows.put( String.valueOf(key.getText()), String.valueOf(value.getText())); } } return rows; } private boolean isRowPresent(String key, Activity activity) throws Exception { DetailsView details = (DetailsView) activity.findViewById(R.id.inspector_details_view); Map rows = getTableRows(details); return rows.containsKey(key); } private boolean isRowEquals(String key, String value, Activity activity) throws Exception { DetailsView details = (DetailsView) activity.findViewById(R.id.inspector_details_view); Map rows = getTableRows(details); return rows.containsKey(key) && value.equals(rows.get(key)); } }