blob: 203b690929be9ad086a2c17faa6a1388299048d4 [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.cts.refapp;
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import java.lang.InterruptedException;
import java.lang.Thread;
/**
* Base Class that provides common functionality for all Reference Application Tests.
*/
public class ReferenceAppTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
/** The time to wait for the test host to finish taking the snapshot. */
private static final int SNAPSHOT_TIMEOUT_MS = 1000;
/** The default time that the applicaiton has to start in. */
private static final int DEFAULT_MAX_STATUP_TIME_MS = 5000;
private int maxStartupTimeMs;
/**
* Create a ReferenceAppTestCase for the specified activity.
*
* @param pkg the java package the class is contained in.
* @param activityClass the class of the activity to instrument.
* @param maxStartupTimeMs the startup time the activity should start in.
*/
public ReferenceAppTestCase(String pkg, Class<T> activityClass, int maxStartupTimeMs) {
super(pkg, activityClass);
this.maxStartupTimeMs = maxStartupTimeMs;
}
/**
* Create a ReferenceAppTestCase for the specified activity.
*
* @param pkg the java package the class is contained in.
* @param activityClass the class of the activity to instrument.
*/
public ReferenceAppTestCase(String pkg, Class<T> activityClass) {
this(pkg, activityClass, DEFAULT_MAX_STATUP_TIME_MS);
}
public void testActivityStartupTime() {
// Test activity startup time.
long start = System.currentTimeMillis();
Activity activity = getActivity();
long end = System.currentTimeMillis();
long startupTime = end - start;
assertTrue("Activity Startup took more than " + maxStartupTimeMs +
" ms",
startupTime <= maxStartupTimeMs);
}
/**
* Allows tests to record screen snapshots for inclusion in the
* CTS test report.
*
* @param name the name to save the snapshot under
*/
public void takeSnapshot(String name) {
// request a snapshot from the CTS host
Log.d("ReferenceAppTestCase", "takeSnapshot:" + name);
// Give the host enough time to take the picture
try {
Thread.sleep(SNAPSHOT_TIMEOUT_MS);
} catch (InterruptedException e) {
// ok
}
}
}