Home | History | Annotate | Download | only in location
      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