package com.xtremelabs.robolectric.shadows; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import com.xtremelabs.robolectric.Robolectric; import com.xtremelabs.robolectric.WithTestDefaultsRunner; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static com.xtremelabs.robolectric.Robolectric.shadowOf; import static org.junit.Assert.*; @RunWith(WithTestDefaultsRunner.class) public class SensorManagerTest { private SensorManager sensorManager; private ShadowSensorManager shadow; @Before public void setup() { sensorManager = (SensorManager) Robolectric.application.getSystemService(Context.SENSOR_SERVICE); shadow = shadowOf(sensorManager); } @After public void tearDown() { sensorManager = null; shadow = null; } @Test public void shouldReturnHasListenerAfterRegisteringListener() { SensorEventListener listener = registerListener(); assertTrue(shadow.hasListener(listener)); } private SensorEventListener registerListener() { SensorEventListener listener = new TestSensorEventListener(); Sensor sensor = sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER); sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL); return listener; } @Test public void shouldReturnHasNoListenerAfterUnregisterListener() { SensorEventListener listener = registerListener(); sensorManager.unregisterListener(listener, sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER)); assertFalse(shadow.hasListener(listener)); } @Test public void shouldReturnHasNoListenerByDefault() { SensorEventListener listener = new TestSensorEventListener(); assertFalse(shadow.hasListener(listener)); } @Test public void shouldCreateSensorEvent() { assertTrue(shadow.createSensorEvent() instanceof SensorEvent); } private class TestSensorEventListener implements SensorEventListener { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { } } }