use of org.robolectric.util.Scheduler in project edx-app-android by edx.
the class BaseFragmentActivityTest method assertAnimateLayouts.
/**
* Generic method for asserting view animation method functionality
*
* @param view The animated view
* @param trigger A {@link Runnable} that triggers the animation
*/
protected void assertAnimateLayouts(View view, Runnable trigger) {
// The foreground scheduler needs to be paused so that the
// temporary visibility of the animated View can be verified.
Scheduler foregroundScheduler = ShadowApplication.getInstance().getForegroundThreadScheduler();
boolean wasPaused = foregroundScheduler.isPaused();
if (!wasPaused) {
foregroundScheduler.pause();
}
assertThat(view).isGone();
trigger.run();
assertThat(view).isVisible();
Animation animation = view.getAnimation();
assertNotNull(animation);
assertThat(animation.getStartTime()).isLessThanOrEqualTo(AnimationUtils.currentAnimationTimeMillis());
assertThat(animation).hasStartOffset(0);
foregroundScheduler.unPause();
assertThat(view).isGone();
if (wasPaused) {
foregroundScheduler.pause();
}
}
use of org.robolectric.util.Scheduler in project OneSignal-Android-SDK by OneSignal.
the class OneSignalPackagePrivateHelper method runAllNetworkRunnables.
public static boolean runAllNetworkRunnables() throws Exception {
startedRunnable = false;
RunnableArg runnable = new RunnableArg<UserStateSynchronizer.NetworkHandlerThread>() {
@Override
void run(UserStateSynchronizer.NetworkHandlerThread handlerThread) throws Exception {
synchronized (handlerThread.mHandler) {
Scheduler scheduler = shadowOf(handlerThread.getLooper()).getScheduler();
while (scheduler.runOneTask()) startedRunnable = true;
}
}
};
processNetworkHandles(runnable);
return startedRunnable;
}
use of org.robolectric.util.Scheduler in project OneSignal-Android-SDK by OneSignal.
the class TestHelpers method flushBufferedSharedPrefs.
static void flushBufferedSharedPrefs() {
TestOneSignalPrefs.WritePrefHandlerThread handlerThread = TestOneSignalPrefs.prefsHandler;
if (handlerThread.getLooper() == null)
return;
Scheduler scheduler = shadowOf(handlerThread.getLooper()).getScheduler();
while (scheduler.runOneTask()) ;
}
use of org.robolectric.util.Scheduler in project robolectric by robolectric.
the class AndroidTestEnvironment method setUpApplicationState.
@Override
public void setUpApplicationState(Method method, Configuration configuration, AndroidManifest appManifest) {
for (TestEnvironmentLifecyclePlugin e : testEnvironmentLifecyclePlugins) {
e.onSetupApplicationState();
}
Config config = configuration.get(Config.class);
ConfigurationRegistry.instance = new ConfigurationRegistry(configuration.map());
clearEnvironment();
RuntimeEnvironment.setTempDirectory(new TempDirectory(createTestDataDirRootPath(method)));
if (ShadowLooper.looperMode() == LooperMode.Mode.LEGACY) {
RuntimeEnvironment.setMasterScheduler(new Scheduler());
RuntimeEnvironment.setMainThread(Thread.currentThread());
ShadowLegacyLooper.internalInitializeBackgroundThreadScheduler();
}
if (!loggingInitialized) {
ShadowLog.setupLogging();
loggingInitialized = true;
}
if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
Security.addProvider(new BouncyCastleProvider());
}
android.content.res.Configuration androidConfiguration = new android.content.res.Configuration();
DisplayMetrics displayMetrics = new DisplayMetrics();
Bootstrap.applyQualifiers(config.qualifiers(), apiLevel, androidConfiguration, displayMetrics);
Locale locale = apiLevel >= VERSION_CODES.N ? androidConfiguration.getLocales().get(0) : androidConfiguration.locale;
Locale.setDefault(locale);
// Looper needs to be prepared before the activity thread is created
if (Looper.myLooper() == null) {
Looper.prepareMainLooper();
}
if (ShadowLooper.looperMode() == LooperMode.Mode.LEGACY) {
ShadowLooper.getShadowMainLooper().resetScheduler();
} else {
RuntimeEnvironment.setMasterScheduler(new LooperDelegatingScheduler(Looper.getMainLooper()));
}
preloadClasses(apiLevel);
RuntimeEnvironment.setAndroidFrameworkJarPath(sdkJarPath);
Bootstrap.setDisplayConfiguration(androidConfiguration, displayMetrics);
RuntimeEnvironment.setActivityThread(ReflectionHelpers.newInstance(ActivityThread.class));
ReflectionHelpers.setStaticField(ActivityThread.class, "sMainThreadHandler", new Handler(Looper.myLooper()));
Instrumentation instrumentation = createInstrumentation();
InstrumentationRegistry.registerInstance(instrumentation, new Bundle());
Supplier<Application> applicationSupplier = createApplicationSupplier(appManifest, config, androidConfiguration, displayMetrics);
RuntimeEnvironment.setApplicationSupplier(applicationSupplier);
if (configuration.get(LazyLoad.class) == LazyLoad.ON) {
RuntimeEnvironment.setConfiguredApplicationClass(getApplicationClass(appManifest, config, new ApplicationInfo()));
} else {
// force eager load of the application
RuntimeEnvironment.getApplication();
}
}
use of org.robolectric.util.Scheduler in project robolectric by robolectric.
the class ShadowLegacyLooperTest method soStaticRefsToLoopersInAppWorksAcrossTests_shouldRetainSameLooperForMainThreadBetweenResetsButGiveItAFreshScheduler.
@Test
public void soStaticRefsToLoopersInAppWorksAcrossTests_shouldRetainSameLooperForMainThreadBetweenResetsButGiveItAFreshScheduler() {
Looper mainLooper = Looper.getMainLooper();
Scheduler scheduler = shadowOf(mainLooper).getScheduler();
ShadowLegacyLooper shadowLooper = Shadow.extract(mainLooper);
shadowLooper.quit = true;
assertThat(ApplicationProvider.getApplicationContext().getMainLooper()).isSameInstanceAs(mainLooper);
Scheduler s = new Scheduler();
RuntimeEnvironment.setMasterScheduler(s);
ShadowLooper.resetThreadLoopers();
Application application = new Application();
ReflectionHelpers.callInstanceMethod(application, "attach", ReflectionHelpers.ClassParameter.from(Context.class, ((Application) ApplicationProvider.getApplicationContext()).getBaseContext()));
assertWithMessage("Looper.getMainLooper()").that(Looper.getMainLooper()).isSameInstanceAs(mainLooper);
assertWithMessage("app.getMainLooper()").that(application.getMainLooper()).isSameInstanceAs(mainLooper);
assertWithMessage("scheduler").that(shadowOf(mainLooper).getScheduler()).isNotSameInstanceAs(scheduler);
assertWithMessage("scheduler").that(shadowOf(mainLooper).getScheduler()).isSameInstanceAs(s);
assertWithMessage("quit").that(shadowOf(mainLooper).hasQuit()).isFalse();
}
Aggregations