package io.nlopez.smartlocation; import android.content.Context; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import io.nlopez.smartlocation.activity.config.ActivityParams; import io.nlopez.smartlocation.util.MockActivityRecognitionProvider; import io.nlopez.smartlocation.utils.Logger; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; @RunWith(CustomTestRunner.class) @Config(manifest = Config.NONE) public class ActivityRecognitionControlTest { private static final ActivityParams DEFAULT_PARAMS = ActivityParams.NORMAL; private MockActivityRecognitionProvider mockProvider; private OnActivityUpdatedListener activityUpdatedListener; @Before public void setup() { mockProvider = mock(MockActivityRecognitionProvider.class); activityUpdatedListener = mock(OnActivityUpdatedListener.class); } @Test public void test_activity_recognition_control_init() { Context context = RuntimeEnvironment.application.getApplicationContext(); SmartLocation smartLocation = new SmartLocation.Builder(context).preInitialize(false).build(); SmartLocation.ActivityRecognitionControl activityRecognitionControl = smartLocation.activity(mockProvider); verifyZeroInteractions(mockProvider); smartLocation = new SmartLocation.Builder(context).build(); activityRecognitionControl = smartLocation.activity(mockProvider); verify(mockProvider).init(eq(context), any(Logger.class)); } @Test public void test_activity_recognition_control_start_defaults() { SmartLocation.ActivityRecognitionControl activityRecognitionControl = createActivityRecognitionControl(); activityRecognitionControl.start(activityUpdatedListener); verify(mockProvider).start(activityUpdatedListener, DEFAULT_PARAMS); } @Test public void test_activity_recognition_get_last_location() { SmartLocation.ActivityRecognitionControl activityRecognitionControl = createActivityRecognitionControl(); activityRecognitionControl.getLastActivity(); verify(mockProvider).getLastActivity(); } @Test public void test_activity_recognition_stop() { SmartLocation.ActivityRecognitionControl activityRecognitionControl = createActivityRecognitionControl(); activityRecognitionControl.stop(); verify(mockProvider).stop(); } private SmartLocation.ActivityRecognitionControl createActivityRecognitionControl() { Context context = RuntimeEnvironment.application.getApplicationContext(); SmartLocation smartLocation = new SmartLocation.Builder(context).preInitialize(false).build(); SmartLocation.ActivityRecognitionControl activityRecognitionControl = smartLocation.activity(mockProvider); return activityRecognitionControl; } }