AndroidAPS/app/src/test/java/info/nightscout/androidaps/utils/BolusWizardTest.java

87 lines
3.8 KiB
Java
Raw Normal View History

2019-02-26 20:38:27 +01:00
package info.nightscout.androidaps.utils;
2018-01-07 22:16:08 +01:00
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import info.AAPSMocker;
2018-01-07 22:16:08 +01:00
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.data.GlucoseStatus;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
2019-02-26 20:38:27 +01:00
import info.nightscout.androidaps.plugins.pump.mdi.MDIPlugin;
2018-01-07 22:16:08 +01:00
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Created by kuchjir on 12/12/2017.
*/
@RunWith(PowerMockRunner.class)
2019-02-26 20:38:27 +01:00
@PrepareForTest({MainApp.class, GlucoseStatus.class, ConfigBuilderPlugin.class, TreatmentsPlugin.class})
2018-01-07 22:16:08 +01:00
public class BolusWizardTest {
private static final double PUMP_BOLUS_STEP = 0.1;
@Test
/** Should calculate the same bolus when different blood glucose but both in target range */
public void shuldCalculateTheSameBolusWhenBGsInRange() throws Exception {
BolusWizard bw = new BolusWizard();
Profile profile = setupProfile(4d, 8d, 20d, 12d);
2019-02-26 20:38:27 +01:00
Double bolusForBg42 = bw.doCalc(profile, null, 20, 0.0, 4.2, 0d, 100d, true, true, false, false);
Double bolusForBg54 = bw.doCalc(profile, null, 20, 0.0, 5.4, 0d, 100d, true, true, false, false);
2018-01-07 22:16:08 +01:00
Assert.assertEquals(bolusForBg42, bolusForBg54);
}
@Test
public void shuldCalculateHigherBolusWhenHighBG() throws Exception {
BolusWizard bw = new BolusWizard();
Profile profile = setupProfile(4d, 8d, 20d, 12d);
2019-02-26 20:38:27 +01:00
Double bolusForHighBg = bw.doCalc(profile, null, 20, 0d, 9.8, 0d, 100d, true, true, false, false);
Double bolusForBgInRange = bw.doCalc(profile, null, 20, 0.0, 5.4, 0d, 100d, true, true, false, false);
2018-01-07 22:16:08 +01:00
Assert.assertTrue(bolusForHighBg > bolusForBgInRange);
}
@Test
public void shuldCalculateLowerBolusWhenLowBG() throws Exception {
BolusWizard bw = new BolusWizard();
Profile profile = setupProfile(4d, 8d, 20d, 12d);
2019-02-26 20:38:27 +01:00
Double bolusForLowBg = bw.doCalc(profile, null, 20, 0d, 3.6, 0d, 100d, true, true, false, false);
Double bolusForBgInRange = bw.doCalc(profile, null, 20, 0.0, 5.4, 0d, 100d, true, true, false, false);
2018-01-07 22:16:08 +01:00
Assert.assertTrue(bolusForLowBg < bolusForBgInRange);
}
private Profile setupProfile(Double targetLow, Double targetHigh, Double insulinSensitivityFactor, Double insulinToCarbRatio) {
Profile profile = mock(Profile.class);
when(profile.getTargetLow()).thenReturn(targetLow);
when(profile.getTargetHigh()).thenReturn(targetHigh);
when(profile.getIsf()).thenReturn(insulinSensitivityFactor);
when(profile.getIc()).thenReturn(insulinToCarbRatio);
PowerMockito.mockStatic(GlucoseStatus.class);
when(GlucoseStatus.getGlucoseStatusData()).thenReturn(null);
PowerMockito.mockStatic(TreatmentsPlugin.class);
TreatmentsPlugin treatment = mock(TreatmentsPlugin.class);
2018-01-07 22:16:08 +01:00
IobTotal iobTotalZero = new IobTotal(System.currentTimeMillis());
when(treatment.getLastCalculationTreatments()).thenReturn(iobTotalZero);
when(treatment.getLastCalculationTempBasals()).thenReturn(iobTotalZero);
PowerMockito.mockStatic(MainApp.class);
when(TreatmentsPlugin.getPlugin()).thenReturn(treatment);
2018-01-07 22:16:08 +01:00
AAPSMocker.mockConfigBuilder();
2018-01-07 22:16:08 +01:00
PumpInterface pump = MDIPlugin.getPlugin();
pump.getPumpDescription().bolusStep = PUMP_BOLUS_STEP;
when(ConfigBuilderPlugin.getPlugin().getActivePump()).thenReturn(pump);
2018-01-07 22:16:08 +01:00
return profile;
}
}