blob: ca12a153044d2ee1e322647dcd0d7a5dcd7619f7 [file] [log] [blame]
/*
* 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.util;
import junit.framework.Assert;
import android.test.InstrumentationTestCase;
import android.test.TouchUtils;
import android.view.View;
/**
* When entering touch mode via touch, the tests can be flaky. These asserts
* are more flexible (allowing up to MAX_ATTEMPTS touches to enter touch mode via touch or
* tap) until we can find a way to solve the flakiness.
*/
public class TouchModeFlexibleAsserts {
private static int MAX_ATTEMPTS = 2;
private static int MAX_DELAY_MILLIS = 2000;
public static void assertInTouchModeAfterClick(InstrumentationTestCase test, View viewToTouch) {
int numAttemptsAtTouchMode = 0;
while (numAttemptsAtTouchMode < MAX_ATTEMPTS &&
!viewToTouch.isInTouchMode()) {
TouchUtils.clickView(test, viewToTouch);
numAttemptsAtTouchMode++;
}
Assert.assertTrue("even after " + MAX_ATTEMPTS + " clicks, did not enter "
+ "touch mode", viewToTouch.isInTouchMode());
//Assert.assertEquals("number of touches to enter touch mode", 1, numAttemptsAtTouchMode);
}
public static void assertInTouchModeAfterTap(InstrumentationTestCase test, View viewToTouch) {
int numAttemptsAtTouchMode = 0;
while (numAttemptsAtTouchMode < MAX_ATTEMPTS &&
!viewToTouch.isInTouchMode()) {
TouchUtils.tapView(test, viewToTouch);
numAttemptsAtTouchMode++;
}
Assert.assertTrue("even after " + MAX_ATTEMPTS + " taps, did not enter "
+ "touch mode", viewToTouch.isInTouchMode());
//Assert.assertEquals("number of touches to enter touch mode", 1, numAttemptsAtTouchMode);
}
public static void assertNotInTouchModeAfterKey(InstrumentationTestCase test, int keyCode, View checkForTouchMode) {
test.sendKeys(keyCode);
int amountLeft = MAX_DELAY_MILLIS;
while (checkForTouchMode.isInTouchMode() && amountLeft > 0) {
amountLeft -= 200;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
Assert.assertFalse("even after waiting " + MAX_DELAY_MILLIS + " millis after "
+ "pressing key event, still in touch mode", checkForTouchMode.isInTouchMode());
}
}