InsulinOrefBasePluginTest

This commit is contained in:
Milos Kozak 2020-01-11 11:45:41 +01:00
parent ac5ea83d38
commit ccf93d2191
4 changed files with 113 additions and 120 deletions

View file

@ -6,7 +6,7 @@ import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@Singleton @Singleton
class RxBusWrapper @Inject constructor() { open class RxBusWrapper @Inject constructor() {
private val bus: RxBus = RxBus.INSTANCE private val bus: RxBus = RxBus.INSTANCE

View file

@ -15,6 +15,7 @@ import java.util.Objects;
import javax.inject.Inject; import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
@ -76,6 +77,10 @@ public class Treatment implements DataPointWithLabelInterface, DbObjectBase {
MainApp.instance().androidInjector().inject(this); // TODO it will be removed by new database MainApp.instance().androidInjector().inject(this); // TODO it will be removed by new database
} }
public Treatment(HasAndroidInjector injector) {
injector.androidInjector().inject(this);
}
public static Treatment createFromJson(JSONObject json) throws JSONException { public static Treatment createFromJson(JSONObject json) throws JSONException {
Treatment treatment = new Treatment(); Treatment treatment = new Treatment();
treatment.source = Source.NIGHTSCOUT; treatment.source = Source.NIGHTSCOUT;

View file

@ -1,119 +0,0 @@
package info.nightscout.androidaps.plugins.insulin;
import org.junit.Before;
import org.junit.Test;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.plugins.treatments.Treatment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
* Created by triplem on 07.01.18.
*/
public class InsulinOrefBasePluginTest extends InsulinOrefBasePlugin {
private int peak;
private double dia;
private boolean shortDiaNotificationSend;
@Before
public void setUp() throws Exception {
this.peak = 0;
this.dia = InsulinOrefBasePlugin.MIN_DIA;
this.shortDiaNotificationSend = false;
}
@Test
public void testGetDia() throws Exception {
assertEquals(InsulinOrefBasePlugin.MIN_DIA, this.getDia(), 0);
this.dia = InsulinOrefBasePlugin.MIN_DIA + 1;
assertEquals(InsulinOrefBasePlugin.MIN_DIA + 1, this.getDia(), 0);
this.dia = InsulinOrefBasePlugin.MIN_DIA - 1;
assertEquals(InsulinOrefBasePlugin.MIN_DIA, this.getDia(), 0);
assertTrue(this.shortDiaNotificationSend);
}
@Test
public void testIobCalcForTreatment() {
Treatment treatment = new Treatment();
Iob expected = new Iob();
assertEquals(expected, this.iobCalcForTreatment(treatment, 0, 0d));
this.peak = 30;
this.dia = 4;
long time = System.currentTimeMillis();
// check directly after bolus
treatment.date = time;
treatment.insulin = 10d;
assertEquals(10d, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1);
// check after 1 hour
treatment.date = time - 1 * 60 * 60 * 1000; // 1 hour
treatment.insulin = 10d;
assertEquals(3.92, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1);
// check after 2 hour
treatment.date = time - 2 * 60 * 60 * 1000; // 1 hour
treatment.insulin = 10d;
assertEquals(0.77, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1);
// check after 3 hour
treatment.date = time - 3 * 60 * 60 * 1000; // 1 hour
treatment.insulin = 10d;
assertEquals(0.10, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1);
// check after dia
treatment.date = time - 4 * 60 * 60 * 1000;
treatment.insulin = 10d;
assertEquals(0d, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1);
}
/**
* this method is implemented to allow tests of the iobCalcForTreatment calculation
* @return
*/
@Override
public int getPeak() {
return this.peak;
}
/**
* Userdefined Dia is implemented to allow tests of the getDia method
*
* @return
*/
public double getUserDefinedDia() {
return this.dia;
}
public void sendShortDiaNotification(double dia) {
this.shortDiaNotificationSend = true;
}
@Override
public int getId() {
return 0;
}
@Override
public String getFriendlyName() {
return null;
}
@Override
public String commentStandardText() {
return null;
}
// the following methods are implemented, but not needed...
}

View file

@ -0,0 +1,107 @@
package info.nightscout.androidaps.plugins.insulin
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.data.Iob
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.insulin.InsulinOrefBasePlugin.Companion.MIN_DIA
import info.nightscout.androidaps.plugins.treatments.Treatment
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mockito.Mock
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.powermock.core.classloader.annotations.PrepareForTest
class InsulinOrefBasePluginTest {
var testPeak = 0
var testUserDefinedDia = 0.0
var shortDiaNotificationSend = false
inner class InsulinBaseTest(
resourceHelper: ResourceHelper,
profileFunction: ProfileFunction,
rxBus: RxBusWrapper,
aapsLogger: AAPSLogger
) : InsulinOrefBasePlugin(
resourceHelper, profileFunction, rxBus, aapsLogger
) {
override fun sendShortDiaNotification(dia: Double) {
shortDiaNotificationSend = true
}
override val userDefinedDia: Double
get() = testUserDefinedDia
override val peak: Int
get() = testPeak
override fun commentStandardText(): String = ""
override fun getId(): Int = 0
override fun getFriendlyName(): String = ""
}
@get:Rule
val mockitoRule: MockitoRule = MockitoJUnit.rule()
lateinit var sut: InsulinBaseTest
@Mock lateinit var resourceHelper: ResourceHelper
@Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var rxBus: RxBusWrapper
@Mock lateinit var aapsLogger: AAPSLogger
@Mock lateinit var injector: HasAndroidInjector
@Before
fun setUp() {
sut = InsulinBaseTest(resourceHelper, profileFunction, rxBus, aapsLogger)
}
@Test
fun testGetDia() {
Assert.assertEquals(MIN_DIA, sut.dia, 0.0)
testUserDefinedDia = MIN_DIA + 1
Assert.assertEquals(MIN_DIA + 1, sut.dia, 0.0)
testUserDefinedDia = MIN_DIA - 1
Assert.assertEquals(MIN_DIA, sut.dia, 0.0)
Assert.assertTrue(shortDiaNotificationSend)
}
@Test
fun testIobCalcForTreatment() {
val treatment = Treatment(injector)
val expected = Iob()
Assert.assertEquals(expected, sut.iobCalcForTreatment(treatment, 0, 0.0))
testPeak = 30
testUserDefinedDia = 4.0
val time = System.currentTimeMillis()
// check directly after bolus
treatment.date = time
treatment.insulin = 10.0
Assert.assertEquals(10.0, sut.iobCalcForTreatment(treatment, time).iobContrib, 0.1)
// check after 1 hour
treatment.date = time - 1 * 60 * 60 * 1000 // 1 hour
treatment.insulin = 10.0
Assert.assertEquals(3.92, sut.iobCalcForTreatment(treatment, time).iobContrib, 0.1)
// check after 2 hour
treatment.date = time - 2 * 60 * 60 * 1000 // 1 hour
treatment.insulin = 10.0
Assert.assertEquals(0.77, sut.iobCalcForTreatment(treatment, time).iobContrib, 0.1)
// check after 3 hour
treatment.date = time - 3 * 60 * 60 * 1000 // 1 hour
treatment.insulin = 10.0
Assert.assertEquals(0.10, sut.iobCalcForTreatment(treatment, time).iobContrib, 0.1)
// check after dia
treatment.date = time - 4 * 60 * 60 * 1000
treatment.insulin = 10.0
Assert.assertEquals(0.0, sut.iobCalcForTreatment(treatment, time).iobContrib, 0.1)
}
}