diff options
Diffstat (limited to 'espresso/espresso-lib-tests/src/androidTest/java/com/google/android/apps/common/testing/ui/espresso/base/IdlingResourceRegistryTest.java')
-rw-r--r-- | espresso/espresso-lib-tests/src/androidTest/java/com/google/android/apps/common/testing/ui/espresso/base/IdlingResourceRegistryTest.java | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/espresso/espresso-lib-tests/src/androidTest/java/com/google/android/apps/common/testing/ui/espresso/base/IdlingResourceRegistryTest.java b/espresso/espresso-lib-tests/src/androidTest/java/com/google/android/apps/common/testing/ui/espresso/base/IdlingResourceRegistryTest.java deleted file mode 100644 index aee49a8..0000000 --- a/espresso/espresso-lib-tests/src/androidTest/java/com/google/android/apps/common/testing/ui/espresso/base/IdlingResourceRegistryTest.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (C) 2014 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 com.google.android.apps.common.testing.ui.espresso.base; - -import com.google.android.apps.common.testing.ui.espresso.IdlingResource; -import com.google.android.apps.common.testing.ui.espresso.base.IdlingResourceRegistry.IdleNotificationCallback; - -import android.os.Handler; -import android.os.Looper; -import android.test.InstrumentationTestCase; -import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; - -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; - -/** - * Unit tests for {@link IdlingResourceRegistry}. - */ -public class IdlingResourceRegistryTest extends InstrumentationTestCase { - - private IdlingResourceRegistry registry; - private Handler handler; - - @Override - public void setUp() throws Exception { - Looper looper = Looper.getMainLooper(); - handler = new Handler(looper); - registry = new IdlingResourceRegistry(looper); - } - - public void testRegisterDuplicates() { - IdlingResource r1 = new OnDemandIdlingResource("r1"); - IdlingResource r1dup = new OnDemandIdlingResource("r1"); - registry.register(r1); - registry.register(r1); - registry.register(r1dup); - } - - public void testAllResourcesAreIdle() throws InterruptedException { - OnDemandIdlingResource r1 = new OnDemandIdlingResource("r1"); - OnDemandIdlingResource r2 = new OnDemandIdlingResource("r2"); - IdlingResource r3 = new OnDemandIdlingResource("r3"); - r1.forceIdleNow(); - r2.forceIdleNow(); - registry.register(r1); - registry.register(r2); - final AtomicBoolean resourcesIdle = new AtomicBoolean(false); - final CountDownLatch latch = new CountDownLatch(1); - handler.post(new Runnable() { - @Override - public void run() { - resourcesIdle.set(registry.allResourcesAreIdle()); - latch.countDown(); - } - }); - latch.await(); - assertTrue(resourcesIdle.get()); - - final CountDownLatch latch2 = new CountDownLatch(1); - registry.register(r3); - handler.post(new Runnable() { - @Override - public void run() { - resourcesIdle.set(registry.allResourcesAreIdle()); - latch2.countDown(); - } - }); - latch2.await(); - assertFalse(resourcesIdle.get()); - } - - @LargeTest - public void testAllResourcesAreIdle_RepeatingToIdleTransitions() throws InterruptedException { - OnDemandIdlingResource r1 = new OnDemandIdlingResource("r1"); - registry.register(r1); - final AtomicBoolean resourcesIdle = new AtomicBoolean(false); - for (int i = 1; i <= 3; i++) { - final CountDownLatch latch = new CountDownLatch(1); - handler.post(new Runnable() { - @Override - public void run() { - resourcesIdle.set(registry.allResourcesAreIdle()); - latch.countDown(); - } - }); - latch.await(); - assertFalse("Busy test " + i, resourcesIdle.get()); - - r1.forceIdleNow(); - final CountDownLatch latch2 = new CountDownLatch(1); - handler.post(new Runnable() { - @Override - public void run() { - resourcesIdle.set(registry.allResourcesAreIdle()); - latch2.countDown(); - } - }); - latch2.await(); - assertTrue("Idle transition test " + i, resourcesIdle.get()); - - r1.reset(); - } - } - - @LargeTest - public void testNotifyWhenAllResourcesAreIdle_success() throws InterruptedException { - final CountDownLatch busyWarningLatch = new CountDownLatch(4); - final CountDownLatch timeoutLatch = new CountDownLatch(1); - final CountDownLatch allResourcesIdleLatch = new CountDownLatch(1); - final AtomicReference<List<String>> busysFromWarning = new AtomicReference<List<String>>(); - - OnDemandIdlingResource r1 = new OnDemandIdlingResource("r1"); - OnDemandIdlingResource r2 = new OnDemandIdlingResource("r2"); - OnDemandIdlingResource r3 = new OnDemandIdlingResource("r3"); - registry.register(r1); - registry.register(r2); - registry.register(r3); - - handler.post(new Runnable() { - - @Override - public void run() { - registry.notifyWhenAllResourcesAreIdle(new IdleNotificationCallback() { - private static final String TAG = "IdleNotificationCallback"; - @Override - public void resourcesStillBusyWarning(List<String> busyResourceNames) { - Log.w(TAG, "Timeout warning: " + busyResourceNames); - busysFromWarning.set(busyResourceNames); - busyWarningLatch.countDown(); - } - - @Override - public void resourcesHaveTimedOut(List<String> busyResourceNames) { - Log.w(TAG, "Timeout error: " + busyResourceNames); - timeoutLatch.countDown(); - } - - @Override - public void allResourcesIdle() { - allResourcesIdleLatch.countDown(); - } - }); - } - }); - - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(3, busysFromWarning.get().size()); - - r3.forceIdleNow(); - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(2, busysFromWarning.get().size()); - - r2.forceIdleNow(); - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(1, busysFromWarning.get().size()); - - r1.forceIdleNow(); - assertTrue(allResourcesIdleLatch.await(200, TimeUnit.MILLISECONDS)); - assertEquals(1, busyWarningLatch.getCount()); - assertEquals(1, timeoutLatch.getCount()); - } - - @LargeTest - public void testNotifyWhenAllResourcesAreIdle_timeout() throws InterruptedException { - final CountDownLatch busyWarningLatch = new CountDownLatch(5); - final CountDownLatch timeoutLatch = new CountDownLatch(1); - final CountDownLatch allResourcesIdleLatch = new CountDownLatch(1); - final AtomicReference<List<String>> busysFromWarning = new AtomicReference<List<String>>(); - - OnDemandIdlingResource r1 = new OnDemandIdlingResource("r1"); - OnDemandIdlingResource r2 = new OnDemandIdlingResource("r2"); - OnDemandIdlingResource r3 = new OnDemandIdlingResource("r3"); - registry.register(r1); - registry.register(r2); - registry.register(r3); - - handler.post(new Runnable() { - @Override - public void run() { - registry.notifyWhenAllResourcesAreIdle(new IdleNotificationCallback() { - private static final String TAG = "IdleNotificationCallback"; - @Override - public void resourcesStillBusyWarning(List<String> busyResourceNames) { - Log.w(TAG, "Timeout warning: " + busyResourceNames); - busysFromWarning.set(busyResourceNames); - busyWarningLatch.countDown(); - } - - @Override - public void resourcesHaveTimedOut(List<String> busyResourceNames) { - Log.w(TAG, "Timeout error: " + busyResourceNames); - timeoutLatch.countDown(); - } - - @Override - public void allResourcesIdle() { - allResourcesIdleLatch.countDown(); - } - }); - } - }); - - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(3, busysFromWarning.get().size()); - - r1.forceIdleNow(); - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(2, busysFromWarning.get().size()); - - r2.forceIdleNow(); - assertFalse("Expected to timeout", busyWarningLatch.await(6, TimeUnit.SECONDS)); - assertEquals(1, busysFromWarning.get().size()); - - assertTrue("Expected to finish count down", busyWarningLatch.await(8, TimeUnit.SECONDS)); - assertTrue("Should have timed out", timeoutLatch.await(2, TimeUnit.SECONDS)); - assertEquals(1, busysFromWarning.get().size()); - assertEquals(1, allResourcesIdleLatch.getCount()); - } -} |