Merge branch 'dev' into smb060
This commit is contained in:
commit
db3369865a
3 changed files with 110 additions and 3 deletions
|
@ -174,6 +174,10 @@ dependencies {
|
||||||
compile 'junit:junit:4.12'
|
compile 'junit:junit:4.12'
|
||||||
testCompile 'org.json:json:20140107'
|
testCompile 'org.json:json:20140107'
|
||||||
testCompile 'org.mockito:mockito-core:2.7.22'
|
testCompile 'org.mockito:mockito-core:2.7.22'
|
||||||
|
testCompile 'org.powermock:powermock-api-mockito2:1.7.3'
|
||||||
|
testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.7.3'
|
||||||
|
testCompile 'org.powermock:powermock-module-junit4-rule:1.7.3'
|
||||||
|
testCompile 'org.powermock:powermock-module-junit4:1.7.3'
|
||||||
androidTestCompile 'org.mockito:mockito-core:2.7.22'
|
androidTestCompile 'org.mockito:mockito-core:2.7.22'
|
||||||
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
|
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
|
||||||
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
|
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
|
||||||
|
|
|
@ -114,6 +114,18 @@ public class NSClientService extends Service {
|
||||||
initialize();
|
initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
mWakeLock.acquire();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
mWakeLock.release();
|
||||||
|
}
|
||||||
|
|
||||||
public class LocalBinder extends Binder {
|
public class LocalBinder extends Binder {
|
||||||
public NSClientService getServiceInstance() {
|
public NSClientService getServiceInstance() {
|
||||||
return NSClientService.this;
|
return NSClientService.this;
|
||||||
|
@ -182,8 +194,6 @@ public class NSClientService extends Service {
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
dataCounter = 0;
|
dataCounter = 0;
|
||||||
|
|
||||||
NSClientService.mWakeLock.acquire();
|
|
||||||
|
|
||||||
readPreferences();
|
readPreferences();
|
||||||
|
|
||||||
if (!nsAPISecret.equals(""))
|
if (!nsAPISecret.equals(""))
|
||||||
|
@ -221,7 +231,6 @@ public class NSClientService extends Service {
|
||||||
MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "No NS URL specified"));
|
MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "No NS URL specified"));
|
||||||
MainApp.bus().post(new EventNSClientStatus("Not configured"));
|
MainApp.bus().post(new EventNSClientStatus("Not configured"));
|
||||||
}
|
}
|
||||||
NSClientService.mWakeLock.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Emitter.Listener onConnect = new Emitter.Listener() {
|
private Emitter.Listener onConnect = new Emitter.Listener() {
|
||||||
|
@ -242,6 +251,15 @@ public class NSClientService extends Service {
|
||||||
|
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
if (mSocket != null) {
|
if (mSocket != null) {
|
||||||
|
mSocket.off(Socket.EVENT_CONNECT);
|
||||||
|
mSocket.off(Socket.EVENT_DISCONNECT);
|
||||||
|
mSocket.off(Socket.EVENT_PING);
|
||||||
|
mSocket.off("dataUpdate");
|
||||||
|
mSocket.off("announcement");
|
||||||
|
mSocket.off("alarm");
|
||||||
|
mSocket.off("urgent_alarm");
|
||||||
|
mSocket.off("clear_alarm");
|
||||||
|
|
||||||
MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "destroy"));
|
MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "destroy"));
|
||||||
isConnected = false;
|
isConnected = false;
|
||||||
hasWriteAuth = false;
|
hasWriteAuth = false;
|
||||||
|
|
85
app/src/test/java/info/nightscout/utils/BolusWizardTest.java
Normal file
85
app/src/test/java/info/nightscout/utils/BolusWizardTest.java
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
package info.nightscout.utils;
|
||||||
|
|
||||||
|
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.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.db.Treatment;
|
||||||
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.PumpMDI.MDIPlugin;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by kuchjir on 12/12/2017.
|
||||||
|
*/
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest( { MainApp.class, GlucoseStatus.class, ConfigBuilderPlugin.class })
|
||||||
|
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);
|
||||||
|
|
||||||
|
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);
|
||||||
|
Assert.assertEquals(bolusForBg42, bolusForBg54);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shuldCalculateHigherBolusWhenHighBG() throws Exception {
|
||||||
|
BolusWizard bw = new BolusWizard();
|
||||||
|
Profile profile = setupProfile(4d, 8d, 20d, 12d);
|
||||||
|
|
||||||
|
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);
|
||||||
|
Assert.assertTrue(bolusForHighBg > bolusForBgInRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shuldCalculateLowerBolusWhenLowBG() throws Exception {
|
||||||
|
BolusWizard bw = new BolusWizard();
|
||||||
|
Profile profile = setupProfile(4d, 8d, 20d, 12d);
|
||||||
|
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
|
||||||
|
ConfigBuilderPlugin treatment = mock(ConfigBuilderPlugin.class);
|
||||||
|
IobTotal iobTotalZero = new IobTotal(System.currentTimeMillis());
|
||||||
|
when(treatment.getLastCalculationTreatments()).thenReturn(iobTotalZero);
|
||||||
|
when(treatment.getLastCalculationTempBasals()).thenReturn(iobTotalZero);
|
||||||
|
PowerMockito.mockStatic(MainApp.class);
|
||||||
|
when(MainApp.getConfigBuilder()).thenReturn(treatment);
|
||||||
|
|
||||||
|
PowerMockito.mockStatic(ConfigBuilderPlugin.class);
|
||||||
|
PumpInterface pump = MDIPlugin.getPlugin();
|
||||||
|
pump.getPumpDescription().bolusStep = PUMP_BOLUS_STEP;
|
||||||
|
when(ConfigBuilderPlugin.getActivePump()).thenReturn(pump);
|
||||||
|
|
||||||
|
return profile;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue