ShadowSensorManagerTest.java revision 72cf654d6d3a933e426506345ded34cf39a669a2
1cfb3d242306311ce27ec51bf511764377c173a7cKiran Ryali + Christian Williamspackage org.robolectric.shadows;
25aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave
35aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.content.Context;
45aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.hardware.Sensor;
55aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.hardware.SensorEvent;
65aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.hardware.SensorEventListener;
75aab2036d99aa0bdced8c12a41a2b67a0bc8d676Daveimport android.hardware.SensorManager;
85117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.After;
95117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Before;
105117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Test;
115117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.runner.RunWith;
123b8b7229bea6a6639d97b3d6ba4e971e37341e9fRyan Sporeimport org.robolectric.RuntimeEnvironment;
138efa8a16877d62ef6ba4ddaaaf85055495d73f9fChristian Williamsimport org.robolectric.TestRunners;
141f7901d153aed7f8f66c487a4f8fa2001ed1440eErich Douglassimport org.robolectric.internal.Shadow;
155117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
16e20bf1d6276aedaa0f48bd5e10d6690d13e9d4e1Ryan Sporeimport static org.assertj.core.api.Assertions.assertThat;
17006481c035ec4736b0b7a88e5dde9efc12591cd2Erich Douglass and Ryan Sporeimport static org.robolectric.Shadows.shadowOf;
185aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave
1956215a065f0b61b67bb7bb21f21b305da9a66c90Christian Williams & Dimitris Couchell@RunWith(TestRunners.WithDefaults.class)
2072cf654d6d3a933e426506345ded34cf39a669a2Erich Douglasspublic class ShadowSensorManagerTest {
215aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave
22f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  private SensorManager sensorManager;
23f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  private ShadowSensorManager shadow;
24f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
25f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @Before
26f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void setup() {
273b8b7229bea6a6639d97b3d6ba4e971e37341e9fRyan Spore    sensorManager = (SensorManager) RuntimeEnvironment.application.getSystemService(Context.SENSOR_SERVICE);
28f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    shadow = shadowOf(sensorManager);
29f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
30f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
31f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @After
32f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void tearDown() {
33f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    sensorManager = null;
34f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    shadow = null;
35f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
36f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
37f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @Test
38f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void shouldReturnHasListenerAfterRegisteringListener() {
39f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    SensorEventListener listener = registerListener();
40f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
41f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    assertThat(shadow.hasListener(listener)).isTrue();
42f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
43f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
44f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  private SensorEventListener registerListener() {
45f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    SensorEventListener listener = new TestSensorEventListener();
46f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    Sensor sensor = sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER);
47f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
48f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
49f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    return listener;
50f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
51f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
52f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @Test
53f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void shouldReturnHasNoListenerAfterUnregisterListener() {
54f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    SensorEventListener listener = registerListener();
55f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    sensorManager.unregisterListener(listener, sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER));
56f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
57f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    assertThat(shadow.hasListener(listener)).isFalse();
587052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo  }
597052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo
607052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo  @Test
617052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo  public void shouldReturnHasNoListenerAfterUnregisterListenerWithoutSpecificSensor() {
627052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo    SensorEventListener listener = registerListener();
637052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo    sensorManager.unregisterListener(listener);
647052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo
657052552ebed64b496de8e79f29ab587f2d935054nimeacuerdo    assertThat(shadow.hasListener(listener)).isFalse();
66f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
67f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
68f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @Test
69f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void shouldReturnHasNoListenerByDefault() {
70f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    SensorEventListener listener = new TestSensorEventListener();
71f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
72f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    assertThat(shadow.hasListener(listener)).isFalse();
73f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
74f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
75f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  @Test
76f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  public void shouldCreateSensorEvent() {
77f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    assertThat(shadow.createSensorEvent() instanceof SensorEvent).isTrue();
78f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
79f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
8029a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  @Test
8129a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  public void getSensor_shouldBeConfigurable() {
821f7901d153aed7f8f66c487a4f8fa2001ed1440eErich Douglass    Sensor sensor = Shadow.newInstanceOf(Sensor.class);
8329a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams    shadowOf(sensorManager).addSensor(Sensor.TYPE_ACCELEROMETER, sensor);
8429a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams    assertThat(sensor).isSameAs(sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
8529a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  }
86f8f6b40110c63bca5df45d01b914c21269638164Nathan Shayefar and Phil Goodwin
8729a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  @Test
8829a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  public void shouldReturnASensorList() throws Exception {
8929a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams    assertThat(sensorManager.getSensorList(0)).isNotNull();
9029a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  }
91e3cd0f53a651b261d868ad95d778dde07de2fc67Ray Ryan
92f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  private class TestSensorEventListener implements SensorEventListener {
93f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams
94f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    @Override
95f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    public void onAccuracyChanged(Sensor sensor, int accuracy) {
96f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    }
975aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave
98f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    @Override
99f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    public void onSensorChanged(SensorEvent event) {
100f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams    }
1015aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave
102f3a67bea2e9e481c7344b416ec0e90ceb27ec005Christian Williams  }
1035aab2036d99aa0bdced8c12a41a2b67a0bc8d676Dave}
104