mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2025-01-12 10:55:49 +01:00
Add tests and a couple of fixes
This commit is contained in:
parent
f0ffc0e165
commit
126102aa05
@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import de.greenrobot.dao.AbstractDao;
|
import de.greenrobot.dao.AbstractDao;
|
||||||
import de.greenrobot.dao.Property;
|
import de.greenrobot.dao.Property;
|
||||||
@ -309,7 +310,8 @@ public class HuaweiSampleProvider extends AbstractSampleProvider<HuaweiActivityS
|
|||||||
protected List<HuaweiActivitySample> getGBActivitySamplesHighRes(int timestamp_from, int timestamp_to) {
|
protected List<HuaweiActivitySample> getGBActivitySamplesHighRes(int timestamp_from, int timestamp_to) {
|
||||||
List<HuaweiActivitySample> processedSamples = getRawOrderedActivitySamples(timestamp_from, timestamp_to);
|
List<HuaweiActivitySample> processedSamples = getRawOrderedActivitySamples(timestamp_from, timestamp_to);
|
||||||
addWorkoutSamples(processedSamples, timestamp_from, timestamp_to);
|
addWorkoutSamples(processedSamples, timestamp_from, timestamp_to);
|
||||||
return processedSamples;
|
// Filter out the end markers before returning
|
||||||
|
return processedSamples.stream().filter(sample -> sample.getTimestamp() <= sample.getOtherTimestamp()).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -357,6 +359,10 @@ public class HuaweiSampleProvider extends AbstractSampleProvider<HuaweiActivityS
|
|||||||
int stateModifier = ActivitySample.NOT_MEASURED;
|
int stateModifier = ActivitySample.NOT_MEASURED;
|
||||||
|
|
||||||
for (HuaweiActivitySample activitySample : activitySamples) {
|
for (HuaweiActivitySample activitySample : activitySamples) {
|
||||||
|
// Ignore the end markers
|
||||||
|
if (activitySample.getTimestamp() > activitySample.getOtherTimestamp())
|
||||||
|
continue;
|
||||||
|
|
||||||
// Skip the processed samples that are before this activity sample
|
// Skip the processed samples that are before this activity sample
|
||||||
while (activitySample.getTimestamp() > processedSamples.get(currentIndex).getTimestamp()) {
|
while (activitySample.getTimestamp() > processedSamples.get(currentIndex).getTimestamp()) {
|
||||||
// Add data to current index sample
|
// Add data to current index sample
|
||||||
|
@ -5,9 +5,11 @@ import org.junit.Test;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiSampleProvider;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandSampleProvider;
|
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandSampleProvider;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample;
|
import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiActivitySample;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySample;
|
import nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySample;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.User;
|
import nodomain.freeyourgadget.gadgetbridge.entities.User;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
@ -78,6 +80,16 @@ public class SampleProviderTest extends TestBase {
|
|||||||
|
|
||||||
samples = sampleProvider.getActivitySamples(1, -1);
|
samples = sampleProvider.getActivitySamples(1, -1);
|
||||||
assertEquals(0, samples.size());
|
assertEquals(0, samples.size());
|
||||||
|
|
||||||
|
// Now high res data
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(0, 0);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(-1, 1);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(1, -1);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends AbstractActivitySample> T createSample(SampleProvider<T> sampleProvider, int rawKind, int timestamp, int rawIntensity, int heartRate, int steps, User user, Device device) {
|
private <T extends AbstractActivitySample> T createSample(SampleProvider<T> sampleProvider, int rawKind, int timestamp, int rawIntensity, int heartRate, int steps, User user, Device device) {
|
||||||
@ -134,6 +146,16 @@ public class SampleProviderTest extends TestBase {
|
|||||||
samples = sampleProvider.getActivitySamples(1, -1);
|
samples = sampleProvider.getActivitySamples(1, -1);
|
||||||
assertEquals(0, samples.size());
|
assertEquals(0, samples.size());
|
||||||
|
|
||||||
|
// Now high res data
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(0, 0);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(-1, 1);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(1, -1);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
// finally checks for existing timestamps
|
// finally checks for existing timestamps
|
||||||
List<MiBandActivitySample> allSamples = sampleProvider.getAllActivitySamples(0, 10000);
|
List<MiBandActivitySample> allSamples = sampleProvider.getAllActivitySamples(0, 10000);
|
||||||
assertEquals(4, allSamples.size());
|
assertEquals(4, allSamples.size());
|
||||||
@ -146,4 +168,49 @@ public class SampleProviderTest extends TestBase {
|
|||||||
// FIXME activitySamples = sampleProvider.getActivitySamples(10, 150);
|
// FIXME activitySamples = sampleProvider.getActivitySamples(10, 150);
|
||||||
// FIXME assertEquals(1, activitySamples.size());
|
// FIXME assertEquals(1, activitySamples.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHighResSamples() {
|
||||||
|
// Mi Band sample provider does not support this at the moment, so we use the Huawei sample provider
|
||||||
|
HuaweiSampleProvider sampleProvider = new HuaweiSampleProvider(dummyGBDevice, daoSession);
|
||||||
|
User user = DBHelper.getUser(daoSession);
|
||||||
|
assertNotNull(user);
|
||||||
|
assertNotNull(user.getId());
|
||||||
|
Device device = DBHelper.getDevice(dummyGBDevice, daoSession);
|
||||||
|
assertNotNull(device);
|
||||||
|
|
||||||
|
HuaweiActivitySample s1 = createSample(sampleProvider, MiBandSampleProvider.TYPE_ACTIVITY, 100, 10, 70, 1000, user, device);
|
||||||
|
s1.setOtherTimestamp(110); // Necessary for Huawei samples
|
||||||
|
sampleProvider.addGBActivitySample(s1);
|
||||||
|
sampleProvider.addGBActivitySample(s1); // add again, should not throw or fail
|
||||||
|
|
||||||
|
HuaweiActivitySample s2 = createSample(sampleProvider, MiBandSampleProvider.TYPE_ACTIVITY, 110, 20, 80, 1030, user, device);
|
||||||
|
s2.setOtherTimestamp(120);
|
||||||
|
sampleProvider.addGBActivitySample(s2);
|
||||||
|
|
||||||
|
HuaweiActivitySample s3 = createSample(sampleProvider, MiBandSampleProvider.TYPE_DEEP_SLEEP, 120, 10, 62, 4030, user, device);
|
||||||
|
s3.setOtherTimestamp(200);
|
||||||
|
HuaweiActivitySample s4 = createSample(sampleProvider, MiBandSampleProvider.TYPE_LIGHT_SLEEP, 200, 10, 60, 4030, user, device);
|
||||||
|
s4.setOtherTimestamp(220);
|
||||||
|
sampleProvider.addGBActivitySamples(new HuaweiActivitySample[] { s3, s4 });
|
||||||
|
|
||||||
|
List<HuaweiActivitySample> samples = sampleProvider.getAllActivitySamples(0, 1);
|
||||||
|
assertEquals(1, samples.size()); // It generates a sample for every 60 seconds that is requested
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(0, 1);
|
||||||
|
assertTrue(samples.isEmpty());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamples(100, 150);
|
||||||
|
assertEquals(1, samples.size());
|
||||||
|
assertEquals(100, samples.get(0).getTimestamp());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(100, 115);
|
||||||
|
assertEquals(2, samples.size());
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamples(100, 200);
|
||||||
|
assertEquals(2, samples.size()); // First three are combined
|
||||||
|
|
||||||
|
samples = sampleProvider.getAllActivitySamplesHighRes(100, 200);
|
||||||
|
assertEquals(4, samples.size()); // No combining takes place for the high res
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user