shared-tests #2
This commit is contained in:
parent
00a22b8b77
commit
bfb343f92b
|
@ -225,6 +225,8 @@ dependencies {
|
||||||
implementation project(':pump:virtual')
|
implementation project(':pump:virtual')
|
||||||
implementation project(':workflow')
|
implementation project(':workflow')
|
||||||
|
|
||||||
|
testImplementation project(':app-wear-shared:shared-tests')
|
||||||
|
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
|
|
||||||
/* Dagger2 - We are going to use dagger.android which includes
|
/* Dagger2 - We are going to use dagger.android which includes
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
package info.nightscout.androidaps
|
|
||||||
|
|
||||||
import info.nightscout.interfaces.utils.HardLimits
|
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlin.math.max
|
|
||||||
import kotlin.math.min
|
|
||||||
|
|
||||||
class HardLimitsMock @Inject constructor(
|
|
||||||
private val sp: SP,
|
|
||||||
private val rh: ResourceHelper
|
|
||||||
) : HardLimits {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
private const val CHILD = 0
|
|
||||||
private const val TEENAGE = 1
|
|
||||||
private const val ADULT = 2
|
|
||||||
private const val RESISTANT_ADULT = 3
|
|
||||||
private const val PREGNANT = 4
|
|
||||||
private val MAX_BOLUS = doubleArrayOf(5.0, 10.0, 17.0, 25.0, 60.0)
|
|
||||||
|
|
||||||
// Very Hard Limits Ranges
|
|
||||||
// First value is the Lowest and second value is the Highest a Limit can define
|
|
||||||
val VERY_HARD_LIMIT_MIN_BG = doubleArrayOf(80.0, 180.0)
|
|
||||||
val VERY_HARD_LIMIT_MAX_BG = doubleArrayOf(90.0, 200.0)
|
|
||||||
val VERY_HARD_LIMIT_TARGET_BG = doubleArrayOf(80.0, 200.0)
|
|
||||||
|
|
||||||
// Very Hard Limits Ranges for Temp Targets
|
|
||||||
val VERY_HARD_LIMIT_TEMP_MIN_BG = intArrayOf(72, 180)
|
|
||||||
val VERY_HARD_LIMIT_TEMP_MAX_BG = intArrayOf(72, 270)
|
|
||||||
val VERY_HARD_LIMIT_TEMP_TARGET_BG = intArrayOf(72, 200)
|
|
||||||
val MIN_DIA = doubleArrayOf(5.0, 5.0, 5.0, 5.0, 5.0)
|
|
||||||
val MAX_DIA = doubleArrayOf(9.0, 9.0, 9.0, 9.0, 10.0)
|
|
||||||
val MIN_IC = doubleArrayOf(2.0, 2.0, 2.0, 2.0, 0.3)
|
|
||||||
val MAX_IC = doubleArrayOf(100.0, 100.0, 100.0, 100.0, 100.0)
|
|
||||||
const val MIN_ISF = 2.0 // mgdl
|
|
||||||
const val MAX_ISF = 1000.0 // mgdl
|
|
||||||
val MAX_IOB_AMA = doubleArrayOf(3.0, 5.0, 7.0, 12.0, 25.0)
|
|
||||||
val MAX_IOB_SMB = doubleArrayOf(7.0, 13.0, 22.0, 30.0, 70.0)
|
|
||||||
val MAX_BASAL = doubleArrayOf(2.0, 5.0, 10.0, 12.0, 25.0)
|
|
||||||
|
|
||||||
//LGS Hard limits
|
|
||||||
//No IOB at all
|
|
||||||
const val MAX_IOB_LGS = 0.0
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadAge(): Int = when (sp.getString(info.nightscout.core.utils.R.string.key_age, "")) {
|
|
||||||
rh.gs(info.nightscout.core.utils.R.string.key_child) -> CHILD
|
|
||||||
rh.gs(info.nightscout.core.utils.R.string.key_teenage) -> TEENAGE
|
|
||||||
rh.gs(info.nightscout.core.utils.R.string.key_adult) -> ADULT
|
|
||||||
rh.gs(info.nightscout.core.utils.R.string.key_resistantadult) -> RESISTANT_ADULT
|
|
||||||
rh.gs(info.nightscout.core.utils.R.string.key_pregnant) -> PREGNANT
|
|
||||||
else -> ADULT
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun maxBolus(): Double = MAX_BOLUS[loadAge()]
|
|
||||||
override fun maxIobAMA(): Double = MAX_IOB_AMA[loadAge()]
|
|
||||||
override fun maxIobSMB(): Double = MAX_IOB_SMB[loadAge()]
|
|
||||||
override fun maxBasal(): Double = MAX_BASAL[loadAge()]
|
|
||||||
override fun minDia(): Double = MIN_DIA[loadAge()]
|
|
||||||
override fun maxDia(): Double = MAX_DIA[loadAge()]
|
|
||||||
override fun minIC(): Double = MIN_IC[loadAge()]
|
|
||||||
override fun maxIC(): Double = MAX_IC[loadAge()]
|
|
||||||
|
|
||||||
// safety checks
|
|
||||||
override fun checkHardLimits(value: Double, valueName: Int, lowLimit: Double, highLimit: Double): Boolean =
|
|
||||||
value == verifyHardLimits(value, valueName, lowLimit, highLimit)
|
|
||||||
|
|
||||||
override fun isInRange(value: Double, lowLimit: Double, highLimit: Double): Boolean =
|
|
||||||
value in lowLimit..highLimit
|
|
||||||
|
|
||||||
override fun verifyHardLimits(value: Double, valueName: Int, lowLimit: Double, highLimit: Double): Double {
|
|
||||||
var newValue = value
|
|
||||||
if (newValue < lowLimit || newValue > highLimit) {
|
|
||||||
newValue = max(newValue, lowLimit)
|
|
||||||
newValue = min(newValue, highLimit)
|
|
||||||
}
|
|
||||||
return newValue
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package info.nightscout.androidaps
|
|
||||||
|
|
||||||
import info.nightscout.rx.AapsSchedulers
|
|
||||||
import info.nightscout.rx.TestAapsSchedulers
|
|
||||||
import info.nightscout.rx.logging.AAPSLoggerTest
|
|
||||||
import org.junit.jupiter.api.BeforeEach
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith
|
|
||||||
import org.mockito.Mockito
|
|
||||||
import org.mockito.junit.jupiter.MockitoExtension
|
|
||||||
import org.mockito.junit.jupiter.MockitoSettings
|
|
||||||
import org.mockito.quality.Strictness
|
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension::class)
|
|
||||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
|
||||||
open class TestBase {
|
|
||||||
|
|
||||||
val aapsLogger = AAPSLoggerTest()
|
|
||||||
val aapsSchedulers: AapsSchedulers = TestAapsSchedulers()
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
fun setupLocale() {
|
|
||||||
Locale.setDefault(Locale.ENGLISH)
|
|
||||||
System.setProperty("disableFirebase", "true")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Workaround for Kotlin nullability.
|
|
||||||
// https://medium.com/@elye.project/befriending-kotlin-and-mockito-1c2e7b0ef791
|
|
||||||
// https://stackoverflow.com/questions/30305217/is-it-possible-to-use-mockito-in-kotlin
|
|
||||||
fun <T> anyObject(): T {
|
|
||||||
Mockito.any<T>()
|
|
||||||
return uninitialized()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("Unchecked_Cast")
|
|
||||||
fun <T> uninitialized(): T = null as T
|
|
||||||
}
|
|
|
@ -1,178 +0,0 @@
|
||||||
package info.nightscout.androidaps
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import dagger.android.AndroidInjector
|
|
||||||
import dagger.android.HasAndroidInjector
|
|
||||||
import info.nightscout.core.extensions.pureProfileFromJson
|
|
||||||
import info.nightscout.core.profile.ProfileSealed
|
|
||||||
import info.nightscout.core.utils.fabric.FabricPrivacy
|
|
||||||
import info.nightscout.database.entities.EffectiveProfileSwitch
|
|
||||||
import info.nightscout.database.entities.embedments.InsulinConfiguration
|
|
||||||
import info.nightscout.implementation.profile.ProfileStoreObject
|
|
||||||
import info.nightscout.interfaces.Config
|
|
||||||
import info.nightscout.interfaces.iob.IobCobCalculator
|
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction
|
|
||||||
import info.nightscout.interfaces.profile.ProfileStore
|
|
||||||
import info.nightscout.rx.bus.RxBus
|
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
|
||||||
import info.nightscout.shared.utils.DateUtil
|
|
||||||
import org.json.JSONObject
|
|
||||||
import org.junit.jupiter.api.BeforeEach
|
|
||||||
import org.mockito.ArgumentMatchers.anyDouble
|
|
||||||
import org.mockito.ArgumentMatchers.anyInt
|
|
||||||
import org.mockito.ArgumentMatchers.anyString
|
|
||||||
import org.mockito.Mock
|
|
||||||
import org.mockito.Mockito
|
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.invocation.InvocationOnMock
|
|
||||||
|
|
||||||
@Suppress("SpellCheckingInspection")
|
|
||||||
open class TestBaseWithProfile : TestBase() {
|
|
||||||
|
|
||||||
@Mock lateinit var activePluginProvider: ActivePlugin
|
|
||||||
@Mock lateinit var rh: ResourceHelper
|
|
||||||
@Mock lateinit var iobCobCalculator: IobCobCalculator
|
|
||||||
@Mock lateinit var fabricPrivacy: FabricPrivacy
|
|
||||||
@Mock lateinit var profileFunction: ProfileFunction
|
|
||||||
@Mock lateinit var config: Config
|
|
||||||
@Mock lateinit var context: Context
|
|
||||||
|
|
||||||
lateinit var dateUtil: DateUtil
|
|
||||||
val rxBus = RxBus(aapsSchedulers, aapsLogger)
|
|
||||||
|
|
||||||
val profileInjector = HasAndroidInjector { AndroidInjector { } }
|
|
||||||
|
|
||||||
private lateinit var validProfileJSON: String
|
|
||||||
lateinit var validProfile: ProfileSealed.Pure
|
|
||||||
lateinit var effectiveProfileSwitch: EffectiveProfileSwitch
|
|
||||||
|
|
||||||
@Suppress("PropertyName") val TESTPROFILENAME = "someProfile"
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
fun prepareMock() {
|
|
||||||
validProfileJSON = "{\"dia\":\"5\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
|
|
||||||
"{\"time\":\"2:00\",\"value\":\"3.4\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4.5\"}]," +
|
|
||||||
"\"target_high\":[{\"time\":\"00:00\",\"value\":\"7\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
|
|
||||||
dateUtil = Mockito.spy(DateUtil(context))
|
|
||||||
`when`(dateUtil.now()).thenReturn(1656358822000)
|
|
||||||
validProfile = ProfileSealed.Pure(pureProfileFromJson(JSONObject(validProfileJSON), dateUtil)!!)
|
|
||||||
effectiveProfileSwitch = EffectiveProfileSwitch(
|
|
||||||
timestamp = dateUtil.now(),
|
|
||||||
basalBlocks = validProfile.basalBlocks,
|
|
||||||
isfBlocks = validProfile.isfBlocks,
|
|
||||||
icBlocks = validProfile.icBlocks,
|
|
||||||
targetBlocks = validProfile.targetBlocks,
|
|
||||||
glucoseUnit = EffectiveProfileSwitch.GlucoseUnit.MMOL,
|
|
||||||
originalProfileName = "",
|
|
||||||
originalCustomizedName = "",
|
|
||||||
originalTimeshift = 0,
|
|
||||||
originalPercentage = 100,
|
|
||||||
originalDuration = 0,
|
|
||||||
originalEnd = 0,
|
|
||||||
insulinConfiguration = InsulinConfiguration("", 0, 0)
|
|
||||||
)
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Int?>(1)
|
|
||||||
String.format(rh.gs(string), arg1)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyInt())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Double?>(1)
|
|
||||||
String.format(rh.gs(string), arg1)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyDouble())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<String?>(1)
|
|
||||||
String.format(rh.gs(string), arg1)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<String?>(1)
|
|
||||||
val arg2 = invocation.getArgument<String?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyString(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<String?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyString(), anyInt())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Double?>(1)
|
|
||||||
val arg2 = invocation.getArgument<String?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyDouble(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Double?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyDouble(), anyInt())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Int?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyInt(), anyInt())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Int?>(1)
|
|
||||||
val arg2 = invocation.getArgument<String?>(2)
|
|
||||||
String.format(rh.gs(string), arg1, arg2)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyInt(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Int?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
val arg3 = invocation.getArgument<String?>(3)
|
|
||||||
String.format(rh.gs(string), arg1, arg2, arg3)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyInt(), anyInt(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Int?>(1)
|
|
||||||
val arg2 = invocation.getArgument<String?>(2)
|
|
||||||
val arg3 = invocation.getArgument<String?>(3)
|
|
||||||
String.format(rh.gs(string), arg1, arg2, arg3)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyInt(), anyString(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<Double?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
val arg3 = invocation.getArgument<String?>(3)
|
|
||||||
String.format(rh.gs(string), arg1, arg2, arg3)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyDouble(), anyInt(), anyString())
|
|
||||||
|
|
||||||
Mockito.doAnswer { invocation: InvocationOnMock ->
|
|
||||||
val string = invocation.getArgument<Int>(0)
|
|
||||||
val arg1 = invocation.getArgument<String?>(1)
|
|
||||||
val arg2 = invocation.getArgument<Int?>(2)
|
|
||||||
val arg3 = invocation.getArgument<String?>(3)
|
|
||||||
String.format(rh.gs(string), arg1, arg2, arg3)
|
|
||||||
}.`when`(rh).gs(anyInt(), anyString(), anyInt(), anyString())
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getValidProfileStore(): ProfileStore {
|
|
||||||
val json = JSONObject()
|
|
||||||
val store = JSONObject()
|
|
||||||
store.put(TESTPROFILENAME, JSONObject(validProfileJSON))
|
|
||||||
json.put("defaultProfile", TESTPROFILENAME)
|
|
||||||
json.put("store", store)
|
|
||||||
return ProfileStoreObject(profileInjector, json, dateUtil)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
package info.nightscout.androidaps
|
|
||||||
|
|
||||||
import dagger.android.HasAndroidInjector
|
|
||||||
import info.nightscout.interfaces.profile.Profile
|
|
||||||
import info.nightscout.interfaces.pump.DetailedBolusInfo
|
|
||||||
import info.nightscout.interfaces.pump.Pump
|
|
||||||
import info.nightscout.interfaces.pump.PumpEnactResult
|
|
||||||
import info.nightscout.interfaces.pump.PumpSync
|
|
||||||
import info.nightscout.interfaces.pump.defs.ManufacturerType
|
|
||||||
import info.nightscout.interfaces.pump.defs.PumpDescription
|
|
||||||
import info.nightscout.interfaces.pump.defs.PumpType
|
|
||||||
import info.nightscout.interfaces.utils.TimeChangeType
|
|
||||||
import org.json.JSONObject
|
|
||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
|
||||||
class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
|
|
||||||
|
|
||||||
var connected = false
|
|
||||||
var isProfileSet = true
|
|
||||||
|
|
||||||
override fun isConnected() = connected
|
|
||||||
override fun isConnecting() = false
|
|
||||||
override fun isHandshakeInProgress() = false
|
|
||||||
val lastData = 0L
|
|
||||||
|
|
||||||
val baseBasal = 0.0
|
|
||||||
override val pumpDescription = PumpDescription()
|
|
||||||
|
|
||||||
override fun isInitialized(): Boolean = true
|
|
||||||
override fun isSuspended(): Boolean = false
|
|
||||||
override fun isBusy(): Boolean = false
|
|
||||||
override fun connect(reason: String) {
|
|
||||||
connected = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun disconnect(reason: String) {
|
|
||||||
connected = false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun stopConnecting() {
|
|
||||||
connected = false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun waitForDisconnectionInSeconds(): Int = 0
|
|
||||||
override fun getPumpStatus(reason: String) {}
|
|
||||||
override fun setNewBasalProfile(profile: Profile): PumpEnactResult = PumpEnactResult(injector)
|
|
||||||
override fun isThisProfileSet(profile: Profile): Boolean = isProfileSet
|
|
||||||
override fun lastDataTime(): Long = lastData
|
|
||||||
override val baseBasalRate: Double = baseBasal
|
|
||||||
override val reservoirLevel: Double = 0.0
|
|
||||||
override val batteryLevel: Int = 0
|
|
||||||
override fun deliverTreatment(detailedBolusInfo: DetailedBolusInfo): PumpEnactResult = PumpEnactResult(injector).success(true)
|
|
||||||
override fun stopBolusDelivering() {}
|
|
||||||
override fun setTempBasalAbsolute(absoluteRate: Double, durationInMinutes: Int, profile: Profile, enforceNew: Boolean, tbrType: PumpSync.TemporaryBasalType): PumpEnactResult =
|
|
||||||
PumpEnactResult(injector).success(true)
|
|
||||||
|
|
||||||
override fun setTempBasalPercent(percent: Int, durationInMinutes: Int, profile: Profile, enforceNew: Boolean, tbrType: PumpSync.TemporaryBasalType): PumpEnactResult =
|
|
||||||
PumpEnactResult(injector).success(true)
|
|
||||||
|
|
||||||
override fun setExtendedBolus(insulin: Double, durationInMinutes: Int): PumpEnactResult = PumpEnactResult(injector).success(true)
|
|
||||||
override fun cancelTempBasal(enforceNew: Boolean): PumpEnactResult = PumpEnactResult(injector).success(true)
|
|
||||||
override fun cancelExtendedBolus(): PumpEnactResult = PumpEnactResult(injector).success(true)
|
|
||||||
override fun getJSONStatus(profile: Profile, profileName: String, version: String): JSONObject = JSONObject()
|
|
||||||
override fun manufacturer(): ManufacturerType = ManufacturerType.AAPS
|
|
||||||
override fun model(): PumpType = PumpType.GENERIC_AAPS
|
|
||||||
override fun serialNumber(): String = "1"
|
|
||||||
override fun shortStatus(veryShort: Boolean): String = ""
|
|
||||||
override val isFakingTempsByExtendedBoluses: Boolean = false
|
|
||||||
override fun loadTDDs(): PumpEnactResult = PumpEnactResult(injector).success(true)
|
|
||||||
override fun canHandleDST(): Boolean = true
|
|
||||||
override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType) {}
|
|
||||||
}
|
|
|
@ -1,10 +1,9 @@
|
||||||
package info.nightscout.androidaps.plugins.aps.loop
|
package info.nightscout.plugins.aps.loop
|
||||||
|
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBase
|
|
||||||
import info.nightscout.core.utils.fabric.FabricPrivacy
|
import info.nightscout.core.utils.fabric.FabricPrivacy
|
||||||
import info.nightscout.database.impl.AppRepository
|
import info.nightscout.database.impl.AppRepository
|
||||||
import info.nightscout.interfaces.ApsMode
|
import info.nightscout.interfaces.ApsMode
|
||||||
|
@ -20,14 +19,13 @@ import info.nightscout.interfaces.pump.defs.PumpDescription
|
||||||
import info.nightscout.interfaces.queue.CommandQueue
|
import info.nightscout.interfaces.queue.CommandQueue
|
||||||
import info.nightscout.interfaces.receivers.ReceiverStatusStore
|
import info.nightscout.interfaces.receivers.ReceiverStatusStore
|
||||||
import info.nightscout.interfaces.ui.UiInteraction
|
import info.nightscout.interfaces.ui.UiInteraction
|
||||||
import info.nightscout.plugins.aps.loop.LoopFragment
|
|
||||||
import info.nightscout.plugins.aps.loop.LoopPlugin
|
|
||||||
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import info.nightscout.shared.utils.DateUtil
|
import info.nightscout.shared.utils.DateUtil
|
||||||
import org.junit.Assert
|
import info.nightscout.sharedtests.TestBase
|
||||||
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
@ -57,12 +55,14 @@ class LoopPluginTest : TestBase() {
|
||||||
|
|
||||||
private lateinit var loopPlugin: LoopPlugin
|
private lateinit var loopPlugin: LoopPlugin
|
||||||
|
|
||||||
val injector = HasAndroidInjector { AndroidInjector { } }
|
private val injector = HasAndroidInjector { AndroidInjector { } }
|
||||||
@BeforeEach fun prepareMock() {
|
@BeforeEach fun prepareMock() {
|
||||||
|
|
||||||
loopPlugin = LoopPlugin(injector, aapsLogger, aapsSchedulers, rxBus, sp, config,
|
loopPlugin = LoopPlugin(
|
||||||
|
injector, aapsLogger, aapsSchedulers, rxBus, sp, config,
|
||||||
constraintChecker, rh, profileFunction, context, commandQueue, activePlugin, virtualPumpPlugin, iobCobCalculator, receiverStatusStore, fabricPrivacy, dateUtil, uel,
|
constraintChecker, rh, profileFunction, context, commandQueue, activePlugin, virtualPumpPlugin, iobCobCalculator, receiverStatusStore, fabricPrivacy, dateUtil, uel,
|
||||||
repository, runningConfiguration, uiInteraction)
|
repository, runningConfiguration, uiInteraction
|
||||||
|
)
|
||||||
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
|
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
|
||||||
`when`(context.getSystemService(Context.NOTIFICATION_SERVICE)).thenReturn(notificationManager)
|
`when`(context.getSystemService(Context.NOTIFICATION_SERVICE)).thenReturn(notificationManager)
|
||||||
}
|
}
|
||||||
|
@ -74,28 +74,28 @@ class LoopPluginTest : TestBase() {
|
||||||
`when`(sp.getString(info.nightscout.core.utils.R.string.key_aps_mode, ApsMode.OPEN.name)).thenReturn(ApsMode.CLOSED.name)
|
`when`(sp.getString(info.nightscout.core.utils.R.string.key_aps_mode, ApsMode.OPEN.name)).thenReturn(ApsMode.CLOSED.name)
|
||||||
val pumpDescription = PumpDescription()
|
val pumpDescription = PumpDescription()
|
||||||
`when`(virtualPumpPlugin.pumpDescription).thenReturn(pumpDescription)
|
`when`(virtualPumpPlugin.pumpDescription).thenReturn(pumpDescription)
|
||||||
Assert.assertEquals(LoopFragment::class.java.name, loopPlugin.pluginDescription.fragmentClass)
|
Assertions.assertEquals(LoopFragment::class.java.name, loopPlugin.pluginDescription.fragmentClass)
|
||||||
Assert.assertEquals(PluginType.LOOP, loopPlugin.getType())
|
Assertions.assertEquals(PluginType.LOOP, loopPlugin.getType())
|
||||||
Assert.assertEquals("Loop", loopPlugin.name)
|
Assertions.assertEquals("Loop", loopPlugin.name)
|
||||||
Assert.assertEquals("LOOP", loopPlugin.nameShort)
|
Assertions.assertEquals("LOOP", loopPlugin.nameShort)
|
||||||
Assert.assertEquals(true, loopPlugin.hasFragment())
|
Assertions.assertEquals(true, loopPlugin.hasFragment())
|
||||||
Assert.assertEquals(true, loopPlugin.showInList(PluginType.LOOP))
|
Assertions.assertEquals(true, loopPlugin.showInList(PluginType.LOOP))
|
||||||
Assert.assertEquals(info.nightscout.plugins.aps.R.xml.pref_loop.toLong(), loopPlugin.preferencesId.toLong())
|
Assertions.assertEquals(info.nightscout.plugins.aps.R.xml.pref_loop.toLong(), loopPlugin.preferencesId.toLong())
|
||||||
|
|
||||||
// Plugin is disabled by default
|
// Plugin is disabled by default
|
||||||
Assert.assertEquals(false, loopPlugin.isEnabled())
|
Assertions.assertEquals(false, loopPlugin.isEnabled())
|
||||||
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
|
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
|
||||||
Assert.assertEquals(true, loopPlugin.isEnabled())
|
Assertions.assertEquals(true, loopPlugin.isEnabled())
|
||||||
|
|
||||||
// No temp basal capable pump should disable plugin
|
// No temp basal capable pump should disable plugin
|
||||||
virtualPumpPlugin.pumpDescription.isTempBasalCapable = false
|
virtualPumpPlugin.pumpDescription.isTempBasalCapable = false
|
||||||
Assert.assertEquals(false, loopPlugin.isEnabled())
|
Assertions.assertEquals(false, loopPlugin.isEnabled())
|
||||||
virtualPumpPlugin.pumpDescription.isTempBasalCapable = true
|
virtualPumpPlugin.pumpDescription.isTempBasalCapable = true
|
||||||
|
|
||||||
// Fragment is hidden by default
|
// Fragment is hidden by default
|
||||||
Assert.assertEquals(false, loopPlugin.isFragmentVisible())
|
Assertions.assertEquals(false, loopPlugin.isFragmentVisible())
|
||||||
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
|
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
|
||||||
Assert.assertEquals(true, loopPlugin.isFragmentVisible())
|
Assertions.assertEquals(true, loopPlugin.isFragmentVisible())
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *********** not working
|
/* *********** not working
|
||||||
|
@ -118,7 +118,7 @@ class LoopPluginTest : TestBase() {
|
||||||
MockedLoopPlugin mockedLoopPlugin = new MockedLoopPlugin();
|
MockedLoopPlugin mockedLoopPlugin = new MockedLoopPlugin();
|
||||||
Treatment t = new Treatment();
|
Treatment t = new Treatment();
|
||||||
bus.post(new EventTreatmentChange(t));
|
bus.post(new EventTreatmentChange(t));
|
||||||
Assert.assertEquals(true, mockedLoopPlugin.invokeCalled);
|
Assertions.assertEquals(true, mockedLoopPlugin.invokeCalled);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
|
@ -1,8 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.configBuilder
|
package info.nightscout.plugins.configBuilder
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBase
|
|
||||||
import info.nightscout.configuration.configBuilder.ConfigBuilderPlugin
|
import info.nightscout.configuration.configBuilder.ConfigBuilderPlugin
|
||||||
import info.nightscout.interfaces.logging.UserEntryLogger
|
import info.nightscout.interfaces.logging.UserEntryLogger
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
import info.nightscout.interfaces.plugin.ActivePlugin
|
||||||
|
@ -12,6 +11,7 @@ import info.nightscout.interfaces.ui.UiInteraction
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
import info.nightscout.sharedtests.TestBase
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
@ -28,7 +28,7 @@ class ConfigBuilderPluginTest : TestBase() {
|
||||||
|
|
||||||
private lateinit var configBuilderPlugin: ConfigBuilderPlugin
|
private lateinit var configBuilderPlugin: ConfigBuilderPlugin
|
||||||
|
|
||||||
val injector = HasAndroidInjector { AndroidInjector { } }
|
private val injector = HasAndroidInjector { AndroidInjector { } }
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun dummy() {
|
fun dummy() {
|
|
@ -1,9 +1,7 @@
|
||||||
package info.nightscout.androidaps.interfaces
|
package info.nightscout.plugins.constraints
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.HardLimitsMock
|
|
||||||
import info.nightscout.androidaps.TestBaseWithProfile
|
|
||||||
import info.nightscout.androidaps.danar.DanaRPlugin
|
import info.nightscout.androidaps.danar.DanaRPlugin
|
||||||
import info.nightscout.androidaps.implementations.ConfigImpl
|
import info.nightscout.androidaps.implementations.ConfigImpl
|
||||||
import info.nightscout.androidaps.insight.database.InsightDatabase
|
import info.nightscout.androidaps.insight.database.InsightDatabase
|
||||||
|
@ -18,7 +16,6 @@ import info.nightscout.interfaces.constraints.Constraint
|
||||||
import info.nightscout.interfaces.constraints.Constraints
|
import info.nightscout.interfaces.constraints.Constraints
|
||||||
import info.nightscout.interfaces.constraints.Objectives
|
import info.nightscout.interfaces.constraints.Objectives
|
||||||
import info.nightscout.interfaces.maintenance.PrefFileListProvider
|
import info.nightscout.interfaces.maintenance.PrefFileListProvider
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
|
||||||
import info.nightscout.interfaces.plugin.PluginBase
|
import info.nightscout.interfaces.plugin.PluginBase
|
||||||
import info.nightscout.interfaces.plugin.PluginType
|
import info.nightscout.interfaces.plugin.PluginType
|
||||||
import info.nightscout.interfaces.profile.Instantiator
|
import info.nightscout.interfaces.profile.Instantiator
|
||||||
|
@ -31,11 +28,9 @@ import info.nightscout.interfaces.pump.defs.PumpDescription
|
||||||
import info.nightscout.interfaces.queue.CommandQueue
|
import info.nightscout.interfaces.queue.CommandQueue
|
||||||
import info.nightscout.interfaces.stats.TddCalculator
|
import info.nightscout.interfaces.stats.TddCalculator
|
||||||
import info.nightscout.interfaces.ui.UiInteraction
|
import info.nightscout.interfaces.ui.UiInteraction
|
||||||
import info.nightscout.interfaces.utils.HardLimits
|
|
||||||
import info.nightscout.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
|
import info.nightscout.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
|
||||||
import info.nightscout.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
|
import info.nightscout.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
|
||||||
import info.nightscout.plugins.aps.openAPSSMBDynamicISF.OpenAPSSMBDynamicISFPlugin
|
import info.nightscout.plugins.aps.openAPSSMBDynamicISF.OpenAPSSMBDynamicISFPlugin
|
||||||
import info.nightscout.plugins.constraints.ConstraintsImpl
|
|
||||||
import info.nightscout.plugins.constraints.objectives.ObjectivesPlugin
|
import info.nightscout.plugins.constraints.objectives.ObjectivesPlugin
|
||||||
import info.nightscout.plugins.constraints.objectives.objectives.Objective
|
import info.nightscout.plugins.constraints.objectives.objectives.Objective
|
||||||
import info.nightscout.plugins.constraints.safety.SafetyPlugin
|
import info.nightscout.plugins.constraints.safety.SafetyPlugin
|
||||||
|
@ -45,7 +40,7 @@ import info.nightscout.pump.dana.DanaPump
|
||||||
import info.nightscout.pump.dana.R
|
import info.nightscout.pump.dana.R
|
||||||
import info.nightscout.pump.dana.database.DanaHistoryDatabase
|
import info.nightscout.pump.dana.database.DanaHistoryDatabase
|
||||||
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.sharedtests.TestBaseWithProfile
|
||||||
import info.nightscout.source.GlimpPlugin
|
import info.nightscout.source.GlimpPlugin
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
@ -58,9 +53,7 @@ import org.mockito.Mockito.`when`
|
||||||
*/
|
*/
|
||||||
class ConstraintsCheckerTest : TestBaseWithProfile() {
|
class ConstraintsCheckerTest : TestBaseWithProfile() {
|
||||||
|
|
||||||
@Mock lateinit var activePlugin: ActivePlugin
|
|
||||||
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
||||||
@Mock lateinit var sp: SP
|
|
||||||
@Mock lateinit var commandQueue: CommandQueue
|
@Mock lateinit var commandQueue: CommandQueue
|
||||||
@Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
|
@Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
|
||||||
@Mock lateinit var temporaryBasalStorage: TemporaryBasalStorage
|
@Mock lateinit var temporaryBasalStorage: TemporaryBasalStorage
|
||||||
|
@ -78,7 +71,6 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
|
||||||
@Mock lateinit var bgQualityCheck: BgQualityCheck
|
@Mock lateinit var bgQualityCheck: BgQualityCheck
|
||||||
@Mock lateinit var tddCalculator: TddCalculator
|
@Mock lateinit var tddCalculator: TddCalculator
|
||||||
|
|
||||||
private lateinit var hardLimits: HardLimits
|
|
||||||
private lateinit var danaPump: DanaPump
|
private lateinit var danaPump: DanaPump
|
||||||
private lateinit var insightDbHelper: InsightDbHelper
|
private lateinit var insightDbHelper: InsightDbHelper
|
||||||
private lateinit var constraintChecker: ConstraintsImpl
|
private lateinit var constraintChecker: ConstraintsImpl
|
||||||
|
@ -141,18 +133,18 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
|
||||||
`when`(sp.getString(R.string.key_danar_bt_name, "")).thenReturn("")
|
`when`(sp.getString(R.string.key_danar_bt_name, "")).thenReturn("")
|
||||||
|
|
||||||
//SafetyPlugin
|
//SafetyPlugin
|
||||||
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
|
|
||||||
constraintChecker = ConstraintsImpl(activePlugin)
|
constraintChecker = ConstraintsImpl(activePlugin)
|
||||||
|
|
||||||
val glucoseStatusProvider = GlucoseStatusProviderImpl(aapsLogger = aapsLogger, iobCobCalculator = iobCobCalculator, dateUtil = dateUtil)
|
val glucoseStatusProvider = GlucoseStatusProviderImpl(aapsLogger = aapsLogger, iobCobCalculator = iobCobCalculator, dateUtil = dateUtil)
|
||||||
|
|
||||||
hardLimits = HardLimitsMock(sp, rh)
|
|
||||||
insightDbHelper = InsightDbHelper(insightDatabaseDao)
|
insightDbHelper = InsightDbHelper(insightDatabaseDao)
|
||||||
danaPump = DanaPump(aapsLogger, sp, dateUtil, instantiator)
|
danaPump = DanaPump(aapsLogger, sp, dateUtil, instantiator)
|
||||||
objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, rh, activePlugin, sp, config)
|
objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, rh, activePlugin, sp, config)
|
||||||
comboPlugin = ComboPlugin(injector, aapsLogger, rxBus, rh, profileFunction, sp, commandQueue, pumpSync, dateUtil, ruffyScripter, uiInteraction)
|
comboPlugin = ComboPlugin(injector, aapsLogger, rxBus, rh, profileFunction, sp, commandQueue, pumpSync, dateUtil, ruffyScripter, uiInteraction)
|
||||||
danaRPlugin = DanaRPlugin(injector, aapsLogger, aapsSchedulers, rxBus, context, rh, constraintChecker, activePlugin, sp, commandQueue, danaPump, dateUtil, fabricPrivacy, pumpSync,
|
danaRPlugin = DanaRPlugin(
|
||||||
uiInteraction, danaHistoryDatabase)
|
injector, aapsLogger, aapsSchedulers, rxBus, context, rh, constraintChecker, activePlugin, sp, commandQueue, danaPump, dateUtil, fabricPrivacy, pumpSync,
|
||||||
|
uiInteraction, danaHistoryDatabase
|
||||||
|
)
|
||||||
danaRSPlugin =
|
danaRSPlugin =
|
||||||
info.nightscout.pump.danars.DanaRSPlugin(
|
info.nightscout.pump.danars.DanaRSPlugin(
|
||||||
injector,
|
injector,
|
|
@ -1,8 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.general.maintenance
|
package info.nightscout.plugins.general.maintenance
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBase
|
|
||||||
import info.nightscout.configuration.maintenance.MaintenancePlugin
|
import info.nightscout.configuration.maintenance.MaintenancePlugin
|
||||||
import info.nightscout.interfaces.Config
|
import info.nightscout.interfaces.Config
|
||||||
import info.nightscout.interfaces.logging.LoggerUtils
|
import info.nightscout.interfaces.logging.LoggerUtils
|
||||||
|
@ -10,7 +9,8 @@ import info.nightscout.interfaces.maintenance.PrefFileListProvider
|
||||||
import info.nightscout.interfaces.nsclient.NSSettingsStatus
|
import info.nightscout.interfaces.nsclient.NSSettingsStatus
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import org.junit.Assert
|
import info.nightscout.sharedtests.TestBase
|
||||||
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
@ -40,11 +40,11 @@ class MaintenancePluginTest : TestBase() {
|
||||||
|
|
||||||
@Test fun logFilesTest() {
|
@Test fun logFilesTest() {
|
||||||
var logs = sut.getLogFiles(2)
|
var logs = sut.getLogFiles(2)
|
||||||
Assert.assertEquals(2, logs.size)
|
Assertions.assertEquals(2, logs.size)
|
||||||
Assert.assertEquals("AndroidAPS.log", logs[0].name)
|
Assertions.assertEquals("AndroidAPS.log", logs[0].name)
|
||||||
Assert.assertEquals("AndroidAPS.2018-01-03_01-01-00.1.zip", logs[1].name)
|
Assertions.assertEquals("AndroidAPS.2018-01-03_01-01-00.1.zip", logs[1].name)
|
||||||
logs = sut.getLogFiles(10)
|
logs = sut.getLogFiles(10)
|
||||||
Assert.assertEquals(4, logs.size)
|
Assertions.assertEquals(4, logs.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -53,7 +53,7 @@ class MaintenancePluginTest : TestBase() {
|
||||||
val name = "AndroidAPS.log.zip"
|
val name = "AndroidAPS.log.zip"
|
||||||
var zipFile = File("build/$name")
|
var zipFile = File("build/$name")
|
||||||
zipFile = sut.zipLogs(zipFile, logs)
|
zipFile = sut.zipLogs(zipFile, logs)
|
||||||
Assert.assertTrue(zipFile.exists())
|
Assertions.assertTrue(zipFile.exists())
|
||||||
Assert.assertTrue(zipFile.isFile)
|
Assertions.assertTrue(zipFile.isFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,9 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.safety
|
package info.nightscout.plugins.safety
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.HardLimitsMock
|
|
||||||
import info.nightscout.androidaps.TestBaseWithProfile
|
|
||||||
import info.nightscout.database.impl.AppRepository
|
import info.nightscout.database.impl.AppRepository
|
||||||
import info.nightscout.interfaces.ApsMode
|
import info.nightscout.interfaces.ApsMode
|
||||||
import info.nightscout.interfaces.Constants
|
import info.nightscout.interfaces.Constants
|
||||||
|
@ -11,7 +9,6 @@ import info.nightscout.interfaces.bgQualityCheck.BgQualityCheck
|
||||||
import info.nightscout.interfaces.constraints.Constraint
|
import info.nightscout.interfaces.constraints.Constraint
|
||||||
import info.nightscout.interfaces.constraints.Constraints
|
import info.nightscout.interfaces.constraints.Constraints
|
||||||
import info.nightscout.interfaces.iob.GlucoseStatusProvider
|
import info.nightscout.interfaces.iob.GlucoseStatusProvider
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
|
||||||
import info.nightscout.interfaces.plugin.PluginType
|
import info.nightscout.interfaces.plugin.PluginType
|
||||||
import info.nightscout.interfaces.profiling.Profiler
|
import info.nightscout.interfaces.profiling.Profiler
|
||||||
import info.nightscout.interfaces.pump.defs.PumpDescription
|
import info.nightscout.interfaces.pump.defs.PumpDescription
|
||||||
|
@ -22,7 +19,7 @@ import info.nightscout.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
|
||||||
import info.nightscout.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
|
import info.nightscout.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
|
||||||
import info.nightscout.plugins.constraints.safety.SafetyPlugin
|
import info.nightscout.plugins.constraints.safety.SafetyPlugin
|
||||||
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
import info.nightscout.pump.virtual.VirtualPumpPlugin
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.sharedtests.TestBaseWithProfile
|
||||||
import info.nightscout.source.GlimpPlugin
|
import info.nightscout.source.GlimpPlugin
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
@ -32,9 +29,7 @@ import org.mockito.Mockito.`when`
|
||||||
|
|
||||||
class SafetyPluginTest : TestBaseWithProfile() {
|
class SafetyPluginTest : TestBaseWithProfile() {
|
||||||
|
|
||||||
@Mock lateinit var sp: SP
|
|
||||||
@Mock lateinit var constraintChecker: Constraints
|
@Mock lateinit var constraintChecker: Constraints
|
||||||
@Mock lateinit var activePlugin: ActivePlugin
|
|
||||||
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
||||||
@Mock lateinit var glimpPlugin: GlimpPlugin
|
@Mock lateinit var glimpPlugin: GlimpPlugin
|
||||||
@Mock lateinit var profiler: Profiler
|
@Mock lateinit var profiler: Profiler
|
||||||
|
@ -44,7 +39,6 @@ class SafetyPluginTest : TestBaseWithProfile() {
|
||||||
@Mock lateinit var uiInteraction: UiInteraction
|
@Mock lateinit var uiInteraction: UiInteraction
|
||||||
@Mock lateinit var tddCalculator: TddCalculator
|
@Mock lateinit var tddCalculator: TddCalculator
|
||||||
|
|
||||||
private lateinit var hardLimits: HardLimits
|
|
||||||
private lateinit var safetyPlugin: SafetyPlugin
|
private lateinit var safetyPlugin: SafetyPlugin
|
||||||
private lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
|
private lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
|
||||||
private lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
|
private lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
|
||||||
|
@ -78,7 +72,6 @@ class SafetyPluginTest : TestBaseWithProfile() {
|
||||||
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
|
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
|
||||||
`when`(virtualPumpPlugin.pumpDescription).thenReturn(pumpDescription)
|
`when`(virtualPumpPlugin.pumpDescription).thenReturn(pumpDescription)
|
||||||
`when`(config.APS).thenReturn(true)
|
`when`(config.APS).thenReturn(true)
|
||||||
hardLimits = HardLimitsMock(sp, rh)
|
|
||||||
safetyPlugin = SafetyPlugin(injector, aapsLogger, rh, sp, rxBus, constraintChecker, activePlugin, hardLimits, config, iobCobCalculator, dateUtil, uiInteraction)
|
safetyPlugin = SafetyPlugin(injector, aapsLogger, rh, sp, rxBus, constraintChecker, activePlugin, hardLimits, config, iobCobCalculator, dateUtil, uiInteraction)
|
||||||
openAPSAMAPlugin = OpenAPSAMAPlugin(
|
openAPSAMAPlugin = OpenAPSAMAPlugin(
|
||||||
injector, aapsLogger, rxBus, constraintChecker, rh, profileFunction, context, activePlugin, iobCobCalculator, hardLimits, profiler, fabricPrivacy,
|
injector, aapsLogger, rxBus, constraintChecker, rh, profileFunction, context, activePlugin, iobCobCalculator, hardLimits, profiler, fabricPrivacy,
|
|
@ -1,8 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.sensitivity
|
package info.nightscout.plugins.sensitivity
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBase
|
|
||||||
import info.nightscout.interfaces.aps.AutosensDataStore
|
import info.nightscout.interfaces.aps.AutosensDataStore
|
||||||
import info.nightscout.interfaces.aps.AutosensResult
|
import info.nightscout.interfaces.aps.AutosensResult
|
||||||
import info.nightscout.interfaces.aps.Sensitivity
|
import info.nightscout.interfaces.aps.Sensitivity
|
||||||
|
@ -11,8 +10,9 @@ import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.sensitivity.AbstractSensitivityPlugin
|
import info.nightscout.sensitivity.AbstractSensitivityPlugin
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
import info.nightscout.sharedtests.TestBase
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import org.junit.Assert
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
|
||||||
|
@ -22,7 +22,8 @@ class AbstractSensitivityPluginTest : TestBase() {
|
||||||
@Mock lateinit var rh: ResourceHelper
|
@Mock lateinit var rh: ResourceHelper
|
||||||
@Mock lateinit var sp: SP
|
@Mock lateinit var sp: SP
|
||||||
|
|
||||||
private inner class SensitivityTestClass(pluginDescription: PluginDescription, aapsLogger: AAPSLogger, rh: ResourceHelper, sp: SP) : AbstractSensitivityPlugin(pluginDescription, HasAndroidInjector { AndroidInjector { } }, aapsLogger, rh, sp) {
|
private inner class SensitivityTestClass(pluginDescription: PluginDescription, aapsLogger: AAPSLogger, rh: ResourceHelper, sp: SP) :
|
||||||
|
AbstractSensitivityPlugin(pluginDescription, HasAndroidInjector { AndroidInjector { } }, aapsLogger, rh, sp) {
|
||||||
|
|
||||||
override fun detectSensitivity(ads: AutosensDataStore, fromTime: Long, toTime: Long): AutosensResult {
|
override fun detectSensitivity(ads: AutosensDataStore, fromTime: Long, toTime: Long): AutosensResult {
|
||||||
return AutosensResult()
|
return AutosensResult()
|
||||||
|
@ -43,17 +44,13 @@ class AbstractSensitivityPluginTest : TestBase() {
|
||||||
@Test
|
@Test
|
||||||
fun fillResultTest() {
|
fun fillResultTest() {
|
||||||
val sut = SensitivityTestClass(pluginDescription, aapsLogger, rh, sp)
|
val sut = SensitivityTestClass(pluginDescription, aapsLogger, rh, sp)
|
||||||
var ar = sut.fillResult(1.0, 1.0, "1",
|
var ar = sut.fillResult(1.0, 1.0, "1", "1.2", "1", 12, 0.7, 1.2)
|
||||||
"1.2", "1", 12, 0.7, 1.2)
|
Assertions.assertEquals(1.0, ar.ratio, 0.01)
|
||||||
Assert.assertEquals(1.0, ar.ratio, 0.01)
|
ar = sut.fillResult(1.2, 1.0, "1", "1.2", "1", 40, 0.7, 1.2)
|
||||||
ar = sut.fillResult(1.2, 1.0, "1",
|
Assertions.assertEquals(1.16, ar.ratio, 0.01)
|
||||||
"1.2", "1", 40, 0.7, 1.2)
|
ar = sut.fillResult(1.2, 1.0, "1", "1.2", "1", 50, 0.7, 1.2)
|
||||||
Assert.assertEquals(1.16, ar.ratio, 0.01)
|
Assertions.assertEquals(1.2, ar.ratio, 0.01)
|
||||||
ar = sut.fillResult(1.2, 1.0, "1",
|
ar = sut.fillResult(1.2, 1.0, "1", "1.2", "1", 50, 0.7, 1.1)
|
||||||
"1.2", "1", 50, 0.7, 1.2)
|
Assertions.assertEquals(1.1, ar.ratio, 0.01)
|
||||||
Assert.assertEquals(1.2, ar.ratio, 0.01)
|
|
||||||
ar = sut.fillResult(1.2, 1.0, "1",
|
|
||||||
"1.2", "1", 50, 0.7, 1.1)
|
|
||||||
Assert.assertEquals(1.1, ar.ratio, 0.01)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
package info.nightscout.androidaps.pump
|
package info.nightscout.pump
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBaseWithProfile
|
|
||||||
import info.nightscout.core.pump.toHtml
|
import info.nightscout.core.pump.toHtml
|
||||||
import info.nightscout.interfaces.pump.PumpEnactResult
|
import info.nightscout.interfaces.pump.PumpEnactResult
|
||||||
import info.nightscout.plugins.aps.loop.extensions.json
|
import info.nightscout.plugins.aps.loop.extensions.json
|
||||||
import info.nightscout.pump.virtual.extensions.toText
|
import info.nightscout.pump.virtual.extensions.toText
|
||||||
|
import info.nightscout.sharedtests.TestBaseWithProfile
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
|
@ -1,15 +1,13 @@
|
||||||
package info.nightscout.androidaps.data
|
package info.nightscout.core.wizard
|
||||||
|
|
||||||
import dagger.android.AndroidInjector
|
import dagger.android.AndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.TestBase
|
import info.nightscout.androidaps.TestBase
|
||||||
import info.nightscout.core.wizard.QuickWizard
|
|
||||||
import info.nightscout.core.wizard.QuickWizardEntry
|
|
||||||
import info.nightscout.interfaces.aps.Loop
|
import info.nightscout.interfaces.aps.Loop
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction
|
import info.nightscout.interfaces.profile.ProfileFunction
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
import org.junit.Assert
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
@ -28,8 +26,10 @@ class QuickWizardTest : TestBase() {
|
||||||
private var array: JSONArray = JSONArray("[$data1,$data2]")
|
private var array: JSONArray = JSONArray("[$data1,$data2]")
|
||||||
|
|
||||||
class MockedTime : QuickWizardEntry.Time() {
|
class MockedTime : QuickWizardEntry.Time() {
|
||||||
|
|
||||||
override fun secondsFromMidnight() = 0
|
override fun secondsFromMidnight() = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
private val mockedTime = MockedTime()
|
private val mockedTime = MockedTime()
|
||||||
|
|
||||||
private val injector = HasAndroidInjector {
|
private val injector = HasAndroidInjector {
|
||||||
|
@ -47,49 +47,54 @@ class QuickWizardTest : TestBase() {
|
||||||
private lateinit var quickWizard: QuickWizard
|
private lateinit var quickWizard: QuickWizard
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
fun mock() {
|
fun setup() {
|
||||||
|
|
||||||
`when`(sp.getString(info.nightscout.core.utils.R.string.key_quickwizard, "[]")).thenReturn("[]")
|
`when`(sp.getString(info.nightscout.core.utils.R.string.key_quickwizard, "[]")).thenReturn("[]")
|
||||||
quickWizard = QuickWizard(sp, injector)
|
quickWizard = QuickWizard(sp, injector)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun setDataTest() {
|
@Test
|
||||||
|
fun setDataTest() {
|
||||||
quickWizard.setData(array)
|
quickWizard.setData(array)
|
||||||
Assert.assertEquals(2, quickWizard.size())
|
Assertions.assertEquals(2, quickWizard.size())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun test() {
|
@Test
|
||||||
|
fun test() {
|
||||||
quickWizard.setData(array)
|
quickWizard.setData(array)
|
||||||
Assert.assertEquals("Lunch", quickWizard[1].buttonText())
|
Assertions.assertEquals("Lunch", quickWizard[1].buttonText())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun active() {
|
@Test
|
||||||
|
fun active() {
|
||||||
quickWizard.setData(array)
|
quickWizard.setData(array)
|
||||||
val e: QuickWizardEntry = quickWizard.getActive()!!
|
val e: QuickWizardEntry = quickWizard.getActive()!!
|
||||||
Assert.assertEquals(36.0, e.carbs().toDouble(), 0.01)
|
Assertions.assertEquals(36.0, e.carbs().toDouble(), 0.01)
|
||||||
quickWizard.remove(0)
|
quickWizard.remove(0)
|
||||||
quickWizard.remove(0)
|
quickWizard.remove(0)
|
||||||
Assert.assertNull(quickWizard.getActive())
|
Assertions.assertNull(quickWizard.getActive())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun newEmptyItemTest() {
|
@Test
|
||||||
Assert.assertNotNull(quickWizard.newEmptyItem())
|
fun newEmptyItemTest() {
|
||||||
|
Assertions.assertNotNull(quickWizard.newEmptyItem())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun addOrUpdate() {
|
@Test
|
||||||
|
fun addOrUpdate() {
|
||||||
quickWizard.setData(array)
|
quickWizard.setData(array)
|
||||||
Assert.assertEquals(2, quickWizard.size())
|
Assertions.assertEquals(2, quickWizard.size())
|
||||||
quickWizard.addOrUpdate(quickWizard.newEmptyItem())
|
quickWizard.addOrUpdate(quickWizard.newEmptyItem())
|
||||||
Assert.assertEquals(3, quickWizard.size())
|
Assertions.assertEquals(3, quickWizard.size())
|
||||||
val q: QuickWizardEntry = quickWizard.newEmptyItem()
|
val q: QuickWizardEntry = quickWizard.newEmptyItem()
|
||||||
q.position = 0
|
q.position = 0
|
||||||
quickWizard.addOrUpdate(q)
|
quickWizard.addOrUpdate(q)
|
||||||
Assert.assertEquals(3, quickWizard.size())
|
Assertions.assertEquals(3, quickWizard.size())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun remove() {
|
@Test
|
||||||
|
fun remove() {
|
||||||
quickWizard.setData(array)
|
quickWizard.setData(array)
|
||||||
quickWizard.remove(0)
|
quickWizard.remove(0)
|
||||||
Assert.assertEquals(1, quickWizard.size())
|
Assertions.assertEquals(1, quickWizard.size())
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@ apply from: "${project.rootDir}/core/main/android_module_dependencies.gradle"
|
||||||
apply from: "${project.rootDir}/core/main/test_dependencies.gradle"
|
apply from: "${project.rootDir}/core/main/test_dependencies.gradle"
|
||||||
apply from: "${project.rootDir}/core/main/allopen_dependencies.gradle"
|
apply from: "${project.rootDir}/core/main/allopen_dependencies.gradle"
|
||||||
apply from: "${project.rootDir}/core/main/jacoco_global.gradle"
|
apply from: "${project.rootDir}/core/main/jacoco_global.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace 'info.nightscout.plugins.constraints'
|
namespace 'info.nightscout.plugins.constraints'
|
||||||
}
|
}
|
||||||
|
@ -24,5 +25,4 @@ dependencies {
|
||||||
|
|
||||||
// Phone checker
|
// Phone checker
|
||||||
api 'com.scottyab:rootbeer-lib:0.1.0'
|
api 'com.scottyab:rootbeer-lib:0.1.0'
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue