org.robolectric.RuntimeEnvironment Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of robolectric-resources Show documentation
Show all versions of robolectric-resources Show documentation
An alternative Android testing framework.
package org.robolectric;
import android.app.Application;
import android.content.pm.PackageManager;
import org.robolectric.res.ResourceTable;
import org.robolectric.res.builder.RobolectricPackageManager;
import org.robolectric.util.Scheduler;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
public class RuntimeEnvironment {
public static Application application;
private volatile static Thread mainThread = Thread.currentThread();
private static String qualifiers;
private static Object activityThread;
private static RobolectricPackageManager packageManager;
private static int apiLevel;
private static Scheduler masterScheduler;
private static ResourceTable systemResourceTable;
private static ResourceTable appResourceTable;
private static ResourceTable compileTimeResourceTable;
/**
* Tests if the given thread is currently set as the main thread.
*
* @param thread the thread to test.
* @return true if the specified thread is the main thread, false otherwise.
* @see #isMainThread()
*/
public static boolean isMainThread(Thread thread) {
return thread == mainThread;
}
/**
* Tests if the current thread is currently set as the main thread.
*
* @return true if the current thread is the main thread, false otherwise.
*/
public static boolean isMainThread() {
return isMainThread(Thread.currentThread());
}
/**
* Retrieves the main thread. The main thread is the thread to which the main looper is attached.
* Defaults to the thread that initialises the RuntimeEnvironment class.
*
* @return The main thread.
* @see #setMainThread(Thread)
* @see #isMainThread()
*/
public static Thread getMainThread() {
return mainThread;
}
/**
* Sets the main thread. The main thread is the thread to which the main looper is attached.
* Defaults to the thread that initialises the RuntimeEnvironment class.
*
* @param newMainThread the new main thread.
* @see #setMainThread(Thread)
* @see #isMainThread()
*/
public static void setMainThread(Thread newMainThread) {
mainThread = newMainThread;
}
public static Object getActivityThread() {
return activityThread;
}
public static void setActivityThread(Object newActivityThread) {
activityThread = newActivityThread;
}
public static PackageManager getPackageManager() {
return (PackageManager) packageManager;
}
public static RobolectricPackageManager getRobolectricPackageManager() {
return packageManager;
}
public static void setRobolectricPackageManager(RobolectricPackageManager newPackageManager) {
if (packageManager != null) {
packageManager.reset();
}
packageManager = newPackageManager;
}
public static String getQualifiers() {
return qualifiers;
}
public static void setQualifiers(String newQualifiers) {
qualifiers = newQualifiers;
}
public static int getApiLevel() {
return apiLevel;
}
public static Number castNativePtr(long ptr) {
// Weird, using a ternary here doesn't work, there's some auto promotion of boxed types happening.
if (getApiLevel() >= LOLLIPOP) {
return ptr;
} else {
return (int) ptr;
}
}
/**
* Retrieves the current master scheduler. This scheduler is always used by the main
* {@link android.os.Looper Looper}, and if the global scheduler option is set it is also used for
* the background scheduler and for all other {@link android.os.Looper Looper}s
* @return The current master scheduler.
* @see #setMasterScheduler(Scheduler)
* see org.robolectric.Robolectric#getForegroundThreadScheduler()
* see org.robolectric.Robolectric#getBackgroundThreadScheduler()
*/
public static Scheduler getMasterScheduler() {
return masterScheduler;
}
/**
* Sets the current master scheduler. See {@link #getMasterScheduler()} for details.
* Note that this method is primarily intended to be called by the Robolectric core setup code.
* Changing the master scheduler during a test will have unpredictable results.
* @param masterScheduler the new master scheduler.
* @see #getMasterScheduler()
* see org.robolectric.Robolectric#getForegroundThreadScheduler()
* see org.robolectric.Robolectric#getBackgroundThreadScheduler()
*/
public static void setMasterScheduler(Scheduler masterScheduler) {
RuntimeEnvironment.masterScheduler = masterScheduler;
}
public static void setSystemResourceTable(ResourceTable systemResourceTable) {
RuntimeEnvironment.systemResourceTable = systemResourceTable;
}
public static void setAppResourceTable(ResourceTable appResourceTable) {
RuntimeEnvironment.appResourceTable = appResourceTable;
}
public static ResourceTable getSystemResourceTable() {
return systemResourceTable;
}
public static ResourceTable getAppResourceTable() {
return appResourceTable;
}
public static void setCompileTimeResourceTable(ResourceTable compileTimeResourceTable) {
RuntimeEnvironment.compileTimeResourceTable = compileTimeResourceTable;
}
public static ResourceTable getCompileTimeResourceTable() {
return compileTimeResourceTable;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy