1package com.android.server.location; 2 3import static com.google.common.truth.Truth.assertThat; 4 5import static org.mockito.Mockito.times; 6import static org.mockito.Mockito.verify; 7import static org.mockito.Mockito.when; 8 9import android.os.Handler; 10import android.os.Looper; 11import android.platform.test.annotations.Presubmit; 12 13import com.android.server.testing.FrameworkRobolectricTestRunner; 14import com.android.server.testing.SystemLoaderPackages; 15 16import org.junit.Before; 17import org.junit.Test; 18import org.junit.runner.RunWith; 19import org.mockito.Mock; 20import org.mockito.MockitoAnnotations; 21import 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 33public class GnssNavigationMessageProviderTest { 34 @Mock 35 private GnssNavigationMessageProvider.GnssNavigationMessageProviderNative mMockNative; 36 private GnssNavigationMessageProvider mTestProvider; 37 38 @Before 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 54 public void register_nativeStarted() { 55 mTestProvider.registerWithService(); 56 verify(mMockNative).startNavigationMessageCollection(); 57 } 58 59 @Test 60 public void unregister_nativeStopped() { 61 mTestProvider.registerWithService(); 62 mTestProvider.unregisterFromService(); 63 verify(mMockNative).stopNavigationMessageCollection(); 64 } 65 66 @Test 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 76 public void register_resume_started() { 77 mTestProvider.registerWithService(); 78 mTestProvider.resumeIfStarted(); 79 verify(mMockNative, times(2)).startNavigationMessageCollection(); 80 } 81 82 @Test 83 public void unregister_resume_notStarted() { 84 mTestProvider.registerWithService(); 85 mTestProvider.unregisterFromService(); 86 mTestProvider.resumeIfStarted(); 87 verify(mMockNative, times(1)).startNavigationMessageCollection(); 88 } 89} 90