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