1 package com.android.server.location; 2 3 import static com.google.common.truth.Truth.assertThat; 4 5 import static org.mockito.ArgumentMatchers.anyBoolean; 6 import static org.mockito.Mockito.times; 7 import static org.mockito.Mockito.verify; 8 import static org.mockito.Mockito.when; 9 10 import android.os.Handler; 11 import android.os.Looper; 12 import android.platform.test.annotations.Presubmit; 13 14 import org.junit.Before; 15 import org.junit.Test; 16 import org.junit.runner.RunWith; 17 import org.mockito.Mock; 18 import org.mockito.MockitoAnnotations; 19 import org.robolectric.RobolectricTestRunner; 20 import org.robolectric.RuntimeEnvironment; 21 22 /** 23 * Unit tests for {@link GnssMeasurementsProvider}. 24 */ 25 @RunWith(RobolectricTestRunner.class) 26 @Presubmit 27 public class GnssMeasurementsProviderTest { 28 @Mock 29 private GnssMeasurementsProvider.GnssMeasurementProviderNative mMockNative; 30 private GnssMeasurementsProvider mTestProvider; 31 32 @Before 33 public void setUp() { 34 MockitoAnnotations.initMocks(this); 35 when(mMockNative.startMeasurementCollection(anyBoolean())).thenReturn(true); 36 when(mMockNative.stopMeasurementCollection()).thenReturn(true); 37 38 mTestProvider = new GnssMeasurementsProvider(RuntimeEnvironment.application, 39 new Handler(Looper.myLooper()), mMockNative) { 40 @Override 41 public boolean isGpsEnabled() { 42 return true; 43 } 44 }; 45 } 46 47 @Test 48 public void register_nativeStarted() { 49 mTestProvider.registerWithService(); 50 verify(mMockNative).startMeasurementCollection(anyBoolean()); 51 } 52 53 @Test 54 public void unregister_nativeStopped() { 55 mTestProvider.registerWithService(); 56 mTestProvider.unregisterFromService(); 57 verify(mMockNative).stopMeasurementCollection(); 58 } 59 60 @Test 61 public void isSupported_nativeIsSupported() { 62 when(mMockNative.isMeasurementSupported()).thenReturn(true); 63 assertThat(mTestProvider.isAvailableInPlatform()).isTrue(); 64 65 when(mMockNative.isMeasurementSupported()).thenReturn(false); 66 assertThat(mTestProvider.isAvailableInPlatform()).isFalse(); 67 } 68 69 @Test 70 public void register_resume_started() { 71 mTestProvider.registerWithService(); 72 mTestProvider.resumeIfStarted(); 73 verify(mMockNative, times(2)).startMeasurementCollection(anyBoolean()); 74 } 75 76 @Test 77 public void unregister_resume_notStarted() { 78 mTestProvider.registerWithService(); 79 mTestProvider.unregisterFromService(); 80 mTestProvider.resumeIfStarted(); 81 verify(mMockNative, times(1)).startMeasurementCollection(anyBoolean()); 82 } 83 } 84