use of com.eveningoutpost.dexdrip.utils.LibreTrendPoint in project xDrip by NightscoutFoundation.
the class ReadingDataTest method testClearTrendTwoErrors.
@Test
public void testClearTrendTwoErrors() {
ReadingData readingData = new ReadingData();
readingData.trend = new ArrayList<GlucoseData>();
List<LibreTrendPoint> libreTrendPoints = new ArrayList<LibreTrendPoint>(16 * 24 * 60);
while (libreTrendPoints.size() < 16 * 24 * 60) {
libreTrendPoints.add(libreTrendPoints.size(), new LibreTrendPoint());
}
// Create a list of 10 points.
for (int i = 0; i < 10; i++) {
readingData.trend.add(new GlucoseData());
readingData.trend.get(i).sensorTime = 1000 + i;
libreTrendPoints.get((int) readingData.trend.get(i).sensorTime).rawSensorValue = 220;
}
LibreTrendPoint libreTrendPoint = new LibreTrendPoint(1000, 1230, 800, GlucoseData.DataSource.FRAM);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
libreTrendPoint = new LibreTrendPoint(1003, 1230, 0x700, GlucoseData.DataSource.FRAM);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
libreTrendPoint = new LibreTrendPoint(1005, 1230, 0x700, GlucoseData.DataSource.FRAM);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
readingData.ClearErrors(libreTrendPoints);
assertWithMessage("4 objects should remain.").that(readingData.trend.size()).isEqualTo(4);
// object #4 is bad, so last goog object is 3.
assertWithMessage("span serialize reformed matches").that(readingData.trend.get(2).sensorTime).isEqualTo(1002);
// Next good object is 1009 (1005-1008 were removed)
assertWithMessage("span serialize reformed matches").that(readingData.trend.get(3).sensorTime).isEqualTo(1009);
}
use of com.eveningoutpost.dexdrip.utils.LibreTrendPoint in project xDrip by NightscoutFoundation.
the class ReadingDataTest method testlibreTrendPointIsError.
// A test for libreTrendPoint.isError
@Test
public void testlibreTrendPointIsError() {
LibreTrendPoint libreTrendPoint = new LibreTrendPoint(1000, 0, 0x700, GlucoseData.DataSource.BLE);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isTrue();
libreTrendPoint = new LibreTrendPoint(1000, 100, 0x700, GlucoseData.DataSource.BLE);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isFalse();
libreTrendPoint = new LibreTrendPoint(1000, 0, 0x700, GlucoseData.DataSource.FRAM);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isTrue();
libreTrendPoint = new LibreTrendPoint(1000, 100, 0x700, GlucoseData.DataSource.FRAM);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isTrue();
libreTrendPoint = new LibreTrendPoint(1000, 100, 800, GlucoseData.DataSource.FRAM);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isFalse();
libreTrendPoint = new LibreTrendPoint(1000, 100, 0, GlucoseData.DataSource.FRAM);
assertWithMessage("rawsensorvalue").that(libreTrendPoint.isError()).isFalse();
libreTrendPoint = new LibreTrendPoint();
assertWithMessage("Empty point has no error.").that(libreTrendPoint.isError()).isFalse();
}
use of com.eveningoutpost.dexdrip.utils.LibreTrendPoint in project xDrip-plus by jamorham.
the class ReadingDataTest method testClearErrors.
@Test
public void testClearErrors() {
ReadingData readingData = new ReadingData();
readingData.history = new ArrayList<GlucoseData>();
readingData.history.add(new GlucoseData());
readingData.history.add(new GlucoseData());
readingData.history.add(new GlucoseData());
readingData.history.get(0).sensorTime = 1000;
readingData.history.get(1).sensorTime = 1015;
readingData.history.get(2).sensorTime = 1030;
List<LibreTrendPoint> libreTrendPoints = new ArrayList<LibreTrendPoint>(16 * 24 * 60);
while (libreTrendPoints.size() < 16 * 24 * 60) {
libreTrendPoints.add(libreTrendPoints.size(), new LibreTrendPoint());
}
LibreTrendPoint libreTrendPoint = new LibreTrendPoint(1000, 1230, 800, GlucoseData.DataSource.FRAM);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
libreTrendPoint = new LibreTrendPoint(1015, 1230, 0x700, GlucoseData.DataSource.FRAM);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
readingData.ClearErrors(libreTrendPoints);
assertWithMessage("One object should have been removed").that(readingData.history.size()).isEqualTo(2);
assertThat(readingData.history.get(0).sensorTime).isEqualTo(1000);
assertThat(readingData.history.get(1).sensorTime).isEqualTo(1030);
}
use of com.eveningoutpost.dexdrip.utils.LibreTrendPoint in project xDrip-plus by jamorham.
the class ReadingDataTest method testCalculateSmoothDataImproved.
@Test
public void testCalculateSmoothDataImproved() {
// A very simple case, we only have one reading containing sparsed data, no errors
ReadingData readingData = new ReadingData();
readingData.trend = new ArrayList<GlucoseData>();
List<LibreTrendPoint> libreTrendPoints = new ArrayList<LibreTrendPoint>(16 * 24 * 60);
while (libreTrendPoints.size() < 16 * 24 * 60) {
libreTrendPoints.add(libreTrendPoints.size(), new LibreTrendPoint());
}
int[] times = { 0, 2, 4, 6, 7, 12, 15 };
int[] data = { 200, 210, 222, 230, 240, 250, 260 };
for (int i = 0; i < times.length; i++) {
readingData.trend.add(new GlucoseData());
readingData.trend.get(i).sensorTime = 1000 - times[i];
readingData.trend.get(i).glucoseLevelRaw = data[i];
LibreTrendPoint libreTrendPoint = new LibreTrendPoint(1000 - times[i], data[i], 0x700, GlucoseData.DataSource.BLE);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
}
readingData.calculateSmoothDataImproved(libreTrendPoints);
assertWithMessage("First 4 values should be used").that(readingData.trend.get(0).glucoseLevelRawSmoothed).isEqualTo((200 + 210 + 222 + 230) / 4);
}
use of com.eveningoutpost.dexdrip.utils.LibreTrendPoint in project xDrip-plus by jamorham.
the class ReadingDataTest method testCalculateSmoothDataImprovedOneError.
@Test
public void testCalculateSmoothDataImprovedOneError() {
// Using sparse data.
// The first value contains an error.
ReadingData readingData = new ReadingData();
readingData.trend = new ArrayList<GlucoseData>();
List<LibreTrendPoint> libreTrendPoints = new ArrayList<LibreTrendPoint>(16 * 24 * 60);
while (libreTrendPoints.size() < 16 * 24 * 60) {
libreTrendPoints.add(libreTrendPoints.size(), new LibreTrendPoint());
}
int[] times = { 0, 2, 4, 6, 7, 12, 15 };
int[] data = { 200, 210, 222, 230, 240, 250, 260 };
for (int i = 0; i < times.length; i++) {
readingData.trend.add(new GlucoseData());
readingData.trend.get(i).sensorTime = 1000 - times[i];
readingData.trend.get(i).glucoseLevelRaw = data[i];
LibreTrendPoint libreTrendPoint = new LibreTrendPoint(1000 - times[i], data[i], 0x700, GlucoseData.DataSource.BLE);
libreTrendPoints.set((int) libreTrendPoint.getSensorTime(), libreTrendPoint);
}
// The first value has an error
libreTrendPoints.get(1000).rawSensorValue = 0;
readingData.calculateSmoothDataImproved(libreTrendPoints);
assertWithMessage("3 values should be used").that(readingData.trend.get(0).glucoseLevelRawSmoothed).isEqualTo((210 + 222 + 230) / 3);
assertWithMessage("4 values should be used").that(readingData.trend.get(1).glucoseLevelRawSmoothed).isEqualTo((210 + 222 + 230 + 240) / 4);
assertWithMessage("3 values should be used").that(readingData.trend.get(2).glucoseLevelRawSmoothed).isEqualTo((222 + 230 + 240) / 3);
assertWithMessage("3 values should be used").that(readingData.trend.get(3).glucoseLevelRawSmoothed).isEqualTo((230 + 240 + 250) / 3);
assertWithMessage("2 values should be used").that(readingData.trend.get(4).glucoseLevelRawSmoothed).isEqualTo((240 + 250) / 2);
assertWithMessage("2 values should be used").that(readingData.trend.get(5).glucoseLevelRawSmoothed).isEqualTo((250 + 260) / 2);
assertWithMessage("1 value should be used").that(readingData.trend.get(6).glucoseLevelRawSmoothed).isEqualTo((260) / 1);
}
Aggregations