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.ArgumentMatchers.anyLong; 7 import static org.mockito.ArgumentMatchers.eq; 8 import static org.mockito.Mockito.times; 9 import static org.mockito.Mockito.verify; 10 import static org.mockito.Mockito.when; 11 12 import android.platform.test.annotations.Presubmit; 13 14 import com.android.server.location.GnssBatchingProvider.GnssBatchingProviderNative; 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.RobolectricTestRunner; 22 23 /** 24 * Unit tests for {@link GnssBatchingProvider}. 25 */ 26 @RunWith(RobolectricTestRunner.class) 27 @Presubmit 28 public class GnssBatchingProviderTest { 29 30 private static final long PERIOD_NANOS = (long) 1e9; 31 private static final boolean WAKE_ON_FIFO_FULL = true; 32 private static final int BATCH_SIZE = 3; 33 @Mock 34 private GnssBatchingProviderNative mMockNative; 35 private GnssBatchingProvider mTestProvider; 36 37 @Before 38 public void setUp() { 39 MockitoAnnotations.initMocks(this); 40 when(mMockNative.initBatching()).thenReturn(true); 41 when(mMockNative.startBatch(anyLong(), anyBoolean())).thenReturn(true); 42 when(mMockNative.stopBatch()).thenReturn(true); 43 when(mMockNative.getBatchSize()).thenReturn(BATCH_SIZE); 44 mTestProvider = new GnssBatchingProvider(mMockNative); 45 mTestProvider.enable(); 46 mTestProvider.start(PERIOD_NANOS, WAKE_ON_FIFO_FULL); 47 } 48 49 @Test 50 public void start_nativeStarted() { 51 verify(mMockNative).startBatch(eq(PERIOD_NANOS), eq(WAKE_ON_FIFO_FULL)); 52 } 53 54 @Test 55 public void stop_nativeStopped() { 56 mTestProvider.stop(); 57 verify(mMockNative).stopBatch(); 58 } 59 60 @Test 61 public void flush_nativeFlushed() { 62 mTestProvider.flush(); 63 verify(mMockNative).flushBatch(); 64 } 65 66 @Test 67 public void getBatchSize_nativeGetBatchSize() { 68 assertThat(mTestProvider.getBatchSize()).isEqualTo(BATCH_SIZE); 69 } 70 71 @Test 72 public void started_resume_started() { 73 mTestProvider.resumeIfStarted(); 74 verify(mMockNative, times(2)).startBatch(eq(PERIOD_NANOS), eq(WAKE_ON_FIFO_FULL)); 75 } 76 77 @Test 78 public void stopped_resume_notStarted() { 79 mTestProvider.stop(); 80 mTestProvider.resumeIfStarted(); 81 verify(mMockNative, times(1)).startBatch(eq(PERIOD_NANOS), eq(WAKE_ON_FIFO_FULL)); 82 } 83 } 84