From 194cf305fd5a678f3b3b046a59c53faefa79de4a Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 10 Apr 2021 10:41:53 +0200 Subject: [PATCH 1/4] Rv2,RKorean --- .../configBuilder/ConfigBuilderPlugin.kt | 9 ++- .../maintenance/MaintenanceFragment.kt | 3 + .../extensions/ExtendedBolusExtension.kt | 1 + .../androidaps/interfaces/PumpPluginBase.kt | 4 +- .../androidaps/interfaces/PumpSync.kt | 8 +++ .../overview/notifications/Notification.kt | 1 + .../plugins/pump/PumpSyncImplementation.kt | 59 +++++++++++++++++++ core/src/main/res/values/strings.xml | 4 ++ .../comm/MsgInitConnStatusTime_k.kt | 1 + .../androidaps/danaRv2/DanaRv2Plugin.java | 53 +++++++++++++++++ .../danaRv2/comm/MsgCheckValue_v2.kt | 5 +- .../androidaps/danar/AbstractDanaRPlugin.java | 1 + .../danar/comm/MsgInitConnStatusTime.kt | 1 + .../androidaps/danars/DanaRSPlugin.kt | 1 + 14 files changed, 144 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt index 37647464e4..49b010832c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt @@ -29,7 +29,8 @@ class ConfigBuilderPlugin @Inject constructor( private val sp: SP, private val rxBus: RxBusWrapper, private val activePlugin: ActivePluginProvider, - private val uel: UserEntryLogger + private val uel: UserEntryLogger, + private val pumpSync: PumpSync ) : PluginBase(PluginDescription() .mainType(PluginType.GENERAL) .fragmentClass(ConfigBuilderFragment::class.java.name) @@ -140,13 +141,15 @@ class ConfigBuilderPlugin @Inject constructor( val allowHardwarePump = sp.getBoolean("allow_hardware_pump", false) if (allowHardwarePump || activity == null) { performPluginSwitch(changedPlugin, newState, type) + pumpSync.connectNewPump() } else { - OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.allow_hardware_pump_text), Runnable { + OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.allow_hardware_pump_text), { performPluginSwitch(changedPlugin, newState, type) + pumpSync.connectNewPump() sp.putBoolean("allow_hardware_pump", true) uel.log(Action.HW_PUMP_ALLOWED, Sources.ConfigBuilder) aapsLogger.debug(LTag.PUMP, "First time HW pump allowed!") - }, Runnable { + }, { rxBus.send(EventConfigBuilderUpdateGui()) aapsLogger.debug(LTag.PUMP, "User does not allow switching to HW pump!") }) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt index 688be7fd29..5d45cc3d90 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt @@ -15,6 +15,7 @@ import info.nightscout.androidaps.events.EventNewBG import info.nightscout.androidaps.interfaces.DataSyncSelector import info.nightscout.androidaps.interfaces.DatabaseHelperInterface import info.nightscout.androidaps.interfaces.ImportExportPrefsInterface +import info.nightscout.androidaps.interfaces.PumpSync import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper @@ -39,6 +40,7 @@ class MaintenanceFragment : DaggerFragment() { @Inject lateinit var databaseHelper: DatabaseHelperInterface @Inject lateinit var uel: UserEntryLogger @Inject lateinit var dataSyncSelector: DataSyncSelector + @Inject lateinit var pumpSync: PumpSync private val compositeDisposable = CompositeDisposable() @@ -68,6 +70,7 @@ class MaintenanceFragment : DaggerFragment() { databaseHelper.resetDatabases() repository.clearDatabases() dataSyncSelector.resetToNextFullSync() + pumpSync.connectNewPump() } .subscribeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.main) diff --git a/core/src/main/java/info/nightscout/androidaps/extensions/ExtendedBolusExtension.kt b/core/src/main/java/info/nightscout/androidaps/extensions/ExtendedBolusExtension.kt index 4a49f60b2a..3de657864b 100644 --- a/core/src/main/java/info/nightscout/androidaps/extensions/ExtendedBolusExtension.kt +++ b/core/src/main/java/info/nightscout/androidaps/extensions/ExtendedBolusExtension.kt @@ -67,6 +67,7 @@ fun ExtendedBolus.toRealJson(): JSONObject = .put("splitExt", 100) .put("enteredinsulin", amount) .put("relative", rate) + .put("isValid", isValid) .put("isEmulatingTempBasal", isEmulatingTempBasal) .also { if (interfaceIDs.pumpId != null) it.put("pumpId", interfaceIDs.pumpId) diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt index c4e2384e90..2def7e2aff 100644 --- a/core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt +++ b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt @@ -16,10 +16,10 @@ abstract class PumpPluginBase( override fun onStart() { super.onStart() if (getType() == PluginType.PUMP) { - Thread(Runnable { + Thread { SystemClock.sleep(3000) commandQueue.readStatus("Pump driver changed.", null) - }).start() + }.start() } } } \ No newline at end of file diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/PumpSync.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpSync.kt index f11f5816ff..a8fba66edc 100644 --- a/core/src/main/java/info/nightscout/androidaps/interfaces/PumpSync.kt +++ b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpSync.kt @@ -23,6 +23,14 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpType */ interface PumpSync { + /** + * Reset stored identification of last used pump + * + * Call this function when new pump is paired to accept data from new pump + * to prevent overlapping pump histories + */ + fun connectNewPump() + /* * GENERAL STATUS */ diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.kt index 1e2711dc78..ea2e753fb5 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.kt +++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.kt @@ -122,6 +122,7 @@ open class Notification { const val OMNIPOD_STARTUP_STATUS_REFRESH_FAILED = 69 const val OMNIPOD_TIME_OUT_OF_SYNC = 70 const val UNSUPPORTED_ACTION_IN_PUMP = 71 + const val WRONG_PUMP_DATA = 71 const val USER_MESSAGE = 1000 diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/pump/PumpSyncImplementation.kt b/core/src/main/java/info/nightscout/androidaps/plugins/pump/PumpSyncImplementation.kt index 280d6482c7..20d4f3a47b 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/pump/PumpSyncImplementation.kt +++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/PumpSyncImplementation.kt @@ -1,5 +1,6 @@ package info.nightscout.androidaps.plugins.pump +import info.nightscout.androidaps.core.R import info.nightscout.androidaps.data.DetailedBolusInfo import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.ValueWrapper @@ -14,8 +15,14 @@ import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.interfaces.PumpSync import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.plugins.bus.RxBusWrapper +import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification +import info.nightscout.androidaps.plugins.general.overview.notifications.Notification import info.nightscout.androidaps.plugins.pump.common.defs.PumpType import info.nightscout.androidaps.utils.DateUtil +import info.nightscout.androidaps.utils.T +import info.nightscout.androidaps.utils.resources.ResourceHelper +import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject @@ -23,12 +30,54 @@ import javax.inject.Inject class PumpSyncImplementation @Inject constructor( private val aapsLogger: AAPSLogger, private val dateUtil: DateUtil, + private val sp: SP, + private val rxBus: RxBusWrapper, + private val resourceHelper: ResourceHelper, private val profileFunction: ProfileFunction, private val repository: AppRepository ) : PumpSync { private val disposable = CompositeDisposable() + override fun connectNewPump() { + sp.remove(R.string.key_active_pump_type) + sp.remove(R.string.key_active_pump_serial_number) + sp.remove(R.string.key_active_pump_change_timestamp) + } + + /** + * Check if data is coming from currently active pump to prevent overlapping pump histories + * + * @param timestamp timestamp of data coming from pump + * @param type timestamp of of pump + * @param serialNumber serial number of of pump + * @return true if data is allowed + */ + private fun confirmActivePump(timestamp: Long, type: PumpType, serialNumber: String) : Boolean { + val storedType = sp.getString(R.string.key_active_pump_type, "") + val storedSerial = sp.getString(R.string.key_active_pump_serial_number, "") + val storedTimestamp = sp.getLong(R.string.key_active_pump_change_timestamp, 0L) + + // If no value stored assume we start using new pump from now + if (storedType.isEmpty() || storedSerial.isEmpty()) { + aapsLogger.debug(LTag.PUMP, "Registering new pump ${type.description} $serialNumber") + sp.putString(R.string.key_active_pump_type, type.description) + sp.putString(R.string.key_active_pump_serial_number, serialNumber) + sp.putLong(R.string.key_active_pump_change_timestamp, dateUtil._now()) // allow only data newer than register time (ie. ignore older history) + return timestamp > dateUtil._now() - T.mins(1).msecs() // allow first record to be 1 min old + } + + if (type.description == storedType && serialNumber == storedSerial && timestamp >= storedTimestamp) { + // data match + return true + } + + if (type.description != storedType || serialNumber != storedSerial) + rxBus.send(EventNewNotification(Notification(Notification.WRONG_PUMP_DATA, resourceHelper.gs(R.string.wrong_pump_data), Notification.URGENT))) + aapsLogger.error(LTag.PUMP, "Ignoring pump history record $timestamp ${type.description} $serialNumber. Registered pump: $storedType $storedSerial") + return false + } + override fun expectedPumpState(): PumpSync.PumpState { val bolus = repository.getLastBolusRecord() val temporaryBasal = repository.getTemporaryBasalActiveAt(dateUtil._now()).blockingGet() @@ -68,6 +117,7 @@ class PumpSyncImplementation @Inject constructor( } override fun addBolusWithTempId(timestamp: Long, amount: Double, temporaryId: Long, type: DetailedBolusInfo.BolusType, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val bolus = Bolus( timestamp = timestamp, amount = amount, @@ -88,6 +138,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncBolusWithTempId(timestamp: Long, amount: Double, temporaryId: Long, type: DetailedBolusInfo.BolusType?, pumpId: Long?, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val bolus = Bolus( timestamp = timestamp, amount = amount, @@ -109,6 +160,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncBolusWithPumpId(timestamp: Long, amount: Double, type: DetailedBolusInfo.BolusType?, pumpId: Long, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val bolus = Bolus( timestamp = timestamp, amount = amount, @@ -130,6 +182,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncCarbsWithTimestamp(timestamp: Long, amount: Double, pumpId: Long?, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val carbs = Carbs( timestamp = timestamp, amount = amount, @@ -149,6 +202,7 @@ class PumpSyncImplementation @Inject constructor( } override fun insertTherapyEventIfNewWithTimestamp(timestamp: Long, type: DetailedBolusInfo.EventType, note: String?, pumpId: Long?, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val therapyEvent = TherapyEvent( timestamp = timestamp, type = type.toDBbEventType(), @@ -175,6 +229,7 @@ class PumpSyncImplementation @Inject constructor( } override fun insertAnnouncement(error: String, pumpId: Long?, pumpType: PumpType, pumpSerial: String) { + if (!confirmActivePump(dateUtil._now(), pumpType, pumpSerial)) return disposable += repository.runTransaction(InsertTherapyEventAnnouncementTransaction(error, pumpId, pumpType.toDbPumpType(), pumpSerial)) .subscribe() } @@ -184,6 +239,7 @@ class PumpSyncImplementation @Inject constructor( */ override fun syncTemporaryBasalWithPumpId(timestamp: Long, rate: Double, duration: Long, isAbsolute: Boolean, type: PumpSync.TemporaryBasalType?, pumpId: Long, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val temporaryBasal = TemporaryBasal( timestamp = timestamp, rate = rate, @@ -207,6 +263,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncStopTemporaryBasalWithPumpId(timestamp: Long, endPumpId: Long, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false repository.runTransactionForResult(SyncPumpCancelTemporaryBasalIfAnyTransaction(timestamp, endPumpId, pumpType.toDbPumpType(), pumpSerial)) .doOnError { aapsLogger.error(LTag.DATABASE, "Error while saving temporary basal", it) } .blockingGet() @@ -231,6 +288,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncExtendedBolusWithPumpId(timestamp: Long, amount: Double, duration: Long, isEmulatingTB: Boolean, pumpId: Long, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false val extendedBolus = ExtendedBolus( timestamp = timestamp, amount = amount, @@ -253,6 +311,7 @@ class PumpSyncImplementation @Inject constructor( } override fun syncStopExtendedBolusWithPumpId(timestamp: Long, endPumpId: Long, pumpType: PumpType, pumpSerial: String): Boolean { + if (!confirmActivePump(timestamp, pumpType, pumpSerial)) return false repository.runTransactionForResult(SyncPumpCancelExtendedBolusIfAnyTransaction(timestamp, endPumpId, pumpType.toDbPumpType(), pumpSerial)) .doOnError { aapsLogger.error(LTag.DATABASE, "Error while saving extended bolus", it) } .blockingGet() diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index c627510416..764f6aa684 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -55,6 +55,9 @@ insight_local_settings data_choices_settings dexcom_settings + active_pump_change_timestamp + active_pump_type + active_pump_serial_number Refresh @@ -160,6 +163,7 @@ Notes Remove Add new + Data is coming from different pump. Change pump driver to reset pump state. Limiting max basal rate to %1$.2f U/h because of %2$s diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt index c884364b03..26c602a237 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt +++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt @@ -29,6 +29,7 @@ class MsgInitConnStatusTime_k( danaRPlugin.setPluginEnabled(PluginType.PUMP, true) danaRPlugin.setFragmentVisible(PluginType.PUMP, true) danaPump.reset() // mark not initialized + pumpSync.connectNewPump() //If profile coming from pump, switch it as well configBuilder.storeSettings("ChangingKoreanDanaDriver") rxBus.send(EventRebuildTabs()) diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java index cd88622ed5..e68b0029a4 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java +++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java @@ -19,6 +19,7 @@ import info.nightscout.androidaps.danar.R; import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; +import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.interfaces.ActivePluginProvider; import info.nightscout.androidaps.interfaces.CommandQueueProvider; @@ -344,6 +345,58 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin { return result; } + @NonNull @Override + public PumpEnactResult setExtendedBolus(double insulin, int durationInMinutes) { + DanaPump pump = danaPump; + insulin = constraintChecker.applyExtendedBolusConstraints(new Constraint<>(insulin)).value(); + // needs to be rounded + int durationInHalfHours = Math.max(durationInMinutes / 30, 1); + insulin = Round.roundTo(insulin, getPumpDescription().getExtendedBolusStep()); + + PumpEnactResult result = new PumpEnactResult(getInjector()); + if (danaPump.isExtendedInProgress() && Math.abs(danaPump.getExtendedBolusAmount() - insulin) < pumpDescription.getExtendedBolusStep()) { + result.enacted(false) + .success(true) + .comment(R.string.ok) + .duration(pump.getExtendedBolusRemainingMinutes()) + .absolute(pump.getExtendedBolusAbsoluteRate()) + .isPercent(false) + .isTempCancel(false); + getAapsLogger().debug(LTag.PUMP, "setExtendedBolus: Correct extended bolus already set. Current: " + pump.getExtendedBolusAmount() + " Asked: " + insulin); + return result; + } + boolean connectionOK = sExecutionService.extendedBolus(insulin, durationInHalfHours); + if (connectionOK && pump.isExtendedInProgress() && Math.abs(pump.getExtendedBolusAmount() - insulin) < getPumpDescription().getExtendedBolusStep()) { + result.enacted(true) + .success(true) + .comment(R.string.ok) + .isTempCancel(false) + .duration(pump.getExtendedBolusRemainingMinutes()) + .absolute(pump.getExtendedBolusAbsoluteRate()) + .isPercent(false); + if (!sp.getBoolean("danar_useextended", false)) + result.bolusDelivered(pump.getExtendedBolusAmount()); + getAapsLogger().debug(LTag.PUMP, "setExtendedBolus: OK"); + return result; + } + result.enacted(false).success(false).comment(R.string.danar_valuenotsetproperly); + getAapsLogger().error("setExtendedBolus: Failed to extended bolus"); + return result; + } + + @NonNull @Override + public PumpEnactResult cancelExtendedBolus() { + PumpEnactResult result = new PumpEnactResult(getInjector()); + if (danaPump.isExtendedInProgress()) { + sExecutionService.extendedBolusStop(); + result.enacted(true).success(!danaPump.isExtendedInProgress()).isTempCancel(true); + } else { + result.success(true).enacted(false).comment(R.string.ok); + getAapsLogger().debug(LTag.PUMP, "cancelExtendedBolus: OK"); + } + return result; + } + @NonNull @Override public PumpType model() { return PumpType.DANA_RV2; diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt index 184acdec55..500cbc8808 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt +++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt @@ -27,7 +27,6 @@ class MsgCheckValue_v2( danaPump.protocol = intFromBuff(bytes, 1, 1) danaPump.productCode = intFromBuff(bytes, 2, 1) if (danaPump.hwModel != DanaPump.EXPORT_MODEL) { - danaPump.reset() val notification = Notification(Notification.WRONG_DRIVER, resourceHelper.gs(R.string.pumpdrivercorrected), Notification.NORMAL) rxBus.send(EventNewNotification(notification)) danaRPlugin.disconnect("Wrong Model") @@ -37,6 +36,7 @@ class MsgCheckValue_v2( danaRPlugin.setPluginEnabled(PluginType.PUMP, false) danaRPlugin.setFragmentVisible(PluginType.PUMP, false) danaPump.reset() // mark not initialized + pumpSync.connectNewPump() //If profile coming from pump, switch it as well configBuilder.storeSettings("ChangingDanaRv2Driver") rxBus.send(EventRebuildTabs()) @@ -44,7 +44,6 @@ class MsgCheckValue_v2( return } if (danaPump.protocol != 2) { - danaPump.reset() val notification = Notification(Notification.WRONG_DRIVER, resourceHelper.gs(R.string.pumpdrivercorrected), Notification.NORMAL) rxBus.send(EventNewNotification(notification)) danaRKoreanPlugin.disconnect("Wrong Model") @@ -53,6 +52,8 @@ class MsgCheckValue_v2( danaRv2Plugin.setFragmentVisible(PluginType.PUMP, false) danaRPlugin.setPluginEnabled(PluginType.PUMP, true) danaRPlugin.setFragmentVisible(PluginType.PUMP, true) + danaPump.reset() // mark not initialized + pumpSync.connectNewPump() //If profile coming from pump, switch it as well configBuilder.storeSettings("ChangingDanaRv2Driver") rxBus.send(EventRebuildTabs()) diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java b/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java index 17df4dbfe5..9958f99b43 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java +++ b/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java @@ -112,6 +112,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump .subscribe(event -> { if (event.isChanged(getResourceHelper(), R.string.key_danar_bt_name)) { danaPump.reset(); + pumpSync.connectNewPump(); getCommandQueue().readStatus("DeviceChanged", null); } }) diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt index 090d4ee443..8afdbfa611 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt +++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt @@ -28,6 +28,7 @@ class MsgInitConnStatusTime( danaRPlugin.setPluginEnabled(PluginType.PUMP, false) danaRPlugin.setFragmentVisible(PluginType.PUMP, false) danaPump.reset() // mark not initialized + pumpSync.connectNewPump() //If profile coming from pump, switch it as well configBuilder.storeSettings("ChangingDanaDriver") rxBus.send(EventRebuildTabs()) diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt b/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt index c985da149d..fd48e38078 100644 --- a/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt +++ b/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt @@ -134,6 +134,7 @@ class DanaRSPlugin @Inject constructor( mDeviceAddress = sp.getString(R.string.key_danars_address, "") mDeviceName = sp.getString(R.string.key_danars_name, "") danaPump.reset() + pumpSync.connectNewPump() commandQueue.readStatus("DeviceChanged", null) } From 4eef2507fb186fb0b42148b2e1a477a53e0c3547 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 10 Apr 2021 12:19:31 +0200 Subject: [PATCH 2/4] fix tests --- .../androidaps/dependencyInjection/AppModule.kt | 2 +- .../general/automation/actions/ActionsTestBase.kt | 14 ++++++++++++-- .../general/automation/triggers/TriggerIobTest.kt | 2 +- .../utils/serialisation/SealedClassHelper.kt | 1 + .../androidaps/danaRv2/DanaRv2Plugin.java | 1 - .../danar/comm/MsgInitConnStatusBasic.kt | 6 +++--- .../androidaps/danar/comm/MsgStatusTempBasal.kt | 6 ++++-- .../plugins/pump/danaR/comm/DanaRTestBase.kt | 2 -- .../pump/danaR/comm/MsgStatusBolusExtendedTest.kt | 5 ++--- .../pump/danaR/comm/MsgStatusTempBasalTest.kt | 5 ++--- .../pump/danaRKorean/DanaRKoreanPluginTest.kt | 2 +- .../plugins/pump/danaRv2/DanaRv2PluginTest.kt | 4 ++-- .../pump/danaRv2/comm/MsgHistoryEventsRv2Test.kt | 8 ++++---- ...anaRS_Packet_Basal_Get_Temporary_Basal_State.kt | 10 +++++++--- ...DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt | 4 +++- ..._Packet_Bolus_Get_Extended_Menu_Option_State.kt | 4 +++- .../androidaps/danars/DanaRSPluginTest.kt | 2 +- .../nightscout/androidaps/danars/DanaRSTestBase.kt | 12 +----------- .../comm/DanaRsPacketApsHistoryEventsTest.kt | 2 +- .../DanaRsPacketBasalGetTemporaryBasalStateTest.kt | 6 +++--- .../comm/DanaRsPacketBolusGetDualBolusTest.kt | 1 - .../DanaRsPacketBolusGetExtendedBolusStateTest.kt | 2 +- ...aRsPacketBolusGetExtendedMenuOptionStateTest.kt | 4 ++-- .../comm/DanaRsPacketBolusSetStepBolusStartTest.kt | 2 +- .../DanaRsPacketGeneralGetMoreInformationTest.kt | 2 -- .../DanaRsPacketNotifyDeliveryRateDisplayTest.kt | 2 +- .../database/serialisation/SealedClassHelper.kt | 1 + .../omnipod/eros/OmnipodErosPumpPluginTest.java | 5 +++-- 28 files changed, 61 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt index 2612c101ad..ff88459f6a 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt @@ -79,7 +79,7 @@ open class AppModule { @Binds fun bindCommandQueueProvider(commandQueue: CommandQueue): CommandQueueProvider @Binds fun bindConfigInterface(config: Config): ConfigInterface @Binds fun bindConfigBuilderInterface(configBuilderPlugin: ConfigBuilderPlugin): ConfigBuilderInterface - @Binds fun bindTreatmentInterface(treatmentsPlugin: TreatmentsPlugin): TreatmentsInterface + @Binds fun bindTreatmentsInterface(treatmentsPlugin: TreatmentsPlugin): TreatmentsInterface @Binds fun bindDatabaseHelperInterface(databaseHelperProvider: DatabaseHelperProvider): DatabaseHelperInterface @Binds fun bindNotificationHolderInterface(notificationHolder: NotificationHolder): NotificationHolderInterface @Binds fun bindImportExportPrefsInterface(importExportPrefs: ImportExportPrefs): ImportExportPrefsInterface diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt index e970cefef0..cecef90241 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt @@ -8,6 +8,7 @@ import info.nightscout.androidaps.TestPumpPlugin import info.nightscout.androidaps.data.PumpEnactResult import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -17,7 +18,7 @@ import org.mockito.Mock import org.mockito.Mockito.`when` import org.powermock.core.classloader.annotations.PrepareForTest -@PrepareForTest(RxBusWrapper::class, ActionsTestBase.TestLoopPlugin::class) +@PrepareForTest(RxBusWrapper::class, ActionsTestBase.TestLoopPlugin::class, UserEntryLogger::class) open class ActionsTestBase : TestBaseWithProfile() { open class TestLoopPlugin( @@ -29,7 +30,7 @@ open class ActionsTestBase : TestBaseWithProfile() { pluginDescription, aapsLogger, resourceHelper, injector ), LoopInterface { - var suspended = false + private var suspended = false override var lastRun: LoopInterface.LastRun? = LoopInterface.LastRun() override val isSuspended: Boolean = suspended override fun suspendTo(endTime: Long) {} @@ -44,6 +45,7 @@ open class ActionsTestBase : TestBaseWithProfile() { @Mock lateinit var profilePlugin: ProfileInterface @Mock lateinit var smsCommunicatorPlugin: SmsCommunicatorInterface @Mock lateinit var loopPlugin: TestLoopPlugin + @Mock lateinit var uel: UserEntryLogger private val pluginDescription = PluginDescription() lateinit var testPumpPlugin: TestPumpPlugin @@ -55,6 +57,7 @@ open class ActionsTestBase : TestBaseWithProfile() { it.resourceHelper = resourceHelper it.dateUtil = dateUtil it.repository = repository + it.uel = uel } if (it is ActionStartTempTarget) { it.aapsLogger = aapsLogger @@ -62,6 +65,7 @@ open class ActionsTestBase : TestBaseWithProfile() { it.activePlugin = activePlugin it.repository = repository it.profileFunction = profileFunction + it.uel = uel } if (it is ActionSendSMS) { it.aapsLogger = aapsLogger @@ -73,10 +77,12 @@ open class ActionsTestBase : TestBaseWithProfile() { it.resourceHelper = resourceHelper it.activePlugin = activePlugin it.profileFunction = profileFunction + it.uel = uel } if (it is ActionProfileSwitchPercent) { it.resourceHelper = resourceHelper it.activePlugin = activePlugin + it.uel = uel } if (it is ActionNotification) { it.resourceHelper = resourceHelper @@ -86,18 +92,21 @@ open class ActionsTestBase : TestBaseWithProfile() { it.loopPlugin = loopPlugin it.resourceHelper = resourceHelper it.rxBus = rxBus + it.uel = uel } if (it is ActionLoopResume) { it.loopPlugin = loopPlugin it.resourceHelper = resourceHelper it.configBuilderPlugin = configBuilderPlugin it.rxBus = rxBus + it.uel = uel } if (it is ActionLoopEnable) { it.loopPlugin = loopPlugin it.resourceHelper = resourceHelper it.configBuilderPlugin = configBuilderPlugin it.rxBus = rxBus + it.uel = uel } if (it is ActionLoopDisable) { it.loopPlugin = loopPlugin @@ -105,6 +114,7 @@ open class ActionsTestBase : TestBaseWithProfile() { it.configBuilderPlugin = configBuilderPlugin it.commandQueue = commandQueue it.rxBus = rxBus + it.uel = uel } if (it is PumpEnactResult) { it.resourceHelper = resourceHelper diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt index 8a2961bc17..8b33bb23c2 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt @@ -30,7 +30,7 @@ class TriggerIobTest : TriggerTestBase() { } @Test fun shouldRunTest() { - `when`(iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(ArgumentMatchers.anyLong(), ArgumentMatchers.any(Profile::class.java))).thenReturn(generateIobRecordData()) + `when`(iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(ArgumentMatchers.anyLong(), anyObject())).thenReturn(generateIobRecordData()) var t: TriggerIob = TriggerIob(injector).setValue(1.1).comparator(Comparator.Compare.IS_EQUAL) Assert.assertFalse(t.shouldRun()) t = TriggerIob(injector).setValue(1.0).comparator(Comparator.Compare.IS_EQUAL) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt index 216754bd86..a3fd471bd2 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt @@ -33,6 +33,7 @@ object SealedClassHelper { val x = gson.fromJson(jsonReader, innerClass.javaObjectType) jsonReader.endObject() // if there a static object, actually return that + @Suppress("UNCHECKED_CAST") return innerClass.objectInstance as T? ?: x } diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java index e68b0029a4..2da5d829d5 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java +++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java @@ -19,7 +19,6 @@ import info.nightscout.androidaps.danar.R; import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; -import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.interfaces.ActivePluginProvider; import info.nightscout.androidaps.interfaces.CommandQueueProvider; diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt index c69078a09b..82ab4f12ea 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt +++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt @@ -25,7 +25,7 @@ class MsgInitConnStatusBasic( danaPump.currentBasal = intFromBuff(bytes, 11, 2) / 100.0 val tempBasalPercent = intFromBuff(bytes, 13, 1) val isExtendedInProgress = intFromBuff(bytes, 14, 1) == 1 - val isTempBasalInProgress = intFromBuff(bytes, 15, 1) == 1 + //val isTempBasalInProgress = intFromBuff(bytes, 15, 1) == 1 val statusBasalUDOption = intFromBuff(bytes, 16, 1) danaPump.isDualBolusInProgress = intFromBuff(bytes, 17, 1) == 1 val extendedBolusRate = intFromBuff(bytes, 18, 2) / 100.0 @@ -46,8 +46,8 @@ class MsgInitConnStatusBasic( aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: " + danaPump.reservoirRemainingUnits) aapsLogger.debug(LTag.PUMPCOMM, "Bolus blocked: " + danaPump.bolusBlocked) aapsLogger.debug(LTag.PUMPCOMM, "Current basal: " + danaPump.currentBasal) - aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: " + tempBasalPercent) - aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + isExtendedInProgress) + aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: $tempBasalPercent") + aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: $isExtendedInProgress") aapsLogger.debug(LTag.PUMPCOMM, "statusBasalUDOption: $statusBasalUDOption") aapsLogger.debug(LTag.PUMPCOMM, "Is dual bolus running: " + danaPump.isDualBolusInProgress) aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus rate: $extendedBolusRate") diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt index 07cb3a461d..69df6d4157 100644 --- a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt +++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt @@ -16,8 +16,10 @@ class MsgStatusTempBasal( aapsLogger.debug(LTag.PUMPCOMM, "New message") } + var isTempBasalInProgress = false + override fun handleMessage(bytes: ByteArray) { - val isTempBasalInProgress = intFromBuff(bytes, 0, 1) and 0x01 == 0x01 + isTempBasalInProgress = intFromBuff(bytes, 0, 1) and 0x01 == 0x01 val isAPSTempBasalInProgress = intFromBuff(bytes, 0, 1) and 0x02 == 0x02 var tempBasalPercent = intFromBuff(bytes, 1, 1) if (tempBasalPercent > 200) tempBasalPercent = (tempBasalPercent - 200) * 10 @@ -47,7 +49,7 @@ class MsgStatusTempBasal( } private fun getDateFromSecAgo(tempBasalAgoSecs: Int): Long { - return (floor(System.currentTimeMillis() / 1000.0) - tempBasalAgoSecs).toLong() * 1000 + return (floor(dateUtil._now() / 1000.0) - tempBasalAgoSecs).toLong() * 1000 } // because there is no fixed timestamp of start allow update of tbr only if tbr start differs more diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt index 3e5c5f3659..b237d26f12 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt @@ -32,7 +32,6 @@ open class DanaRTestBase : TestBase() { @Mock lateinit var activePluginProvider: ActivePluginProvider @Mock lateinit var dateUtil: DateUtil @Mock lateinit var databaseHelper: DatabaseHelperInterface - @Mock lateinit var treatmentsInterface: TreatmentsInterface @Mock lateinit var danaRPlugin: DanaRPlugin @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin @Mock lateinit var danaRv2Plugin: DanaRv2Plugin @@ -49,7 +48,6 @@ open class DanaRTestBase : TestBase() { fun setup() { danaPump = DanaPump(aapsLogger, sp, dateUtil, injector) testPumpPlugin = TestPumpPlugin(injector) - `when`(activePluginProvider.activeTreatments).thenReturn(treatmentsInterface) `when`(activePluginProvider.activePump).thenReturn(testPumpPlugin) doNothing().`when`(danaRKoreanPlugin).setPluginEnabled(anyObject(), anyBoolean()) doNothing().`when`(danaRPlugin).setPluginEnabled(anyObject(), anyBoolean()) diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt index e96a579585..fb2687ff6a 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt @@ -5,7 +5,6 @@ import info.nightscout.androidaps.utils.T import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.`when` import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) @@ -13,12 +12,12 @@ class MsgStatusBolusExtendedTest : DanaRTestBase() { @Test fun runTest() { - `when`(activePluginProvider.activeTreatments).thenReturn(treatmentsInterface) val packet = MsgStatusBolusExtended(injector) // test message decoding val array = ByteArray(100) + putByteToArray(array, 0, 1) putByteToArray(array, 1, 1) packet.handleMessage(array) - Assert.assertEquals(T.mins(30).msecs() , danaPump.extendedBolusDuration) + Assert.assertEquals(T.mins(30).msecs(), danaPump.extendedBolusDuration) } } \ No newline at end of file diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt index 5bcbe1db9f..f2a63b72ac 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt @@ -12,11 +12,10 @@ class MsgStatusTempBasalTest : DanaRTestBase() { @Test fun runTest() { val packet = MsgStatusTempBasal(injector) // test message decoding - // test message decoding packet.handleMessage(createArray(34, 1.toByte())) - Assert.assertEquals(true, danaPump.isTempBasalInProgress) + Assert.assertEquals(true, packet.isTempBasalInProgress) // passing an bigger number packet.handleMessage(createArray(34, 2.toByte())) - Assert.assertEquals(false, danaPump.isTempBasalInProgress) + Assert.assertEquals(false, packet.isTempBasalInProgress) } } \ No newline at end of file diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt index b92aa6e6c6..e1762ddc6d 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt @@ -48,7 +48,7 @@ class DanaRKoreanPluginTest : TestBaseWithProfile() { `when`(resourceHelper.gs(R.string.limitingbasalratio)).thenReturn("Limiting max basal rate to %1\$.2f U/h because of %2\$s") `when`(resourceHelper.gs(R.string.limitingpercentrate)).thenReturn("Limiting max percent rate to %1\$d%% because of %2\$s") danaPump = DanaPump(aapsLogger, sp, dateUtil, injector) - danaRPlugin = DanaRKoreanPlugin(injector, aapsLogger, aapsSchedulers, rxBus, danaPump, context, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, dateUtil, pumpSync, fabricPrivacy) + danaRPlugin = DanaRKoreanPlugin(injector, aapsLogger, aapsSchedulers, rxBus, context, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, danaPump, dateUtil, fabricPrivacy, pumpSync) } @Test @Throws(Exception::class) diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt index a6794d7a83..bbdaececa1 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt @@ -25,7 +25,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) -@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class) +@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class) class DanaRv2PluginTest : TestBaseWithProfile() { @Mock lateinit var context: Context @@ -51,7 +51,7 @@ class DanaRv2PluginTest : TestBaseWithProfile() { `when`(resourceHelper.gs(R.string.limitingbasalratio)).thenReturn("Limiting max basal rate to %1\$.2f U/h because of %2\$s") `when`(resourceHelper.gs(R.string.limitingpercentrate)).thenReturn("Limiting max percent rate to %1\$d%% because of %2\$s") danaPump = DanaPump(aapsLogger, sp, dateUtil, injector) - danaRv2Plugin = DanaRv2Plugin(injector, aapsLogger, aapsSchedulers, rxBus, context, danaPump, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, detailedBolusInfoStorage, temporaryBasalStorage, dateUtil, fabricPrivacy, pumpSync) + danaRv2Plugin = DanaRv2Plugin(injector, aapsLogger, aapsSchedulers, rxBus, context, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, danaPump,detailedBolusInfoStorage, temporaryBasalStorage, dateUtil, fabricPrivacy, pumpSync) } @Test diff --git a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEventsRv2Test.kt b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEventsRv2Test.kt index 2ee8a5e551..e76e29fa6e 100644 --- a/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEventsRv2Test.kt +++ b/danar/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEventsRv2Test.kt @@ -19,12 +19,12 @@ class MsgHistoryEventsRv2Test : DanaRTestBase() { // test message decoding val array = createArray(100, 2) - putByteToArray(array, 0, 0xFF.toByte()) - packet.handleMessage(array) - Assert.assertEquals(true, danaPump.historyDoneReceived) - // passing an bigger number putByteToArray(array, 0, 0x01.toByte()) packet.handleMessage(array) Assert.assertEquals(false, danaPump.historyDoneReceived) + + putByteToArray(array, 0, 0xFF.toByte()) + packet.handleMessage(array) + Assert.assertEquals(true, danaPump.historyDoneReceived) } } \ No newline at end of file diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt index 874e13ab25..f8f475f759 100644 --- a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt +++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt @@ -19,14 +19,18 @@ class DanaRS_Packet_Basal_Get_Temporary_Basal_State( aapsLogger.debug(LTag.PUMPCOMM, "Requesting temporary basal status") } + var isTempBasalInProgress: Boolean = false + var tempBasalTotalSec: Int = 0 + var tempBasalPercent: Int = 0 + override fun handleMessage(data: ByteArray) { val error = byteArrayToInt(getBytes(data, DATA_START, 1)) - val isTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x01 + isTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x01 val isAPSTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x02 - var tempBasalPercent = byteArrayToInt(getBytes(data, DATA_START + 2, 1)) + tempBasalPercent = byteArrayToInt(getBytes(data, DATA_START + 2, 1)) if (tempBasalPercent > 200) tempBasalPercent = (tempBasalPercent - 200) * 10 val durationHour = byteArrayToInt(getBytes(data, DATA_START + 3, 1)) - val tempBasalTotalSec: Int = if (durationHour == 150) 15 * 60 else if (durationHour == 160) 30 * 60 else durationHour * 60 * 60 + tempBasalTotalSec = if (durationHour == 150) 15 * 60 else if (durationHour == 160) 30 * 60 else durationHour * 60 * 60 val runningMin = byteArrayToInt(getBytes(data, DATA_START + 4, 2)) if (error != 0) failed = true val tempBasalRemainingMin = (danaPump.tempBasalTotalSec - runningMin * 60) / 60 diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt index a94216a90a..e3e6cb9e45 100644 --- a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt +++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt @@ -18,13 +18,15 @@ class DanaRS_Packet_Bolus_Get_Extended_Bolus_State( aapsLogger.debug(LTag.PUMPCOMM, "New message") } + var isExtendedInProgress: Boolean = false + override fun handleMessage(data: ByteArray) { var dataIndex = DATA_START var dataSize = 1 val error = byteArrayToInt(getBytes(data, dataIndex, dataSize)) dataIndex += dataSize dataSize = 1 - val isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01 + isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01 dataIndex += dataSize dataSize = 1 val extendedBolusDuration = T.mins(byteArrayToInt(getBytes(data, dataIndex, dataSize)) * 30L).msecs() diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt index d427520004..9f4a26da6f 100644 --- a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt +++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt @@ -17,13 +17,15 @@ class DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State( aapsLogger.debug(LTag.PUMPCOMM, "New message") } + var isExtendedInProgress: Boolean = false + override fun handleMessage(data: ByteArray) { var dataIndex = DATA_START var dataSize = 1 val extendedMenuOption = byteArrayToInt(getBytes(data, dataIndex, dataSize)) dataIndex += dataSize dataSize = 1 - val isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01 + isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01 aapsLogger.debug(LTag.PUMPCOMM, "extendedMenuOption: $extendedMenuOption") } diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSPluginTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSPluginTest.kt index 9276960e96..61f2ea5d53 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSPluginTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSPluginTest.kt @@ -23,7 +23,7 @@ import org.powermock.modules.junit4.PowerMockRunner @Suppress("SpellCheckingInspection") @RunWith(PowerMockRunner::class) -@PrepareForTest(ConstraintChecker::class, RxBusWrapper::class, DetailedBolusInfoStorage::class) +@PrepareForTest(ConstraintChecker::class, RxBusWrapper::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class) class DanaRSPluginTest : DanaRSTestBase() { @Mock lateinit var context: Context diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSTestBase.kt b/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSTestBase.kt index e641f0139c..05b06d4fca 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSTestBase.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/DanaRSTestBase.kt @@ -5,7 +5,6 @@ import dagger.android.HasAndroidInjector import info.nightscout.androidaps.TestBaseWithProfile import info.nightscout.androidaps.dana.DanaPump import info.nightscout.androidaps.danars.comm.DanaRS_Packet -import info.nightscout.androidaps.db.TemporaryBasal import info.nightscout.androidaps.utils.sharedPreferences.SP import org.junit.Before import org.mockito.ArgumentMatchers @@ -16,16 +15,7 @@ open class DanaRSTestBase : TestBaseWithProfile() { @Mock lateinit var sp: SP - val injector = HasAndroidInjector { - AndroidInjector { - if (it is TemporaryBasal) { - it.aapsLogger = aapsLogger - it.activePlugin = activePluginProvider - it.profileFunction = profileFunction - it.sp = sp - } - } - } + val injector = HasAndroidInjector { AndroidInjector { } } lateinit var danaPump: DanaPump diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketApsHistoryEventsTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketApsHistoryEventsTest.kt index c87f4b64dc..9f55683786 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketApsHistoryEventsTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketApsHistoryEventsTest.kt @@ -20,7 +20,7 @@ import org.powermock.modules.junit4.PowerMockRunner import java.util.* @RunWith(PowerMockRunner::class) -@PrepareForTest(RxBusWrapper::class, DetailedBolusInfoStorage::class, DanaRSPlugin::class) +@PrepareForTest(RxBusWrapper::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class, DanaRSPlugin::class) class DanaRsPacketApsHistoryEventsTest : DanaRSTestBase() { @Mock lateinit var context: Context diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBasalGetTemporaryBasalStateTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBasalGetTemporaryBasalStateTest.kt index 86bf509924..e29ed61b41 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBasalGetTemporaryBasalStateTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBasalGetTemporaryBasalStateTest.kt @@ -34,9 +34,9 @@ class DanaRsPacketBasalGetTemporaryBasalStateTest : DanaRSTestBase() { putIntToArray(array, 4, 1) packet.handleMessage(array) Assert.assertTrue(packet.failed) - Assert.assertTrue(danaPump.isTempBasalInProgress) - Assert.assertEquals(300, danaPump.tempBasalPercent) - Assert.assertEquals(15 * 60, danaPump.tempBasalTotalSec) + Assert.assertTrue(packet.isTempBasalInProgress) + Assert.assertEquals(300, packet.tempBasalPercent) + Assert.assertEquals(15 * 60, packet.tempBasalTotalSec) Assert.assertEquals("BASAL__TEMPORARY_BASAL_STATE", packet.friendlyName) } } \ No newline at end of file diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetDualBolusTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetDualBolusTest.kt index 5f04609ec5..9de5e53cb8 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetDualBolusTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetDualBolusTest.kt @@ -33,7 +33,6 @@ class DanaRsPacketBolusGetDualBolusTest : DanaRSTestBase() { packet.handleMessage(array) Assert.assertTrue(packet.failed) Assert.assertEquals(1.0, danaPump.bolusStep, 0.0) - Assert.assertEquals(0.55, danaPump.extendedBolusAbsoluteRate, 0.0) Assert.assertEquals(40.0, danaPump.maxBolus, 0.0) Assert.assertEquals("BOLUS__GET_DUAL_BOLUS", packet.friendlyName) diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedBolusStateTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedBolusStateTest.kt index c74b203ff5..759b35e527 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedBolusStateTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedBolusStateTest.kt @@ -31,7 +31,7 @@ class DanaRsPacketBolusGetExtendedBolusStateTest : DanaRSTestBase() { testValue = 1.0 packet.handleMessage(createArray(11, testValue.toInt().toByte())) // is extended bolus in progress - Assert.assertEquals(testValue == 1.0, danaPump.isExtendedInProgress) + Assert.assertEquals(testValue == 1.0, packet.isExtendedInProgress) Assert.assertEquals(testValue != 0.0, packet.failed) Assert.assertEquals("BOLUS__GET_EXTENDED_BOLUS_STATE", packet.friendlyName) } diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedMenuOptionStateTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedMenuOptionStateTest.kt index db66481f5a..50921c5ea5 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedMenuOptionStateTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusGetExtendedMenuOptionStateTest.kt @@ -26,10 +26,10 @@ class DanaRsPacketBolusGetExtendedMenuOptionStateTest : DanaRSTestBase() { // test message decoding packet.handleMessage(createArray(34, 0.toByte())) // isExtendedInProgress should be false - Assert.assertEquals(false, danaPump.isExtendedInProgress) + Assert.assertEquals(false, packet.isExtendedInProgress) // assertEquals(false, packet.failed); packet.handleMessage(createArray(34, 1.toByte())) - Assert.assertEquals(true, danaPump.isExtendedInProgress) + Assert.assertEquals(true, packet.isExtendedInProgress) Assert.assertEquals("BOLUS__GET_EXTENDED_MENU_OPTION_STATE", packet.friendlyName) } } \ No newline at end of file diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusSetStepBolusStartTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusSetStepBolusStartTest.kt index 9bc907d7c2..224dd6fee2 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusSetStepBolusStartTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketBolusSetStepBolusStartTest.kt @@ -21,7 +21,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) -@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class) +@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class) class DanaRsPacketBolusSetStepBolusStartTest : DanaRSTestBase() { @Mock lateinit var constraintChecker: ConstraintChecker diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketGeneralGetMoreInformationTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketGeneralGetMoreInformationTest.kt index f21ae1b563..957553475f 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketGeneralGetMoreInformationTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketGeneralGetMoreInformationTest.kt @@ -44,8 +44,6 @@ class DanaRsPacketGeneralGetMoreInformationTest : DanaRSTestBase() { Assert.assertFalse(packet.failed) Assert.assertEquals(6.0, danaPump.iob, 0.01) Assert.assertEquals(12.5, danaPump.dailyTotalUnits, 0.01) - Assert.assertTrue(danaPump.isExtendedInProgress) - Assert.assertEquals(150, danaPump.extendedBolusRemainingMinutes) val lastBolus = Calendar.getInstance() lastBolus.timeInMillis = danaPump.lastBolusTime Assert.assertEquals(15, lastBolus.get(Calendar.HOUR_OF_DAY)) diff --git a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketNotifyDeliveryRateDisplayTest.kt b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketNotifyDeliveryRateDisplayTest.kt index 1e039e0fda..b8318b686f 100644 --- a/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketNotifyDeliveryRateDisplayTest.kt +++ b/danars/src/test/java/info/nightscout/androidaps/danars/comm/DanaRsPacketNotifyDeliveryRateDisplayTest.kt @@ -24,7 +24,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) -@PrepareForTest(ConstraintChecker::class, RxBusWrapper::class, DetailedBolusInfoStorage::class) +@PrepareForTest(ConstraintChecker::class, RxBusWrapper::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class) class DanaRsPacketNotifyDeliveryRateDisplayTest : DanaRSTestBase() { @Mock lateinit var activePlugin: ActivePluginProvider diff --git a/database/src/main/java/info/nightscout/androidaps/database/serialisation/SealedClassHelper.kt b/database/src/main/java/info/nightscout/androidaps/database/serialisation/SealedClassHelper.kt index bf1fc4ab6c..704819908e 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/serialisation/SealedClassHelper.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/serialisation/SealedClassHelper.kt @@ -33,6 +33,7 @@ object SealedClassHelper { val x = gson.fromJson(jsonReader, innerClass.javaObjectType) jsonReader.endObject() // if there a static object, actually return that + @Suppress("UNCHECKED_CAST") return innerClass.objectInstance as T? ?: x } diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java index 0bb6fe6d8e..d3a246ffe0 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java @@ -68,9 +68,10 @@ public class OmnipodErosPumpPluginTest { OmnipodErosPumpPlugin plugin = new OmnipodErosPumpPlugin(injector, aapsLogger, new TestAapsSchedulers(), rxBusWrapper, null, resourceHelper, activePluginProvider, null, null, aapsOmnipodErosManager, commandQueueProvider, null, null, null, null, - rileyLinkUtil, null, null, null + rileyLinkUtil, null, null, pumpSync ); - when(pumpSync.expectedPumpState().getTemporaryBasal()).thenReturn(null); + PumpSync.PumpState pumpState = new PumpSync.PumpState(null, null, null, null); + when(pumpSync.expectedPumpState()).thenReturn(pumpState); when(rileyLinkUtil.getRileyLinkHistory()).thenReturn(new ArrayList<>()); when(injector.androidInjector()).thenReturn(instance -> { }); From e4d70a73037c01b2744724f21e9b7e6e9b3827eb Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 10 Apr 2021 12:56:54 +0200 Subject: [PATCH 3/4] fix tests --- .../configBuilder/ConfigBuilderPluginTest.kt | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt index 7a85c0284e..5309c4d05b 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt @@ -1,15 +1,12 @@ package info.nightscout.androidaps.plugins.configBuilder -import dagger.Lazy import dagger.android.AndroidInjector import dagger.android.HasAndroidInjector import info.nightscout.androidaps.TestBase import info.nightscout.androidaps.interfaces.ActivePluginProvider -import info.nightscout.androidaps.interfaces.CommandQueueProvider +import info.nightscout.androidaps.interfaces.PumpSync import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper -import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin -import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.sharedPreferences.SP import org.junit.Before @@ -23,22 +20,15 @@ import org.powermock.modules.junit4.PowerMockRunner @PrepareForTest(UserEntryLogger::class) class ConfigBuilderPluginTest : TestBase() { - @Mock lateinit var virtualPumpPlugin: Lazy - @Mock lateinit var treatmentsPlugin: Lazy - @Mock lateinit var sp: SP @Mock lateinit var resourceHelper: ResourceHelper - @Mock lateinit var commandQueue: CommandQueueProvider @Mock lateinit var activePlugin: ActivePluginProvider @Mock lateinit var uel: UserEntryLogger + @Mock lateinit var pumpSync: PumpSync private lateinit var configBuilderPlugin: ConfigBuilderPlugin - val injector = HasAndroidInjector { - AndroidInjector { - - } - } + val injector = HasAndroidInjector { AndroidInjector { } } @Test fun dummy() { @@ -47,6 +37,6 @@ class ConfigBuilderPluginTest : TestBase() { @Before fun prepareMock() { - configBuilderPlugin = ConfigBuilderPlugin(injector, aapsLogger, resourceHelper, sp, RxBusWrapper(aapsSchedulers), activePlugin, uel) + configBuilderPlugin = ConfigBuilderPlugin(injector, aapsLogger, resourceHelper, sp, RxBusWrapper(aapsSchedulers), activePlugin, uel, pumpSync) } } \ No newline at end of file From d898a374e628775b879ffce9212731859af78920 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 10 Apr 2021 14:36:55 +0200 Subject: [PATCH 4/4] fix tests, removed Trigger reflection --- .../interfaces/ConstraintsCheckerTest.kt | 2 +- .../SmsCommunicatorPluginTest.kt | 8 +-- .../IobCobCalculatorPluginTest.kt | 7 +- .../treatments/TreatmentsPluginTest.kt | 2 + .../general/automation/triggers/Trigger.kt | 68 +++++++++++++------ .../triggers/TriggerAutosensValue.kt | 9 +-- .../automation/triggers/TriggerBTDevice.kt | 9 +-- .../general/automation/triggers/TriggerBg.kt | 9 +-- .../automation/triggers/TriggerBolusAgo.kt | 9 +-- .../general/automation/triggers/TriggerCOB.kt | 14 ++-- .../automation/triggers/TriggerConnector.kt | 10 ++- .../automation/triggers/TriggerDelta.kt | 11 +-- .../automation/triggers/TriggerDummy.kt | 3 +- .../general/automation/triggers/TriggerIob.kt | 9 +-- .../automation/triggers/TriggerLocation.kt | 10 +-- .../triggers/TriggerProfilePercent.kt | 12 ++-- .../triggers/TriggerPumpLastConnection.kt | 10 +-- .../triggers/TriggerRecurringTime.kt | 7 +- .../automation/triggers/TriggerTempTarget.kt | 9 +-- .../automation/triggers/TriggerTime.kt | 9 +-- .../automation/triggers/TriggerTimeRange.kt | 9 +-- .../automation/triggers/TriggerWifiSsid.kt | 13 ++-- .../general/automation/AutomationEventTest.kt | 2 +- .../automation/triggers/DummyTrigger.kt | 35 +++------- .../triggers/TriggerAutosensValueTest.kt | 2 +- .../triggers/TriggerBTDeviceTest.kt | 2 +- .../automation/triggers/TriggerBgTest.kt | 2 +- .../triggers/TriggerBolusAgoTest.kt | 2 +- .../automation/triggers/TriggerCOBTest.kt | 2 +- .../triggers/TriggerConnectorTest.kt | 4 +- .../automation/triggers/TriggerDeltaTest.kt | 2 +- .../automation/triggers/TriggerIobTest.kt | 2 +- .../triggers/TriggerLocationTest.kt | 2 +- .../triggers/TriggerProfilePercentTest.kt | 2 +- .../triggers/TriggerPumpLastConnectionTest.kt | 2 +- .../triggers/TriggerRecurringTimeTest.kt | 2 +- .../triggers/TriggerTempTargetTest.kt | 2 +- .../triggers/TriggerTimeRangeTest.kt | 2 +- .../automation/triggers/TriggerTimeTest.kt | 2 +- .../triggers/TriggerWifiSsidTest.kt | 2 +- 40 files changed, 135 insertions(+), 185 deletions(-) diff --git a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt index c4286be513..755802360a 100644 --- a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt @@ -53,7 +53,7 @@ import java.util.* @PrepareForTest( ConfigBuilderPlugin::class, ConstraintChecker::class, SP::class, Context::class, OpenAPSAMAPlugin::class, OpenAPSSMBPlugin::class, TreatmentsPlugin::class, TreatmentService::class, - VirtualPumpPlugin::class, DetailedBolusInfoStorage::class, GlimpPlugin::class, Profiler::class, + VirtualPumpPlugin::class, DetailedBolusInfoStorage::class, TemporaryBasalStorage::class, GlimpPlugin::class, Profiler::class, UserEntryLogger::class, IobCobCalculatorPlugin::class, LoggerUtils::class, AppRepository::class) class ConstraintsCheckerTest : TestBaseWithProfile() { diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt index 9e0b938e57..fef4d58ca3 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt @@ -139,17 +139,17 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() { null }.`when`(commandQueue).bolus(anyObject(), ArgumentMatchers.any(Callback::class.java)) Mockito.doAnswer { invocation: InvocationOnMock -> - val callback = invocation.getArgument(4) + val callback = invocation.getArgument(5) callback.result = PumpEnactResult(injector).success(true).isPercent(true).percent(invocation.getArgument(0)).duration(invocation.getArgument(1)) callback.run() null - }.`when`(commandQueue).tempBasalPercent(ArgumentMatchers.anyInt(), ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean(), anyObject(), ArgumentMatchers.any(PumpSync.TemporaryBasalType::class.java), ArgumentMatchers.any(Callback::class.java)) + }.`when`(commandQueue).tempBasalPercent(ArgumentMatchers.anyInt(), ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean(), anyObject(), anyObject(), ArgumentMatchers.any(Callback::class.java)) Mockito.doAnswer { invocation: InvocationOnMock -> - val callback = invocation.getArgument(4) + val callback = invocation.getArgument(5) callback.result = PumpEnactResult(injector).success(true).isPercent(false).absolute(invocation.getArgument(0)).duration(invocation.getArgument(1)) callback.run() null - }.`when`(commandQueue).tempBasalAbsolute(ArgumentMatchers.anyDouble(), ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean(), anyObject(), ArgumentMatchers.any(PumpSync.TemporaryBasalType::class.java), ArgumentMatchers.any(Callback::class.java)) + }.`when`(commandQueue).tempBasalAbsolute(ArgumentMatchers.anyDouble(), ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean(), anyObject(), anyObject(), ArgumentMatchers.any(Callback::class.java)) Mockito.doAnswer { invocation: InvocationOnMock -> val callback = invocation.getArgument(2) callback.result = PumpEnactResult(injector).success(true).isPercent(false).absolute(invocation.getArgument(0)).duration(invocation.getArgument(1)) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt index 0bf79edf7a..b7430578ba 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt @@ -121,7 +121,7 @@ class IobCobCalculatorPluginTest : TestBase() { } @Test - fun createBucketedData5minTest() { + fun createBucketedData5minTest1() { val bgReadingList: MutableList = ArrayList() // Super data should not be touched @@ -205,6 +205,11 @@ class IobCobCalculatorPluginTest : TestBase() { Assert.assertEquals(90.0, iobCobCalculatorPlugin.bucketedData!![1].value, 1.0) Assert.assertEquals(50.0, iobCobCalculatorPlugin.bucketedData!![5].value, 1.0) Assert.assertEquals(40.0, iobCobCalculatorPlugin.bucketedData!![6].value, 1.0) + } + + @Test + fun createBucketedData5minTest2() { + val bgReadingList: MutableList = ArrayList() //bucketed data should be null if no bg data available iobCobCalculatorPlugin.bgReadings = ArrayList() diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt index 3e8b964004..82e781e01d 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt @@ -48,6 +48,8 @@ class TreatmentsPluginTest : TestBaseWithProfile() { } } } + + @Test fun dumy() {} /* private lateinit var insulinOrefRapidActingPlugin: InsulinOrefRapidActingPlugin private lateinit var sot: TreatmentsPlugin diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/Trigger.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/Trigger.kt index ca84090bba..83b8eb0e5b 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/Trigger.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/Trigger.kt @@ -14,7 +14,6 @@ import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.TreatmentsInterface import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.automation.dialogs.ChooseTriggerDialog @@ -26,10 +25,8 @@ import info.nightscout.androidaps.services.LastLocationDataContainer import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.sharedPreferences.SP -import org.json.JSONException import org.json.JSONObject import javax.inject.Inject -import kotlin.reflect.full.primaryConstructor abstract class Trigger(val injector: HasAndroidInjector) { @@ -50,7 +47,7 @@ abstract class Trigger(val injector: HasAndroidInjector) { } abstract fun shouldRun(): Boolean - abstract fun toJSON(): String + abstract fun dataJSON(): JSONObject abstract fun fromJSON(data: String): Trigger abstract fun friendlyName(): Int @@ -77,23 +74,56 @@ abstract class Trigger(val injector: HasAndroidInjector) { root.addView(title) } + fun toJSON(): String = + JSONObject() + .put("type", this::class.java.simpleName) + .put("data", dataJSON()) + .toString() + fun instantiate(obj: JSONObject): Trigger? { - try { - val type = obj.getString("type") - val data = obj.getJSONObject("data") - val clazz = Class.forName(type).kotlin - return (clazz.primaryConstructor?.call(injector) as Trigger).fromJSON(data?.toString() - ?: "") - } catch (e: ClassNotFoundException) { - aapsLogger.error("Unhandled exception", e) - } catch (e: InstantiationException) { - aapsLogger.error("Unhandled exception", e) - } catch (e: IllegalAccessException) { - aapsLogger.error("Unhandled exception", e) - } catch (e: JSONException) { - aapsLogger.error("Unhandled exception", e) + val type = obj.getString("type") + val data = obj.getJSONObject("data") + //val clazz = Class.forName(type).kotlin + //return (clazz.primaryConstructor?.call(injector) as Trigger).fromJSON(data?.toString() ?: "") + return when (type) { + TriggerAutosensValue::class.java.name, // backward compatibility + TriggerAutosensValue::class.java.simpleName -> TriggerAutosensValue(injector).fromJSON(data?.toString() ?: "") + TriggerBg::class.java.name, + TriggerBg::class.java.simpleName -> TriggerBg(injector).fromJSON(data?.toString() ?: "") + TriggerBolusAgo::class.java.name, + TriggerBolusAgo::class.java.simpleName -> TriggerBolusAgo(injector).fromJSON(data?.toString() ?: "") + TriggerBTDevice::class.java.name, + TriggerBTDevice::class.java.simpleName -> TriggerBTDevice(injector).fromJSON(data?.toString() ?: "") + TriggerIob::class.java.name, + TriggerIob::class.java.simpleName -> TriggerIob(injector).fromJSON(data?.toString() ?: "") + TriggerCOB::class.java.name, + TriggerCOB::class.java.simpleName -> TriggerCOB(injector).fromJSON(data?.toString() ?: "") + TriggerConnector::class.java.name, + TriggerConnector::class.java.simpleName -> TriggerConnector(injector).fromJSON(data?.toString() ?: "") + TriggerDelta::class.java.name, + TriggerDelta::class.java.simpleName -> TriggerDelta(injector).fromJSON(data?.toString() ?: "") + TriggerDummy::class.java.name, + TriggerDummy::class.java.simpleName -> TriggerDummy(injector).fromJSON(data?.toString() ?: "") + TriggerIob::class.java.name, + TriggerIob::class.java.simpleName -> TriggerIob(injector).fromJSON(data?.toString() ?: "") + TriggerLocation::class.java.name, + TriggerLocation::class.java.simpleName -> TriggerLocation(injector).fromJSON(data?.toString() ?: "") + TriggerProfilePercent::class.java.name, + TriggerProfilePercent::class.java.simpleName -> TriggerProfilePercent(injector).fromJSON(data?.toString() ?: "") + TriggerPumpLastConnection::class.java.name, + TriggerPumpLastConnection::class.java.simpleName -> TriggerPumpLastConnection(injector).fromJSON(data?.toString() ?: "") + TriggerRecurringTime::class.java.name, + TriggerRecurringTime::class.java.simpleName -> TriggerRecurringTime(injector).fromJSON(data?.toString() ?: "") + TriggerTempTarget::class.java.name, + TriggerTempTarget::class.java.simpleName -> TriggerTempTarget(injector).fromJSON(data?.toString() ?: "") + TriggerTime::class.java.name, + TriggerTime::class.java.simpleName -> TriggerTime(injector).fromJSON(data?.toString() ?: "") + TriggerTimeRange::class.java.name, + TriggerTimeRange::class.java.simpleName -> TriggerTimeRange(injector).fromJSON(data?.toString() ?: "") + TriggerWifiSsid::class.java.name, + TriggerWifiSsid::class.java.simpleName -> TriggerWifiSsid(injector).fromJSON(data?.toString() ?: "") + else -> throw ClassNotFoundException(type) } - return null } fun createAddButton(context: Context, trigger: TriggerConnector): ImageButton { diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValue.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValue.kt index d0d50fe418..1cfb6c5b4c 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValue.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValue.kt @@ -46,15 +46,10 @@ class TriggerAutosensValue(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("value", autosens.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDevice.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDevice.kt index 4b75a476e3..292a29cda6 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDevice.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDevice.kt @@ -39,15 +39,10 @@ class TriggerBTDevice(injector: HasAndroidInjector) : Trigger(injector) { return false } - @Synchronized override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("comparator", comparator.value.toString()) .put("name", btDevice.value) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBg.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBg.kt index b4d9d6d10b..3c173f4e3d 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBg.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBg.kt @@ -63,16 +63,11 @@ class TriggerBg(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("bg", bg.value) .put("comparator", comparator.value.toString()) .put("units", bg.units) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgo.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgo.kt index aebda7eb56..2ac5203aec 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgo.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgo.kt @@ -56,15 +56,10 @@ class TriggerBolusAgo(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("minutesAgo", minutesAgo.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOB.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOB.kt index a87ea5691f..f561145eb9 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOB.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOB.kt @@ -16,6 +16,7 @@ import org.json.JSONObject import java.text.DecimalFormat class TriggerCOB(injector: HasAndroidInjector) : Trigger(injector) { + private val minValue = 0 private val maxValue = sp.getInt(R.string.key_treatmentssafety_maxcarbs, 48) var cob: InputDouble = InputDouble(0.0, minValue.toDouble(), maxValue.toDouble(), 1.0, DecimalFormat("1")) @@ -26,12 +27,12 @@ class TriggerCOB(injector: HasAndroidInjector) : Trigger(injector) { comparator = Comparator(resourceHelper, triggerCOB.comparator.value) } - fun setValue(value:Double) : TriggerCOB { + fun setValue(value: Double): TriggerCOB { cob.value = value return this } - fun comparator(comparator: Comparator.Compare) : TriggerCOB { + fun comparator(comparator: Comparator.Compare): TriggerCOB { this.comparator.value = comparator return this } @@ -55,15 +56,10 @@ class TriggerCOB(injector: HasAndroidInjector) : Trigger(injector) { return false } - @Synchronized override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("carbs", cob.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnector.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnector.kt index fa1487aabd..105f91fe3b 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnector.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnector.kt @@ -19,6 +19,7 @@ import org.json.JSONObject import java.util.* class TriggerConnector(injector: HasAndroidInjector) : Trigger(injector) { + var list: MutableList = ArrayList() private var connectorType: Type = Type.AND @@ -40,6 +41,7 @@ class TriggerConnector(injector: HasAndroidInjector) : Trigger(injector) { } companion object { + fun labels(resourceHelper: ResourceHelper): List { val list: MutableList = ArrayList() for (t in values()) { @@ -79,16 +81,12 @@ class TriggerConnector(injector: HasAndroidInjector) : Trigger(injector) { return result } - @Synchronized override fun toJSON(): String { + override fun dataJSON(): JSONObject { val array = JSONArray() for (t in list) array.put(t.toJSON()) - val data = JSONObject() + return JSONObject() .put("connectorType", connectorType.toString()) .put("triggerList", array) - return JSONObject() - .put("type", TriggerConnector::class.java.name) - .put("data", data) - .toString() } override fun fromJSON(data: String): Trigger { diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDelta.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDelta.kt index 35d23fe43d..9a5e564054 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDelta.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDelta.kt @@ -13,7 +13,6 @@ import info.nightscout.androidaps.plugins.general.automation.elements.InputDelta import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder import info.nightscout.androidaps.plugins.general.automation.elements.StaticLabel -import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus import info.nightscout.androidaps.utils.JsonHelper import org.json.JSONObject import java.text.DecimalFormat @@ -25,6 +24,7 @@ class TriggerDelta(injector: HasAndroidInjector) : Trigger(injector) { var comparator: Comparator = Comparator(resourceHelper) companion object { + private const val MMOL_MAX = 4.0 private const val MGDL_MAX = 72.0 } @@ -85,17 +85,12 @@ class TriggerDelta(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("value", delta.value) .put("units", units) .put("deltaType", delta.deltaType) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDummy.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDummy.kt index 84a5177a3f..d3b580768a 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDummy.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDummy.kt @@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.general.automation.triggers import com.google.common.base.Optional import dagger.android.HasAndroidInjector +import org.json.JSONObject // Used for instantiation of other triggers only class TriggerDummy(injector: HasAndroidInjector, val shouldRun: Boolean = false) : Trigger(injector) { @@ -10,7 +11,7 @@ class TriggerDummy(injector: HasAndroidInjector, val shouldRun: Boolean = false) return shouldRun } - override fun toJSON(): String { + override fun dataJSON(): JSONObject { throw NotImplementedError("An operation is not implemented") } diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIob.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIob.kt index ca009ee794..e8fffc13f8 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIob.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIob.kt @@ -44,15 +44,10 @@ class TriggerIob(injector: HasAndroidInjector) : Trigger(injector) { return false } - @Synchronized override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("insulin", insulin.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocation.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocation.kt index bc7614cd80..f9fbbfc27b 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocation.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocation.kt @@ -12,6 +12,7 @@ import org.json.JSONObject import java.text.DecimalFormat class TriggerLocation(injector: HasAndroidInjector) : Trigger(injector) { + var latitude = InputDouble(0.0, -90.0, +90.0, 0.000001, DecimalFormat("0.000000")) var longitude = InputDouble(0.0, -180.0, +180.0, 0.000001, DecimalFormat("0.000000")) var distance = InputDouble(200.0, 0.0, 100000.0, 10.0, DecimalFormat("0")) @@ -56,18 +57,13 @@ class TriggerLocation(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("latitude", latitude.value) .put("longitude", longitude.value) .put("distance", distance.value) .put("name", name.value) .put("mode", modeSelected.value) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt index 1996ec623d..9724d52278 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt @@ -14,11 +14,12 @@ import info.nightscout.androidaps.utils.JsonHelper import org.json.JSONObject class TriggerProfilePercent(injector: HasAndroidInjector) : Trigger(injector) { + var pct = InputPercent() var comparator = Comparator(resourceHelper) constructor(injector: HasAndroidInjector, value: Double, compare: Comparator.Compare) : this(injector) { - pct = InputPercent( value) + pct = InputPercent(value) comparator = Comparator(resourceHelper, compare) } @@ -55,15 +56,10 @@ class TriggerProfilePercent(injector: HasAndroidInjector) : Trigger(injector) { return false } - @Synchronized override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("percentage", pct.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnection.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnection.kt index 3fecec8ff6..4d852d7b23 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnection.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnection.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.utils.JsonHelper.safeGetString import org.json.JSONObject class TriggerPumpLastConnection(injector: HasAndroidInjector) : Trigger(injector) { + var minutesAgo = InputDuration() var comparator = Comparator(resourceHelper) @@ -56,15 +57,10 @@ class TriggerPumpLastConnection(injector: HasAndroidInjector) : Trigger(injector return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("minutesAgo", minutesAgo.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTime.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTime.kt index 2a51eca64a..c382803c21 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTime.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTime.kt @@ -44,16 +44,13 @@ class TriggerRecurringTime(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { + override fun dataJSON(): JSONObject { val data = JSONObject() .put("time", time.value) for (i in days.weekdays.indices) { data.put(InputWeekDay.DayOfWeek.values()[i].name, days.weekdays[i]) } - return JSONObject() - .put("type", TriggerRecurringTime::class.java.name) - .put("data", data) - .toString() + return data } override fun fromJSON(data: String): Trigger { diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.kt index b70f3d888f..9c7d64add0 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.kt @@ -43,14 +43,9 @@ class TriggerTempTarget(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", TriggerTempTarget::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTime.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTime.kt index 53eb6312c2..304e57799f 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTime.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTime.kt @@ -41,14 +41,9 @@ class TriggerTime(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("runAt", time.value) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val o = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRange.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRange.kt index 8241eb3f62..13fa083581 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRange.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRange.kt @@ -50,15 +50,10 @@ class TriggerTimeRange(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("start", range.start) .put("end", range.end) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): TriggerTimeRange { val o = JSONObject(data) diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsid.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsid.kt index 316d1d1aab..8fa919e8c3 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsid.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsid.kt @@ -16,12 +16,14 @@ import org.json.JSONObject import javax.inject.Inject class TriggerWifiSsid(injector: HasAndroidInjector) : Trigger(injector) { + @Inject lateinit var receiverStatusStore: ReceiverStatusStore var ssid = InputString() var comparator = Comparator(resourceHelper) - @Suppress("unused") constructor(injector: HasAndroidInjector, ssid: String, compare: Comparator.Compare) : this(injector) { + @Suppress("unused") + constructor(injector: HasAndroidInjector, ssid: String, compare: Comparator.Compare) : this(injector) { this.ssid = InputString(ssid) comparator = Comparator(resourceHelper, compare) } @@ -55,15 +57,10 @@ class TriggerWifiSsid(injector: HasAndroidInjector) : Trigger(injector) { return false } - override fun toJSON(): String { - val data = JSONObject() + override fun dataJSON(): JSONObject = + JSONObject() .put("ssid", ssid.value) .put("comparator", comparator.value.toString()) - return JSONObject() - .put("type", this::class.java.name) - .put("data", data) - .toString() - } override fun fromJSON(data: String): Trigger { val d = JSONObject(data) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/AutomationEventTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/AutomationEventTest.kt index cf9522fcb4..0e5bf8eedc 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/AutomationEventTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/AutomationEventTest.kt @@ -48,7 +48,7 @@ class AutomationEventTest : TestBase() { event.addAction(ActionLoopEnable(injector)) // export to json - val eventJsonExpected = "{\"autoRemove\":false,\"readOnly\":false,\"trigger\":\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"connectorType\\\\\\\":\\\\\\\"AND\\\\\\\",\\\\\\\"triggerList\\\\\\\":[]},\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\\\\\"}\\\"]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\",\"title\":\"Test\",\"systemAction\":false,\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable\\\"}\"],\"enabled\":true}" + val eventJsonExpected = "{\"autoRemove\":false,\"readOnly\":false,\"trigger\":\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"connectorType\\\\\\\":\\\\\\\"AND\\\\\\\",\\\\\\\"triggerList\\\\\\\":[]},\\\\\\\"type\\\\\\\":\\\\\\\"TriggerConnector\\\\\\\"}\\\"]},\\\"type\\\":\\\"TriggerConnector\\\"}\",\"title\":\"Test\",\"systemAction\":false,\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable\\\"}\"],\"enabled\":true}" Assert.assertEquals(eventJsonExpected, event.toJSON()) // clone diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/DummyTrigger.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/DummyTrigger.kt index fbf9213625..7242079411 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/DummyTrigger.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/DummyTrigger.kt @@ -3,34 +3,15 @@ package info.nightscout.androidaps.plugins.general.automation.triggers import com.google.common.base.Optional import dagger.android.AndroidInjector import dagger.android.HasAndroidInjector +import org.json.JSONObject class DummyTrigger(var result: Boolean) : Trigger(HasAndroidInjector { AndroidInjector { } }) { - override fun shouldRun(): Boolean { - return result - } - - override fun toJSON(): String { - return "" - } - - override fun fromJSON(data: String): Trigger { - return DummyTrigger(result) - } - - override fun friendlyName(): Int { - return 0 - } - - override fun friendlyDescription(): String { - return " " - } - - override fun icon(): Optional { - return Optional.absent() - } - - override fun duplicate(): Trigger { - return DummyTrigger(result) - } + override fun shouldRun(): Boolean = result + override fun dataJSON(): JSONObject = JSONObject() + override fun fromJSON(data: String): Trigger = DummyTrigger(result) + override fun friendlyName(): Int = 0 + override fun friendlyDescription(): String = " " + override fun icon(): Optional = Optional.absent() + override fun duplicate(): Trigger = DummyTrigger(result) } \ No newline at end of file diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt index 27b040ad3b..ea9bf09a54 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt @@ -88,7 +88,7 @@ class TriggerAutosensValueTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var asJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"value\":410},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerAutosensValue\"}" + private var asJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"value\":410},\"type\":\"TriggerAutosensValue\"}" @Test fun toJSONTest() { diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDeviceTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDeviceTest.kt index 8cd9a57ab8..47b98b582d 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDeviceTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBTDeviceTest.kt @@ -15,7 +15,7 @@ class TriggerBTDeviceTest : TriggerTestBase() { var now = 1514766900000L private var someName = "Headset" - private var btJson = "{\"data\":{\"comparator\":\"ON_CONNECT\",\"name\":\"Headset\"},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBTDevice\"}" + private var btJson = "{\"data\":{\"comparator\":\"ON_CONNECT\",\"name\":\"Headset\"},\"type\":\"TriggerBTDevice\"}" @Test fun shouldRun() { @Suppress("UNUSED_VARIABLE") diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt index f7346a3e03..96496011ed 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt @@ -69,7 +69,7 @@ class TriggerBgTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"bg\":4.1,\"units\":\"mmol\"},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBg\"}" + private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"bg\":4.1,\"units\":\"mmol\"},\"type\":\"TriggerBg\"}" @Test fun toJSONTest() { diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt index 2fbb9ec97f..d8d85e5e50 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt @@ -77,7 +77,7 @@ class TriggerBolusAgoTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var lbJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"minutesAgo\":410},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBolusAgo\"}" + private var lbJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"minutesAgo\":410},\"type\":\"TriggerBolusAgo\"}" @Test fun toJSONTest() { val t: TriggerBolusAgo = TriggerBolusAgo(injector).setValue(410).comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(lbJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt index ae14c4db6d..553af7b411 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt @@ -54,7 +54,7 @@ class TriggerCOBTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"carbs\":4},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerCOB\"}" + private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"carbs\":4},\"type\":\"TriggerCOB\"}" @Test fun toJSONTest() { val t: TriggerCOB = TriggerCOB(injector).setValue(4.0).comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(bgJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnectorTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnectorTest.kt index 386e77b89f..74754f924e 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnectorTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerConnectorTest.kt @@ -77,7 +77,7 @@ class TriggerConnectorTest : TriggerTestBase() { } companion object { - const val empty = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}" - const val oneItem = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\"]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}" + const val empty = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[]},\"type\":\"TriggerConnector\"}" + const val oneItem = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[]},\\\"type\\\":\\\"TriggerConnector\\\"}\"]},\"type\":\"TriggerConnector\"}" } } \ No newline at end of file diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt index 18768de9fd..477c843c23 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt @@ -72,7 +72,7 @@ class TriggerDeltaTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var deltaJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"deltaType\":\"DELTA\",\"units\":\"mg/dl\",\"value\":4.1},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDelta\"}" + private var deltaJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"deltaType\":\"DELTA\",\"units\":\"mg/dl\",\"value\":4.1},\"type\":\"TriggerDelta\"}" @Test fun toJSONTest() { diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt index 8b33bb23c2..d654915598 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerIobTest.kt @@ -57,7 +57,7 @@ class TriggerIobTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"insulin\":4.1},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerIob\"}" + private var bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"insulin\":4.1},\"type\":\"TriggerIob\"}" @Test fun toJSONTest() { val t: TriggerIob = TriggerIob(injector).setValue(4.1).comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(bgJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocationTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocationTest.kt index 3fa5319d88..35890dad32 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocationTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerLocationTest.kt @@ -73,7 +73,7 @@ class TriggerLocationTest : TriggerTestBase() { // Currently unavailable due to problems with Location mocking } - private var locationJson = "{\"data\":{\"mode\":\"OUTSIDE\",\"distance\":2,\"latitude\":213,\"name\":\"\",\"longitude\":212},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerLocation\"}" + private var locationJson = "{\"data\":{\"mode\":\"OUTSIDE\",\"distance\":2,\"latitude\":213,\"name\":\"\",\"longitude\":212},\"type\":\"TriggerLocation\"}" @Test fun toJSONTest() { val t = TriggerLocation(injector) t.latitude.setValue(213.0) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt index 896e036c3a..6f6dbd8b08 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt @@ -55,7 +55,7 @@ class TriggerProfilePercentTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private val bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"percentage\":110},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerProfilePercent\"}" + private val bgJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"percentage\":110},\"type\":\"TriggerProfilePercent\"}" @Test fun toJSONTest() { val t: TriggerProfilePercent = TriggerProfilePercent(injector).setValue(110.0).comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(bgJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt index 3c3d5f131b..527bd30f47 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt @@ -53,7 +53,7 @@ class TriggerPumpLastConnectionTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - private var lbJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"minutesAgo\":410},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerPumpLastConnection\"}" + private var lbJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"minutesAgo\":410},\"type\":\"TriggerPumpLastConnection\"}" @Test fun toJSONTest() { val t: TriggerPumpLastConnection = TriggerPumpLastConnection(injector).setValue(410).comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(lbJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt index d23b8e8428..b76fc0bd90 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt @@ -35,7 +35,7 @@ class TriggerRecurringTimeTest : TriggerTestBase() { Assert.assertTrue(t.shouldRun()) } - private var timeJson = "{\"data\":{\"WEDNESDAY\":false,\"MONDAY\":false,\"THURSDAY\":false,\"SUNDAY\":false,\"TUESDAY\":false,\"FRIDAY\":false,\"SATURDAY\":false,\"time\":4444},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerRecurringTime\"}" + private var timeJson = "{\"data\":{\"WEDNESDAY\":false,\"MONDAY\":false,\"THURSDAY\":false,\"SUNDAY\":false,\"TUESDAY\":false,\"FRIDAY\":false,\"SATURDAY\":false,\"time\":4444},\"type\":\"TriggerRecurringTime\"}" @Test fun toJSONTest() { diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTargetTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTargetTest.kt index 5eac61c320..6877de5f3f 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTargetTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTargetTest.kt @@ -43,7 +43,7 @@ class TriggerTempTargetTest : TriggerTestBase() { Assert.assertEquals(ComparatorExists.Compare.NOT_EXISTS, t1.comparator.value) } - private var ttJson = "{\"data\":{\"comparator\":\"EXISTS\"},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTempTarget\"}" + private var ttJson = "{\"data\":{\"comparator\":\"EXISTS\"},\"type\":\"TriggerTempTarget\"}" @Test fun toJSONTest() { val t: TriggerTempTarget = TriggerTempTarget(injector).comparator(ComparatorExists.Compare.EXISTS) Assert.assertEquals(ttJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRangeTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRangeTest.kt index af5a9ea355..2c62f6341c 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRangeTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeRangeTest.kt @@ -18,7 +18,7 @@ import org.powermock.modules.junit4.PowerMockRunner class TriggerTimeRangeTest : TriggerTestBase() { var now = 754 // in minutes from midnight - private var timeJson = "{\"data\":{\"start\":753,\"end\":784},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTimeRange\"}" + private var timeJson = "{\"data\":{\"start\":753,\"end\":784},\"type\":\"TriggerTimeRange\"}" @Before fun mock() { diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeTest.kt index db6a2dd645..7151fa6b57 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTimeTest.kt @@ -36,7 +36,7 @@ class TriggerTimeTest : TriggerTestBase() { Assert.assertFalse(t.shouldRun()) } - private var timeJson = "{\"data\":{\"runAt\":1514766840000},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTime\"}" + private var timeJson = "{\"data\":{\"runAt\":1514766840000},\"type\":\"TriggerTime\"}" @Test fun toJSONTest() { val t: TriggerTime = TriggerTime(injector).runAt(now - T.mins(1).msecs()) Assert.assertEquals(timeJson, t.toJSON()) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsidTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsidTest.kt index 9cd013008a..c2fab5b28c 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsidTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerWifiSsidTest.kt @@ -56,7 +56,7 @@ class TriggerWifiSsidTest : TriggerTestBase() { Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } - var json = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"ssid\":\"aSSID\"},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerWifiSsid\"}" + var json = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"ssid\":\"aSSID\"},\"type\":\"TriggerWifiSsid\"}" @Test fun toJSONTest() { val t: TriggerWifiSsid = TriggerWifiSsid(injector).setValue("aSSID").comparator(Comparator.Compare.IS_EQUAL) Assert.assertEquals(json, t.toJSON())