forked from upstream-mirrors/OpenTracks
a9f1381dae
Part of #963.
91 lines
3.3 KiB
Java
91 lines
3.3 KiB
Java
package de.dennisguse.opentracks.services.announcement;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Looper;
|
|
|
|
import androidx.test.core.app.ApplicationProvider;
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|
import androidx.test.rule.GrantPermissionRule;
|
|
import androidx.test.rule.ServiceTestRule;
|
|
|
|
import org.junit.AfterClass;
|
|
import org.junit.BeforeClass;
|
|
import org.junit.Rule;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
|
|
import java.time.Duration;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeoutException;
|
|
|
|
import de.dennisguse.opentracks.content.data.Distance;
|
|
import de.dennisguse.opentracks.services.TrackRecordingService;
|
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
|
|
|
@RunWith(AndroidJUnit4.class)
|
|
public class VoiceAnnouncementManagerTest {
|
|
|
|
@Rule
|
|
public final ServiceTestRule mServiceRule = ServiceTestRule.withTimeout(5, TimeUnit.SECONDS);
|
|
|
|
@Rule
|
|
public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
|
|
|
|
@BeforeClass
|
|
public static void preSetUp() {
|
|
// Prepare looper for Android's message queue
|
|
if (Looper.myLooper() == null) Looper.prepare();
|
|
}
|
|
|
|
@AfterClass
|
|
public static void finalTearDown() {
|
|
if (Looper.myLooper() != null) Looper.myLooper().quit();
|
|
}
|
|
|
|
|
|
private final Context context = ApplicationProvider.getApplicationContext();
|
|
|
|
@Test
|
|
public void calculateNextTaskDistance() throws TimeoutException {
|
|
// given
|
|
TrackRecordingService service = ((TrackRecordingService.Binder) mServiceRule.bindService(new Intent(context, TrackRecordingService.class)))
|
|
.getService();
|
|
|
|
VoiceAnnouncementManager voiceAnnouncementManager = new VoiceAnnouncementManager(service);
|
|
voiceAnnouncementManager.setFrequency(Distance.ofKilometer(5));
|
|
|
|
// when
|
|
TrackStatistics statistics = new TrackStatistics();
|
|
statistics.setTotalDistance(Distance.ofKilometer(13));
|
|
voiceAnnouncementManager.restore(statistics);
|
|
assertEquals(Distance.of(15000), voiceAnnouncementManager.getNextTotalDistance());
|
|
|
|
statistics.setTotalDistance(Distance.of(15100));
|
|
voiceAnnouncementManager.restore(statistics);
|
|
assertEquals(Distance.of(20000), voiceAnnouncementManager.getNextTotalDistance());
|
|
}
|
|
|
|
@Test
|
|
public void calculateNextTotalTime() throws TimeoutException {
|
|
// given
|
|
TrackRecordingService service = ((TrackRecordingService.Binder) mServiceRule.bindService(new Intent(context, TrackRecordingService.class)))
|
|
.getService();
|
|
|
|
VoiceAnnouncementManager voiceAnnouncementManager = new VoiceAnnouncementManager(service);
|
|
voiceAnnouncementManager.setFrequency(Duration.ofSeconds(5));
|
|
|
|
// when
|
|
TrackStatistics statistics = new TrackStatistics();
|
|
statistics.setTotalTime(Duration.ofSeconds(91));
|
|
voiceAnnouncementManager.restore(statistics);
|
|
assertEquals(Duration.ofSeconds(95), voiceAnnouncementManager.getNextTotalTime());
|
|
|
|
statistics.setTotalTime(Duration.ofSeconds(95));
|
|
voiceAnnouncementManager.restore(statistics);
|
|
assertEquals(Duration.ofSeconds(100), voiceAnnouncementManager.getNextTotalTime());
|
|
}
|
|
|
|
} |