• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.server.location;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 
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.annotation.Config;
22 
23 /**
24  * Unit tests for {@link GnssNavigationMessageProvider}.
25  */
26 @RunWith(FrameworkRobolectricTestRunner.class)
27 @Config(
28         manifest = Config.NONE,
29         sdk = 27
30 )
31 @SystemLoaderPackages({"com.android.server.location"})
32 @Presubmit
33 public class GnssNavigationMessageProviderTest {
34     @Mock
35     private GnssNavigationMessageProvider.GnssNavigationMessageProviderNative mMockNative;
36     private GnssNavigationMessageProvider mTestProvider;
37 
38     @Before
setUp()39     public void setUp() {
40         MockitoAnnotations.initMocks(this);
41         when(mMockNative.startNavigationMessageCollection()).thenReturn(true);
42         when(mMockNative.stopNavigationMessageCollection()).thenReturn(true);
43 
44         mTestProvider = new GnssNavigationMessageProvider(new Handler(Looper.myLooper()),
45                 mMockNative) {
46             @Override
47             public boolean isGpsEnabled() {
48                 return true;
49             }
50         };
51     }
52 
53     @Test
register_nativeStarted()54     public void register_nativeStarted() {
55         mTestProvider.registerWithService();
56         verify(mMockNative).startNavigationMessageCollection();
57     }
58 
59     @Test
unregister_nativeStopped()60     public void unregister_nativeStopped() {
61         mTestProvider.registerWithService();
62         mTestProvider.unregisterFromService();
63         verify(mMockNative).stopNavigationMessageCollection();
64     }
65 
66     @Test
isSupported_nativeIsSupported()67     public void isSupported_nativeIsSupported() {
68         when(mMockNative.isNavigationMessageSupported()).thenReturn(true);
69         assertThat(mTestProvider.isAvailableInPlatform()).isTrue();
70 
71         when(mMockNative.isNavigationMessageSupported()).thenReturn(false);
72         assertThat(mTestProvider.isAvailableInPlatform()).isFalse();
73     }
74 
75     @Test
register_resume_started()76     public void register_resume_started() {
77         mTestProvider.registerWithService();
78         mTestProvider.resumeIfStarted();
79         verify(mMockNative, times(2)).startNavigationMessageCollection();
80     }
81 
82     @Test
unregister_resume_notStarted()83     public void unregister_resume_notStarted() {
84         mTestProvider.registerWithService();
85         mTestProvider.unregisterFromService();
86         mTestProvider.resumeIfStarted();
87         verify(mMockNative, times(1)).startNavigationMessageCollection();
88     }
89 }
90