1cfb3d242306311ce27ec51bf511764377c173a7cKiran Ryali + Christian Williamspackage org.robolectric.shadows; 25aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave 3851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport static org.assertj.core.api.Assertions.assertThat; 4851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport static org.robolectric.Shadows.shadowOf; 5851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williams 65aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.content.Context; 7851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport android.hardware.Sensor; 8851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport android.hardware.SensorDirectChannel; 9851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport android.hardware.SensorEvent; 10851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport android.hardware.SensorEventListener; 11851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport android.hardware.SensorManager; 12452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrishimport android.os.Build; 13452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrishimport android.os.MemoryFile; 145117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.After; 155117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Before; 165117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Test; 175117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.runner.RunWith; 18ceb8863e0cd0706c72351f063bc7af3c7d76d120Jonathan Gerrishimport org.robolectric.RobolectricTestRunner; 19084d588b645d53c1110ff24b82433b5a331cc6d3James Lemieuximport org.robolectric.RuntimeEnvironment; 20452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrishimport org.robolectric.annotation.Config; 21a09e6f7e24d708115c39c16b5ee4ff806e29bca5Christian Williamsimport org.robolectric.shadow.api.Shadow; 225117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard 23ceb8863e0cd0706c72351f063bc7af3c7d76d120Jonathan Gerrish@RunWith(RobolectricTestRunner.class) 2472cf654d6d3a933e426506345ded34cf39a669a2Erich Douglasspublic class ShadowSensorManagerTest { 255aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave 26f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams private SensorManager sensorManager; 27f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams private ShadowSensorManager shadow; 28f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 29f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Before 30f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void setup() { 313b8b7229bea6a6639d97b3d6ba4e971e37341e9fRyan Spore sensorManager = (SensorManager) RuntimeEnvironment.application.getSystemService(Context.SENSOR_SERVICE); 32f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams shadow = shadowOf(sensorManager); 33f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 34f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 35f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @After 36f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void tearDown() { 37f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams sensorManager = null; 38f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams shadow = null; 39f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 40f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 41f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Test 42452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish @Config(minSdk = Build.VERSION_CODES.O) 43452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish public void createDirectChannel() throws Exception { 44c78f09e8aacde37688444e0ea86b8ef32536955eJonathan Gerrish SensorDirectChannel channel = (SensorDirectChannel) sensorManager.createDirectChannel(new MemoryFile("name", 10)); 45452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish assertThat(channel.isValid()).isTrue(); 46452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish 47452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish channel.close(); 48452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish assertThat(channel.isValid()).isFalse(); 49452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish } 50452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish 51452851dff0d634963d76fed3ac8ade6661a7475bJonathan Gerrish @Test 52f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void shouldReturnHasListenerAfterRegisteringListener() { 53f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams SensorEventListener listener = registerListener(); 54f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 55f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams assertThat(shadow.hasListener(listener)).isTrue(); 56f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 57f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 58f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams private SensorEventListener registerListener() { 59f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams SensorEventListener listener = new TestSensorEventListener(); 60f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams Sensor sensor = sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER); 61f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL); 62f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 63f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams return listener; 64f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 65f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 66f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Test 67f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void shouldReturnHasNoListenerAfterUnregisterListener() { 68f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams SensorEventListener listener = registerListener(); 69f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams sensorManager.unregisterListener(listener, sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER)); 70f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 71f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams assertThat(shadow.hasListener(listener)).isFalse(); 727052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo } 737052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo 747052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo @Test 757052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo public void shouldReturnHasNoListenerAfterUnregisterListenerWithoutSpecificSensor() { 767052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo SensorEventListener listener = registerListener(); 777052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo sensorManager.unregisterListener(listener); 787052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo 797052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo assertThat(shadow.hasListener(listener)).isFalse(); 80f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 81f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 82f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Test 83f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void shouldReturnHasNoListenerByDefault() { 84f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams SensorEventListener listener = new TestSensorEventListener(); 85f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 86f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams assertThat(shadow.hasListener(listener)).isFalse(); 87f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 88f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 89f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Test 90f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void shouldCreateSensorEvent() { 91f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams assertThat(shadow.createSensorEvent() instanceof SensorEvent).isTrue(); 92f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 93f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 9429a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams @Test 9529a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams public void getSensor_shouldBeConfigurable() { 961f7901d153aed7f8f66c487a4f8fa2001ed1440eErich Douglass Sensor sensor = Shadow.newInstanceOf(Sensor.class); 9729a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams shadowOf(sensorManager).addSensor(Sensor.TYPE_ACCELEROMETER, sensor); 9829a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams assertThat(sensor).isSameAs(sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)); 9929a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams } 100f8f6b40110c63bca5df45d01b914c21269638164Nathan Shayefar and Phil Goodwin 10129a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams @Test 10229a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams public void shouldReturnASensorList() throws Exception { 10329a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams assertThat(sensorManager.getSensorList(0)).isNotNull(); 10429a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams } 105e3cd0f53a651b261d868ad95d778dde07de2fc67Ray Ryan 10607e61e04ff795fb67174de36821945e7501c2ff6Christian Williams private static class TestSensorEventListener implements SensorEventListener { 107f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams 108f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Override 109f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void onAccuracyChanged(Sensor sensor, int accuracy) { 110f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 1115aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave 112f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams @Override 113f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams public void onSensorChanged(SensorEvent event) { 114f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 1155aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave 116f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams } 1175aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave} 118