108fb8f8709b227d9c12f5197c1884f22137075a5adriancowhampackage com.xtremelabs.robolectric.shadows; 208fb8f8709b227d9c12f5197c1884f22137075a5adriancowham 3786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport static junit.framework.Assert.assertFalse; 4786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport static junit.framework.Assert.assertNotNull; 5786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport static junit.framework.Assert.assertTrue; 608fb8f8709b227d9c12f5197c1884f22137075a5adriancowham 7786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport com.xtremelabs.robolectric.Robolectric; 8786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 9786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkelimport org.junit.Before; 1008fb8f8709b227d9c12f5197c1884f22137075a5adriancowhamimport org.junit.Test; 1108fb8f8709b227d9c12f5197c1884f22137075a5adriancowhamimport org.junit.runner.RunWith; 1208fb8f8709b227d9c12f5197c1884f22137075a5adriancowham 1308fb8f8709b227d9c12f5197c1884f22137075a5adriancowhamimport android.content.Context; 1408fb8f8709b227d9c12f5197c1884f22137075a5adriancowhamimport android.os.PowerManager; 1508fb8f8709b227d9c12f5197c1884f22137075a5adriancowham 1608fb8f8709b227d9c12f5197c1884f22137075a5adriancowham@RunWith(WithTestDefaultsRunner.class) 1708fb8f8709b227d9c12f5197c1884f22137075a5adriancowhampublic class PowerManagerTest { 18786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 19786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel PowerManager powerManager; 20786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel ShadowPowerManager shadowPowerManager; 21786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 22786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Before 23786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void before() { 24786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel powerManager = (PowerManager) Robolectric.application.getSystemService(Context.POWER_SERVICE); 25786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel shadowPowerManager = Robolectric.shadowOf(powerManager); 26786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 27786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 28786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Test 29786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void testIsScreenOn() { 30786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(powerManager.isScreenOn()); 31786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel shadowPowerManager.setIsScreenOn(false); 32786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertFalse(powerManager.isScreenOn()); 33786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 34786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 35786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Test 36786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void shouldCreateWakeLock() throws Exception { 37786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertNotNull(powerManager.newWakeLock(0, "TAG")); 38786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 39786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 40786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Test 41786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void shouldAcquireAndReleaseReferenceCountedLock() throws Exception { 42786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel PowerManager.WakeLock lock = powerManager.newWakeLock(0, "TAG"); 43786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertFalse(lock.isHeld()); 44786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.acquire(); 45786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(lock.isHeld()); 46786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.acquire(); 47786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 48786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(lock.isHeld()); 49786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.release(); 50786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 51786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(lock.isHeld()); 52786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.release(); 53786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertFalse(lock.isHeld()); 54786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 55786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 56786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Test 57786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void shouldAcquireAndReleaseNonReferenceCountedLock() throws Exception { 58786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel PowerManager.WakeLock lock = powerManager.newWakeLock(0, "TAG"); 59786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.setReferenceCounted(false); 60786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 61786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertFalse(lock.isHeld()); 62786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.acquire(); 63786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(lock.isHeld()); 64786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.acquire(); 65786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertTrue(lock.isHeld()); 66786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 67786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.release(); 68786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 69786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel assertFalse(lock.isHeld()); 70786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 71786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel 72786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel @Test(expected = RuntimeException.class) 73786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel public void shouldThrowRuntimeExceptionIfLockisUnderlocked() throws Exception { 74786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel PowerManager.WakeLock lock = powerManager.newWakeLock(0, "TAG"); 75786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel lock.release(); 76786803310d968784c78de4e2c2d1ff0c5c4592b8Jan Berkel } 7708fb8f8709b227d9c12f5197c1884f22137075a5adriancowham}