- Deprecated most android.test.* APIs - Kept ProviderTestCase2 and LoaderTestCase since we don't have a replacement yet - Deprecated android.test.suitebuilder - Added Javadoc to all deprecated APIs with links to corresponding Android Testing Support Library APIs - Removed all trailing whitespace Bug: 22314304 Change-Id: I1b1f0dd5132364110f1dfd4e3eb2dd044700d859
382 lines
13 KiB
Java
382 lines
13 KiB
Java
/*
|
|
* 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.test;
|
|
|
|
import static junit.framework.Assert.*;
|
|
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
/**
|
|
* Some useful assertions about views.
|
|
*
|
|
* @deprecated Use
|
|
* <a href="{@docRoot}reference/android/support/test/espresso/matcher/ViewMatchers.html">Espresso
|
|
* View Matchers</a> instead. New test should be written using the
|
|
* <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>.
|
|
* For more information about UI testing, take the
|
|
* <a href="{@docRoot}tools/testing-support-library/index.html">Espresso UI testing</a> training.
|
|
*/
|
|
@Deprecated
|
|
public class ViewAsserts {
|
|
|
|
private ViewAsserts() {}
|
|
|
|
/**
|
|
* Assert that view is on the screen.
|
|
* @param origin The root view of the screen.
|
|
* @param view The view.
|
|
*/
|
|
static public void assertOnScreen(View origin, View view) {
|
|
int[] xy = new int[2];
|
|
view.getLocationOnScreen(xy);
|
|
|
|
int[] xyRoot = new int[2];
|
|
origin.getLocationOnScreen(xyRoot);
|
|
|
|
int y = xy[1] - xyRoot[1];
|
|
|
|
assertTrue("view should have positive y coordinate on screen",
|
|
y >= 0);
|
|
|
|
assertTrue("view should have y location on screen less than drawing "
|
|
+ "height of root view",
|
|
y <= view.getRootView().getHeight());
|
|
}
|
|
|
|
/**
|
|
* Assert that view is below the visible screen.
|
|
* @param origin The root view of the screen.
|
|
* @param view The view
|
|
*/
|
|
static public void assertOffScreenBelow(View origin, View view) {
|
|
int[] xy = new int[2];
|
|
view.getLocationOnScreen(xy);
|
|
|
|
int[] xyRoot = new int[2];
|
|
origin.getLocationOnScreen(xyRoot);
|
|
|
|
int y = xy[1] - xyRoot[1];
|
|
|
|
assertTrue("view should have y location on screen greater than drawing "
|
|
+ "height of origen view (" + y + " is not greater than "
|
|
+ origin.getHeight() + ")",
|
|
y > origin.getHeight());
|
|
}
|
|
|
|
/**
|
|
* Assert that view is above the visible screen.
|
|
* @param origin Te root view of the screen.
|
|
* @param view The view
|
|
*/
|
|
static public void assertOffScreenAbove(View origin, View view) {
|
|
int[] xy = new int[2];
|
|
view.getLocationOnScreen(xy);
|
|
|
|
int[] xyRoot = new int[2];
|
|
origin.getLocationOnScreen(xyRoot);
|
|
|
|
int y = xy[1] - xyRoot[1];
|
|
|
|
assertTrue("view should have y location less than that of origin view",
|
|
y < 0);
|
|
}
|
|
|
|
/**
|
|
* Assert that a view has a particular x and y position on the visible screen.
|
|
* @param origin The root view of the screen.
|
|
* @param view The view.
|
|
* @param x The expected x coordinate.
|
|
* @param y The expected y coordinate.
|
|
*/
|
|
static public void assertHasScreenCoordinates(View origin, View view, int x, int y) {
|
|
int[] xy = new int[2];
|
|
view.getLocationOnScreen(xy);
|
|
|
|
int[] xyRoot = new int[2];
|
|
origin.getLocationOnScreen(xyRoot);
|
|
|
|
assertEquals("x coordinate", x, xy[0] - xyRoot[0]);
|
|
assertEquals("y coordinate", y, xy[1] - xyRoot[1]);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are aligned on their baseline, that is that their baselines
|
|
* are on the same y location.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
*/
|
|
static public void assertBaselineAligned(View first, View second) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstTop = xy[1] + first.getBaseline();
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondTop = xy[1] + second.getBaseline();
|
|
|
|
assertEquals("views are not baseline aligned", firstTop, secondTop);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are right aligned, that is that their right edges
|
|
* are on the same x location.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
*/
|
|
static public void assertRightAligned(View first, View second) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstRight = xy[0] + first.getMeasuredWidth();
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondRight = xy[0] + second.getMeasuredWidth();
|
|
|
|
assertEquals("views are not right aligned", firstRight, secondRight);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are right aligned, that is that their right edges
|
|
* are on the same x location, with respect to the specified margin.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
* @param margin The margin between the first view and the second view
|
|
*/
|
|
static public void assertRightAligned(View first, View second, int margin) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstRight = xy[0] + first.getMeasuredWidth();
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondRight = xy[0] + second.getMeasuredWidth();
|
|
|
|
assertEquals("views are not right aligned", Math.abs(firstRight - secondRight), margin);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are left aligned, that is that their left edges
|
|
* are on the same x location.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
*/
|
|
static public void assertLeftAligned(View first, View second) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstLeft = xy[0];
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondLeft = xy[0];
|
|
|
|
assertEquals("views are not left aligned", firstLeft, secondLeft);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are left aligned, that is that their left edges
|
|
* are on the same x location, with respect to the specified margin.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
* @param margin The margin between the first view and the second view
|
|
*/
|
|
static public void assertLeftAligned(View first, View second, int margin) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstLeft = xy[0];
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondLeft = xy[0];
|
|
|
|
assertEquals("views are not left aligned", Math.abs(firstLeft - secondLeft), margin);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are bottom aligned, that is that their bottom edges
|
|
* are on the same y location.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
*/
|
|
static public void assertBottomAligned(View first, View second) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstBottom = xy[1] + first.getMeasuredHeight();
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondBottom = xy[1] + second.getMeasuredHeight();
|
|
|
|
assertEquals("views are not bottom aligned", firstBottom, secondBottom);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are bottom aligned, that is that their bottom edges
|
|
* are on the same y location, with respect to the specified margin.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
* @param margin The margin between the first view and the second view
|
|
*/
|
|
static public void assertBottomAligned(View first, View second, int margin) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstBottom = xy[1] + first.getMeasuredHeight();
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondBottom = xy[1] + second.getMeasuredHeight();
|
|
|
|
assertEquals("views are not bottom aligned", Math.abs(firstBottom - secondBottom), margin);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are top aligned, that is that their top edges
|
|
* are on the same y location.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
*/
|
|
static public void assertTopAligned(View first, View second) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstTop = xy[1];
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondTop = xy[1];
|
|
|
|
assertEquals("views are not top aligned", firstTop, secondTop);
|
|
}
|
|
|
|
/**
|
|
* Assert that two views are top aligned, that is that their top edges
|
|
* are on the same y location, with respect to the specified margin.
|
|
*
|
|
* @param first The first view
|
|
* @param second The second view
|
|
* @param margin The margin between the first view and the second view
|
|
*/
|
|
static public void assertTopAligned(View first, View second, int margin) {
|
|
int[] xy = new int[2];
|
|
first.getLocationOnScreen(xy);
|
|
int firstTop = xy[1];
|
|
|
|
second.getLocationOnScreen(xy);
|
|
int secondTop = xy[1];
|
|
|
|
assertEquals("views are not top aligned", Math.abs(firstTop - secondTop), margin);
|
|
}
|
|
|
|
/**
|
|
* Assert that the <code>test</code> view is horizontally center aligned
|
|
* with respect to the <code>reference</code> view.
|
|
*
|
|
* @param reference The reference view
|
|
* @param test The view that should be center aligned with the reference view
|
|
*/
|
|
static public void assertHorizontalCenterAligned(View reference, View test) {
|
|
int[] xy = new int[2];
|
|
reference.getLocationOnScreen(xy);
|
|
int referenceLeft = xy[0];
|
|
|
|
test.getLocationOnScreen(xy);
|
|
int testLeft = xy[0];
|
|
|
|
int center = (reference.getMeasuredWidth() - test.getMeasuredWidth()) / 2;
|
|
int delta = testLeft - referenceLeft;
|
|
|
|
assertEquals("views are not horizontally center aligned", center, delta);
|
|
}
|
|
|
|
/**
|
|
* Assert that the <code>test</code> view is vertically center aligned
|
|
* with respect to the <code>reference</code> view.
|
|
*
|
|
* @param reference The reference view
|
|
* @param test The view that should be center aligned with the reference view
|
|
*/
|
|
static public void assertVerticalCenterAligned(View reference, View test) {
|
|
int[] xy = new int[2];
|
|
reference.getLocationOnScreen(xy);
|
|
int referenceTop = xy[1];
|
|
|
|
test.getLocationOnScreen(xy);
|
|
int testTop = xy[1];
|
|
|
|
int center = (reference.getMeasuredHeight() - test.getMeasuredHeight()) / 2;
|
|
int delta = testTop - referenceTop;
|
|
|
|
assertEquals("views are not vertically center aligned", center, delta);
|
|
}
|
|
|
|
/**
|
|
* Assert the specified group's integrity. The children count should be >= 0 and each
|
|
* child should be non-null.
|
|
*
|
|
* @param parent The group whose integrity to check
|
|
*/
|
|
static public void assertGroupIntegrity(ViewGroup parent) {
|
|
final int count = parent.getChildCount();
|
|
assertTrue("child count should be >= 0", count >= 0);
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
assertNotNull("group should not contain null children", parent.getChildAt(i));
|
|
assertSame(parent, parent.getChildAt(i).getParent());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Assert that the specified group contains a specific child once and only once.
|
|
*
|
|
* @param parent The group
|
|
* @param child The child that should belong to group
|
|
*/
|
|
static public void assertGroupContains(ViewGroup parent, View child) {
|
|
final int count = parent.getChildCount();
|
|
assertTrue("Child count should be >= 0", count >= 0);
|
|
|
|
boolean found = false;
|
|
for (int i = 0; i < count; i++) {
|
|
if (parent.getChildAt(i) == child) {
|
|
if (!found) {
|
|
found = true;
|
|
} else {
|
|
assertTrue("child " + child + " is duplicated in parent", false);
|
|
}
|
|
}
|
|
}
|
|
|
|
assertTrue("group does not contain " + child, found);
|
|
}
|
|
|
|
/**
|
|
* Assert that the specified group does not contain a specific child.
|
|
*
|
|
* @param parent The group
|
|
* @param child The child that should not belong to group
|
|
*/
|
|
static public void assertGroupNotContains(ViewGroup parent, View child) {
|
|
final int count = parent.getChildCount();
|
|
assertTrue("Child count should be >= 0", count >= 0);
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
if (parent.getChildAt(i) == child) {
|
|
assertTrue("child " + child + " is found in parent", false);
|
|
}
|
|
}
|
|
}
|
|
}
|