diff --git a/app-wear-shared/shared-tests/.gitignore b/app-wear-shared/shared-tests/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/app-wear-shared/shared-tests/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/app-wear-shared/shared-tests/build.gradle b/app-wear-shared/shared-tests/build.gradle
new file mode 100644
index 0000000000..359541a36f
--- /dev/null
+++ b/app-wear-shared/shared-tests/build.gradle
@@ -0,0 +1,34 @@
+plugins {
+ id 'com.android.library'
+ id 'kotlin-android'
+ id 'kotlin-kapt'
+ id 'kotlinx-serialization'
+ id 'kotlin-allopen'
+}
+
+apply from: "${project.rootDir}/core/main/android_dependencies.gradle"
+apply from: "${project.rootDir}/core/main/android_module_dependencies.gradle"
+apply from: "${project.rootDir}/core/main/allopen_dependencies.gradle"
+apply from: "${project.rootDir}/core/main/test_dependencies.gradle"
+apply from: "${project.rootDir}/core/main/jacoco_global.gradle"
+
+android {
+ namespace 'info.nightscout.sharedtests'
+ }
+
+dependencies {
+ implementation project(':database:entities')
+ implementation project(':app-wear-shared:shared')
+ implementation project(':core:interfaces')
+ implementation project(':core:main')
+ implementation project(':core:utils')
+ implementation project(':implementation')
+
+ api "org.mockito:mockito-junit-jupiter:$mockito_version"
+ api "org.mockito.kotlin:mockito-kotlin:4.1.0"
+ api "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version"
+
+ api "com.google.dagger:dagger:$dagger_version"
+ api "com.google.dagger:dagger-android:$dagger_version"
+ api "com.google.dagger:dagger-android-support:$dagger_version"
+}
\ No newline at end of file
diff --git a/app-wear-shared/shared-tests/consumer-rules.pro b/app-wear-shared/shared-tests/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app-wear-shared/shared-tests/proguard-rules.pro b/app-wear-shared/shared-tests/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/app-wear-shared/shared-tests/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/app-wear-shared/shared-tests/src/main/AndroidManifest.xml b/app-wear-shared/shared-tests/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..44008a4332
--- /dev/null
+++ b/app-wear-shared/shared-tests/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/HardLimitsMock.kt
similarity index 97%
rename from implementation/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt
rename to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/HardLimitsMock.kt
index 288eaf084a..68e9dce9c2 100644
--- a/implementation/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt
+++ b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/HardLimitsMock.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps
+package info.nightscout.sharedtests
import info.nightscout.interfaces.utils.HardLimits
import info.nightscout.shared.interfaces.ResourceHelper
@@ -7,7 +7,7 @@ import javax.inject.Inject
import kotlin.math.max
import kotlin.math.min
-class HardLimitsMock @Inject constructor(
+@Suppress("unused") class HardLimitsMock @Inject constructor(
private val sp: SP,
private val rh: ResourceHelper
) : HardLimits {
diff --git a/plugins/main/src/test/java/info/nightscout/androidaps/TestBase.kt b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBase.kt
similarity index 85%
rename from plugins/main/src/test/java/info/nightscout/androidaps/TestBase.kt
rename to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBase.kt
index 4fd2aef548..55e1ad6835 100644
--- a/plugins/main/src/test/java/info/nightscout/androidaps/TestBase.kt
+++ b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBase.kt
@@ -1,5 +1,6 @@
-package info.nightscout.androidaps
+package info.nightscout.sharedtests
+import android.annotation.SuppressLint
import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.TestAapsSchedulers
import info.nightscout.rx.logging.AAPSLoggerTest
@@ -11,6 +12,7 @@ import org.mockito.junit.jupiter.MockitoSettings
import org.mockito.quality.Strictness
import java.util.Locale
+@Suppress("SpellCheckingInspection")
@ExtendWith(MockitoExtension::class)
@MockitoSettings(strictness = Strictness.LENIENT)
open class TestBase {
@@ -27,11 +29,12 @@ open class TestBase {
// 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
+ @SuppressLint("CheckResult")
fun anyObject(): T {
Mockito.any()
return uninitialized()
}
@Suppress("Unchecked_Cast")
- fun uninitialized(): T = null as T
+ private fun uninitialized(): T = null as T
}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBaseWithProfile.kt
similarity index 96%
rename from implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt
rename to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBaseWithProfile.kt
index fd1a936d76..00a723c2bd 100644
--- a/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt
+++ b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBaseWithProfile.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps
+package info.nightscout.sharedtests
import android.content.Context
import dagger.android.AndroidInjector
@@ -26,13 +26,12 @@ 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 activePlugin: ActivePlugin
@Mock lateinit var rh: ResourceHelper
@Mock lateinit var iobCobCalculator: IobCobCalculator
@Mock lateinit var fabricPrivacy: FabricPrivacy
@@ -41,15 +40,15 @@ open class TestBaseWithProfile : TestBase() {
@Mock lateinit var context: Context
@Mock lateinit var sp: SP
- private lateinit var hardLimits: HardLimits
lateinit var dateUtil: DateUtil
+ lateinit var hardLimits: HardLimits
val rxBus = RxBus(aapsSchedulers, aapsLogger)
val profileInjector = HasAndroidInjector {
AndroidInjector {
if (it is ProfileStoreObject) {
it.aapsLogger = aapsLogger
- it.activePlugin = activePluginProvider
+ it.activePlugin = activePlugin
it.config = config
it.rh = rh
it.rxBus = rxBus
@@ -64,20 +63,22 @@ open class TestBaseWithProfile : TestBase() {
lateinit var effectiveProfileSwitch: EffectiveProfileSwitch
lateinit var testPumpPlugin: TestPumpPlugin
+ val now = 1656358822000L
+
@Suppress("PropertyName") val TESTPROFILENAME = "someProfile"
@BeforeEach
fun prepareMock() {
- invalidProfileJSON = "{\"dia\":\"1\",\"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\"}"
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\"}"
- testPumpPlugin = TestPumpPlugin(profileInjector)
- `when`(activePluginProvider.activePump).thenReturn(testPumpPlugin)
+ invalidProfileJSON = "{\"dia\":\"1\",\"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)
+ testPumpPlugin = TestPumpPlugin(profileInjector)
+ Mockito.`when`(dateUtil.now()).thenReturn(now)
+ Mockito.`when`(activePlugin.activePump).thenReturn(testPumpPlugin)
hardLimits = HardLimitsMock(sp, rh)
validProfile = ProfileSealed.Pure(pureProfileFromJson(JSONObject(validProfileJSON), dateUtil)!!)
effectiveProfileSwitch = EffectiveProfileSwitch(
diff --git a/implementation/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestPumpPlugin.kt
similarity index 88%
rename from implementation/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt
rename to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestPumpPlugin.kt
index 9c4cae2277..069b001052 100644
--- a/implementation/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt
+++ b/app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestPumpPlugin.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps
+package info.nightscout.sharedtests
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.annotations.OpenForTesting
@@ -19,6 +19,7 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
var connected = false
var isProfileSet = true
+ var pumpSuspended = false
override fun isConnected() = connected
override fun isConnecting() = false
@@ -29,7 +30,7 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
override var pumpDescription = PumpDescription()
override fun isInitialized(): Boolean = true
- override fun isSuspended(): Boolean = false
+ override fun isSuspended(): Boolean = pumpSuspended
override fun isBusy(): Boolean = false
override fun connect(reason: String) {
connected = true
@@ -44,15 +45,19 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
}
override fun waitForDisconnectionInSeconds(): Int = 0
- override fun getPumpStatus(reason: String) {}
+ override fun getPumpStatus(reason: String) { /* not needed */
+ }
+
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 baseBasalRate: Double get() = 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 stopBolusDelivering() { /* not needed */
+ }
+
override fun setTempBasalAbsolute(absoluteRate: Double, durationInMinutes: Int, profile: Profile, enforceNew: Boolean, tbrType: PumpSync.TemporaryBasalType): PumpEnactResult =
PumpEnactResult(injector).success(true)
@@ -66,9 +71,10 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
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 fun shortStatus(veryShort: Boolean): String = "Virtual Pump"
override val isFakingTempsByExtendedBoluses: Boolean = false
override fun loadTDDs(): PumpEnactResult = PumpEnactResult(injector).success(true)
override fun canHandleDST(): Boolean = true
- override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType) {}
+ override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType) { /* not needed */
+ }
}
\ No newline at end of file
diff --git a/app-wear-shared/shared/build.gradle b/app-wear-shared/shared/build.gradle
index c4ecc5fa7f..c97de505bb 100644
--- a/app-wear-shared/shared/build.gradle
+++ b/app-wear-shared/shared/build.gradle
@@ -24,7 +24,6 @@ dependencies {
api "androidx.preference:preference-ktx:$preferencektx_version"
api "net.danlew:android.joda:$joda_version"
- // for old fashioned support-app version (wear)
api "com.google.dagger:dagger:$dagger_version"
api "com.google.dagger:dagger-android:$dagger_version"
api "com.google.dagger:dagger-android-support:$dagger_version"
diff --git a/core/main/test_dependencies.gradle b/core/main/test_dependencies.gradle
index f2b8d656af..cce79fc6ba 100644
--- a/core/main/test_dependencies.gradle
+++ b/core/main/test_dependencies.gradle
@@ -5,7 +5,6 @@ dependencies {
testImplementation "org.json:json:$json_version"
testImplementation "org.mockito:mockito-junit-jupiter:$mockito_version"
testImplementation "org.mockito.kotlin:mockito-kotlin:4.1.0"
- //testImplementation "org.mockito:mockito-inline:$mockito_version"
testImplementation "joda-time:joda-time:$jodatime_version"
testImplementation 'com.google.truth:truth:1.1.5'
testImplementation "org.skyscreamer:jsonassert:1.5.0"
diff --git a/implementation/build.gradle b/implementation/build.gradle
index 91b6a412f5..d68e50c106 100644
--- a/implementation/build.gradle
+++ b/implementation/build.gradle
@@ -25,6 +25,8 @@ dependencies {
implementation project(':core:ui')
implementation project(':core:utils')
+ testImplementation project(':app-wear-shared:shared-tests')
+
// Protection
api 'androidx.biometric:biometric:1.1.0'
}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/androidaps/TestBase.kt b/implementation/src/test/java/info/nightscout/androidaps/TestBase.kt
deleted file mode 100644
index 4fd2aef548..0000000000
--- a/implementation/src/test/java/info/nightscout/androidaps/TestBase.kt
+++ /dev/null
@@ -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 anyObject(): T {
- Mockito.any()
- return uninitialized()
- }
-
- @Suppress("Unchecked_Cast")
- fun uninitialized(): T = null as T
-}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/implementation/iob/GlucoseStatusTest.kt b/implementation/src/test/java/info/nightscout/implementation/iob/GlucoseStatusTest.kt
index 110bbdff63..d4f9f6ea41 100644
--- a/implementation/src/test/java/info/nightscout/implementation/iob/GlucoseStatusTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/iob/GlucoseStatusTest.kt
@@ -1,6 +1,5 @@
package info.nightscout.implementation.iob
-import info.nightscout.androidaps.TestBase
import info.nightscout.core.iob.asRounded
import info.nightscout.core.iob.log
import info.nightscout.database.entities.GlucoseValue
@@ -10,6 +9,7 @@ import info.nightscout.interfaces.iob.InMemoryGlucoseValue
import info.nightscout.interfaces.iob.IobCobCalculator
import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBase
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
diff --git a/implementation/src/test/java/info/nightscout/implementation/overview/OverviewDataImplTest.kt b/implementation/src/test/java/info/nightscout/implementation/overview/OverviewDataImplTest.kt
index 73267a0397..0b4aa6bafc 100644
--- a/implementation/src/test/java/info/nightscout/implementation/overview/OverviewDataImplTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/overview/OverviewDataImplTest.kt
@@ -1,6 +1,5 @@
package info.nightscout.implementation.overview
-import info.nightscout.androidaps.TestBase
import info.nightscout.database.ValueWrapper
import info.nightscout.database.entities.GlucoseValue
import info.nightscout.database.impl.AppRepository
@@ -14,6 +13,7 @@ import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBase
import io.reactivex.rxjava3.core.Single
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
diff --git a/implementation/src/test/java/info/nightscout/implementation/profile/ProfileStoreTest.kt b/implementation/src/test/java/info/nightscout/implementation/profile/ProfileStoreTest.kt
index 241255ade2..0f7eee5b5f 100644
--- a/implementation/src/test/java/info/nightscout/implementation/profile/ProfileStoreTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/profile/ProfileStoreTest.kt
@@ -1,47 +1,47 @@
package info.nightscout.implementation.profile
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.interfaces.profile.PureProfile
-import org.junit.Assert
+import info.nightscout.sharedtests.TestBaseWithProfile
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
internal class ProfileStoreTest : TestBaseWithProfile() {
@Test
fun getStartDateTest() {
- Assert.assertEquals(0, getValidProfileStore().getStartDate())
+ Assertions.assertEquals(0, getValidProfileStore().getStartDate())
}
@Test
fun getDefaultProfileTest() {
- Assert.assertTrue(getValidProfileStore().getDefaultProfile() is PureProfile)
+ Assertions.assertTrue(getValidProfileStore().getDefaultProfile() is PureProfile)
}
@Test
fun getDefaultProfileJsonTest() {
- Assert.assertTrue(getValidProfileStore().getDefaultProfileJson()?.has("dia") ?: false)
- Assert.assertEquals(null, getInvalidProfileStore2().getDefaultProfileJson())
+ Assertions.assertTrue(getValidProfileStore().getDefaultProfileJson()?.has("dia") ?: false)
+ Assertions.assertEquals(null, getInvalidProfileStore2().getDefaultProfileJson())
}
@Test
fun getDefaultProfileNameTest() {
- Assert.assertEquals(TESTPROFILENAME, getValidProfileStore().getDefaultProfileName())
+ Assertions.assertEquals(TESTPROFILENAME, getValidProfileStore().getDefaultProfileName())
}
@Test
fun getProfileListTest() {
- Assert.assertEquals(1, getValidProfileStore().getProfileList().size)
+ Assertions.assertEquals(1, getValidProfileStore().getProfileList().size)
}
@Test
fun getSpecificProfileTest() {
- Assert.assertTrue(getValidProfileStore().getSpecificProfile(TESTPROFILENAME) is PureProfile)
+ Assertions.assertTrue(getValidProfileStore().getSpecificProfile(TESTPROFILENAME) is PureProfile)
}
@Test
fun allProfilesValidTest() {
- Assert.assertTrue(getValidProfileStore().allProfilesValid)
- Assert.assertFalse(getInvalidProfileStore1().allProfilesValid)
- Assert.assertFalse(getInvalidProfileStore2().allProfilesValid)
+ Assertions.assertTrue(getValidProfileStore().allProfilesValid)
+ Assertions.assertFalse(getInvalidProfileStore1().allProfilesValid)
+ Assertions.assertFalse(getInvalidProfileStore2().allProfilesValid)
}
}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/implementation/pump/DetailedBolusInfoStorageTest.kt b/implementation/src/test/java/info/nightscout/implementation/pump/DetailedBolusInfoStorageTest.kt
index 86d9a97e9d..5f1e23593b 100644
--- a/implementation/src/test/java/info/nightscout/implementation/pump/DetailedBolusInfoStorageTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/pump/DetailedBolusInfoStorageTest.kt
@@ -1,12 +1,11 @@
package info.nightscout.implementation.pump
-import info.nightscout.androidaps.TestBase
import info.nightscout.implementation.R
import info.nightscout.interfaces.pump.DetailedBolusInfo
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNull
+import info.nightscout.sharedtests.TestBase
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.mockito.Mock
@@ -16,7 +15,7 @@ class DetailedBolusInfoStorageTest : TestBase() {
@Mock lateinit var sp: SP
@Mock lateinit var rh: ResourceHelper
-
+
private val info1 = DetailedBolusInfo()
private val info2 = DetailedBolusInfo()
private val info3 = DetailedBolusInfo()
@@ -48,9 +47,9 @@ class DetailedBolusInfoStorageTest : TestBase() {
@Test
fun add() {
detailedBolusInfoStorage.store.clear()
- assertEquals(0, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(0, detailedBolusInfoStorage.store.size)
detailedBolusInfoStorage.add(info1)
- assertEquals(1, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(1, detailedBolusInfoStorage.store.size)
}
@Test
@@ -59,33 +58,33 @@ class DetailedBolusInfoStorageTest : TestBase() {
// Look for exact bolus
setUp()
var d: DetailedBolusInfo? = detailedBolusInfoStorage.findDetailedBolusInfo(1000000, 4.0)
- assertEquals(4.0, d!!.insulin, 0.01)
- assertEquals(2, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(4.0, d!!.insulin, 0.01)
+ Assertions.assertEquals(2, detailedBolusInfoStorage.store.size)
// Look for exact bolus
setUp()
d = detailedBolusInfoStorage.findDetailedBolusInfo(1000000, 3.0)
- assertEquals(3.0, d!!.insulin, 0.01)
- assertEquals(2, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(3.0, d!!.insulin, 0.01)
+ Assertions.assertEquals(2, detailedBolusInfoStorage.store.size)
// With less insulin (bolus not delivered completely). Should return first one matching date
setUp()
d = detailedBolusInfoStorage.findDetailedBolusInfo(1000500, 2.0)
- assertEquals(3.0, d!!.insulin, 0.01)
- assertEquals(2, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(3.0, d!!.insulin, 0.01)
+ Assertions.assertEquals(2, detailedBolusInfoStorage.store.size)
// With less insulin (bolus not delivered completely). Should return first one matching date
setUp()
d = detailedBolusInfoStorage.findDetailedBolusInfo(1000500, 3.5)
- assertEquals(4.0, d!!.insulin, 0.01)
- assertEquals(2, detailedBolusInfoStorage.store.size)
+ Assertions.assertEquals(4.0, d!!.insulin, 0.01)
+ Assertions.assertEquals(2, detailedBolusInfoStorage.store.size)
// With more insulin should return null
setUp()
d = detailedBolusInfoStorage.findDetailedBolusInfo(1000500, 4.5)
- assertNull(d)
- assertEquals(3, detailedBolusInfoStorage.store.size)
+ Assertions.assertNull(d)
+ Assertions.assertEquals(3, detailedBolusInfoStorage.store.size)
// With more than one minute off should return null
setUp()
d = detailedBolusInfoStorage.findDetailedBolusInfo(1070000, 4.0)
- assertNull(d)
- assertEquals(3, detailedBolusInfoStorage.store.size)
+ Assertions.assertNull(d)
+ Assertions.assertEquals(3, detailedBolusInfoStorage.store.size)
// Use last, if bolus size is the same
// setUp()
// d = detailedBolusInfoStorage.findDetailedBolusInfo(1070000, 5.0)
diff --git a/implementation/src/test/java/info/nightscout/implementation/pump/TemporaryBasalStorageTest.kt b/implementation/src/test/java/info/nightscout/implementation/pump/TemporaryBasalStorageTest.kt
index 1709fba4fb..14465bf0f4 100644
--- a/implementation/src/test/java/info/nightscout/implementation/pump/TemporaryBasalStorageTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/pump/TemporaryBasalStorageTest.kt
@@ -1,9 +1,8 @@
package info.nightscout.implementation.pump
-import info.nightscout.androidaps.TestBase
import info.nightscout.interfaces.pump.PumpSync
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNull
+import info.nightscout.sharedtests.TestBase
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -30,9 +29,9 @@ class TemporaryBasalStorageTest : TestBase() {
@Test
fun add() {
temporaryBasalStorage.store.clear()
- assertEquals(0, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(0, temporaryBasalStorage.store.size)
temporaryBasalStorage.add(info1)
- assertEquals(1, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(1, temporaryBasalStorage.store.size)
}
@Test
@@ -41,38 +40,38 @@ class TemporaryBasalStorageTest : TestBase() {
// Look for exact bolus
setUp()
var d = temporaryBasalStorage.findTemporaryBasal(1000000, 4.0)
- assertEquals(4.0, d!!.rate, 0.01)
- assertEquals(2, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(4.0, d!!.rate, 0.01)
+ Assertions.assertEquals(2, temporaryBasalStorage.store.size)
// Look for exact bolus
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1000000, 3.0)
- assertEquals(3.0, d!!.rate, 0.01)
- assertEquals(2, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(3.0, d!!.rate, 0.01)
+ Assertions.assertEquals(2, temporaryBasalStorage.store.size)
// With less rate (bolus not delivered completely). Should return first one matching date
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1000500, 2.0)
- assertEquals(3.0, d!!.rate, 0.01)
- assertEquals(2, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(3.0, d!!.rate, 0.01)
+ Assertions.assertEquals(2, temporaryBasalStorage.store.size)
// With less rate (bolus not delivered completely). Should return first one matching date
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1000500, 3.5)
- assertEquals(4.0, d!!.rate, 0.01)
- assertEquals(2, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(4.0, d!!.rate, 0.01)
+ Assertions.assertEquals(2, temporaryBasalStorage.store.size)
// With more rate should return null
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1000500, 4.5)
- assertNull(d)
- assertEquals(3, temporaryBasalStorage.store.size)
+ Assertions.assertNull(d)
+ Assertions.assertEquals(3, temporaryBasalStorage.store.size)
// With more than one minute off should return null
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1070000, 4.0)
- assertNull(d)
- assertEquals(3, temporaryBasalStorage.store.size)
+ Assertions.assertNull(d)
+ Assertions.assertEquals(3, temporaryBasalStorage.store.size)
// Use last, if bolus size is the same
setUp()
d = temporaryBasalStorage.findTemporaryBasal(1070000, 5.0)
- assertEquals(5.0, d!!.rate, 0.01)
- assertEquals(2, temporaryBasalStorage.store.size)
+ Assertions.assertEquals(5.0, d!!.rate, 0.01)
+ Assertions.assertEquals(2, temporaryBasalStorage.store.size)
}
}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/implementation/queue/CommandQueueImplementationTest.kt b/implementation/src/test/java/info/nightscout/implementation/queue/CommandQueueImplementationTest.kt
index 75183844ab..de9977181c 100644
--- a/implementation/src/test/java/info/nightscout/implementation/queue/CommandQueueImplementationTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/queue/CommandQueueImplementationTest.kt
@@ -5,8 +5,6 @@ import android.os.Handler
import android.os.PowerManager
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBaseWithProfile
-import info.nightscout.androidaps.TestPumpPlugin
import info.nightscout.core.utils.fabric.FabricPrivacy
import info.nightscout.database.ValueWrapper
import info.nightscout.database.entities.Bolus
@@ -36,6 +34,8 @@ import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
+import info.nightscout.sharedtests.TestBaseWithProfile
+import info.nightscout.sharedtests.TestPumpPlugin
import io.reactivex.rxjava3.core.Single
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
@@ -50,7 +50,6 @@ import java.util.Calendar
class CommandQueueImplementationTest : TestBaseWithProfile() {
@Mock lateinit var constraintChecker: Constraints
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var powerManager: PowerManager
@Mock lateinit var repository: AppRepository
@Mock lateinit var uiInteraction: UiInteraction
@@ -81,7 +80,7 @@ class CommandQueueImplementationTest : TestBaseWithProfile() {
androidPermission, uiInteraction, persistenceLayer
) {
- override fun notifyAboutNewCommand() : Boolean = true
+ override fun notifyAboutNewCommand(): Boolean = true
}
@@ -250,7 +249,7 @@ class CommandQueueImplementationTest : TestBaseWithProfile() {
// add updateTime
commandQueue.updateTime(null)
Assertions.assertEquals(7, commandQueue.size())
-
+
commandQueue.clear()
commandQueue.tempBasalAbsolute(0.0, 30, true, validProfile, PumpSync.TemporaryBasalType.NORMAL, null)
commandQueue.pickup()
diff --git a/implementation/src/test/java/info/nightscout/implementation/queue/QueueThreadTest.kt b/implementation/src/test/java/info/nightscout/implementation/queue/QueueThreadTest.kt
index 63da7bcedd..8695e401f6 100644
--- a/implementation/src/test/java/info/nightscout/implementation/queue/QueueThreadTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/queue/QueueThreadTest.kt
@@ -4,20 +4,19 @@ import android.content.Context
import android.os.PowerManager
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBaseWithProfile
-import info.nightscout.androidaps.TestPumpPlugin
import info.nightscout.database.impl.AppRepository
import info.nightscout.implementation.queue.commands.CommandTempBasalAbsolute
import info.nightscout.interfaces.AndroidPermission
import info.nightscout.interfaces.constraints.Constraint
import info.nightscout.interfaces.constraints.Constraints
import info.nightscout.interfaces.db.PersistenceLayer
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.pump.PumpSync
import info.nightscout.interfaces.pump.defs.PumpDescription
import info.nightscout.interfaces.queue.Command
import info.nightscout.interfaces.ui.UiInteraction
-import org.junit.Assert
+import info.nightscout.sharedtests.TestBaseWithProfile
+import info.nightscout.sharedtests.TestPumpPlugin
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.mockito.ArgumentMatchers
@@ -27,14 +26,13 @@ import org.mockito.Mockito
class QueueThreadTest : TestBaseWithProfile() {
@Mock lateinit var constraintChecker: Constraints
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var powerManager: PowerManager
@Mock lateinit var repository: AppRepository
@Mock lateinit var androidPermission: AndroidPermission
@Mock lateinit var uiInteraction: UiInteraction
@Mock lateinit var persistenceLayer: PersistenceLayer
- val injector = HasAndroidInjector {
+ private val injector = HasAndroidInjector {
AndroidInjector {
if (it is Command) {
it.aapsLogger = aapsLogger
@@ -64,7 +62,6 @@ class QueueThreadTest : TestBaseWithProfile() {
pumpDescription.basalMinimumRate = 0.1
Mockito.`when`(context.getSystemService(Context.POWER_SERVICE)).thenReturn(powerManager)
- Mockito.`when`(activePlugin.activePump).thenReturn(pumpPlugin)
Mockito.`when`(profileFunction.getProfile()).thenReturn(validProfile)
val bolusConstraint = Constraint(0.0)
@@ -85,7 +82,8 @@ class QueueThreadTest : TestBaseWithProfile() {
@Test
fun commandIsPickedUp() {
commandQueue.tempBasalAbsolute(2.0, 60, true, validProfile, PumpSync.TemporaryBasalType.NORMAL, null)
+ @Suppress("CallToThreadRun")
sut.run()
- Assert.assertEquals(0, commandQueue.size())
+ Assertions.assertEquals(0, commandQueue.size())
}
}
\ No newline at end of file
diff --git a/implementation/src/test/java/info/nightscout/implementation/wizard/BolusWizardTest.kt b/implementation/src/test/java/info/nightscout/implementation/wizard/BolusWizardTest.kt
index 163c8e36c0..8aaa48ec46 100644
--- a/implementation/src/test/java/info/nightscout/implementation/wizard/BolusWizardTest.kt
+++ b/implementation/src/test/java/info/nightscout/implementation/wizard/BolusWizardTest.kt
@@ -2,8 +2,6 @@ package info.nightscout.implementation.wizard
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBase
-import info.nightscout.androidaps.TestPumpPlugin
import info.nightscout.core.wizard.BolusWizard
import info.nightscout.implementation.iob.GlucoseStatusProviderImpl
import info.nightscout.interfaces.GlucoseUnit
@@ -11,37 +9,28 @@ import info.nightscout.interfaces.aps.AutosensDataStore
import info.nightscout.interfaces.aps.Loop
import info.nightscout.interfaces.constraints.Constraint
import info.nightscout.interfaces.constraints.Constraints
-import info.nightscout.interfaces.iob.IobCobCalculator
import info.nightscout.interfaces.iob.IobTotal
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.profile.Profile
-import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.pump.defs.PumpDescription
import info.nightscout.interfaces.queue.CommandQueue
import info.nightscout.rx.bus.RxBus
-import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.utils.DateUtil
-import org.junit.Assert
+import info.nightscout.sharedtests.TestBaseWithProfile
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.invocation.InvocationOnMock
-class BolusWizardTest : TestBase() {
+class BolusWizardTest : TestBaseWithProfile() {
private val pumpBolusStep = 0.1
- @Mock lateinit var rh: ResourceHelper
- @Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var constraintChecker: Constraints
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var commandQueue: CommandQueue
@Mock lateinit var loop: Loop
- @Mock lateinit var iobCobCalculator: IobCobCalculator
- @Mock lateinit var dateUtil: DateUtil
@Mock lateinit var autosensDataStore: AutosensDataStore
- val injector = HasAndroidInjector {
+ private val injector = HasAndroidInjector {
AndroidInjector {
if (it is BolusWizard) {
it.aapsLogger = aapsLogger
@@ -59,8 +48,6 @@ class BolusWizardTest : TestBase() {
}
}
- val testPumpPlugin = TestPumpPlugin(injector)
-
@Suppress("SameParameterValue")
private fun setupProfile(targetLow: Double, targetHigh: Double, insulinSensitivityFactor: Double, insulinToCarbRatio: Double): Profile {
val profile = Mockito.mock(Profile::class.java)
@@ -72,7 +59,6 @@ class BolusWizardTest : TestBase() {
Mockito.`when`(profileFunction.getUnits()).thenReturn(GlucoseUnit.MGDL)
Mockito.`when`(iobCobCalculator.calculateIobFromBolus()).thenReturn(IobTotal(System.currentTimeMillis()))
Mockito.`when`(iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended()).thenReturn(IobTotal(System.currentTimeMillis()))
- Mockito.`when`(activePlugin.activePump).thenReturn(testPumpPlugin)
testPumpPlugin.pumpDescription = PumpDescription().also {
it.bolusStep = pumpBolusStep
}
@@ -88,30 +74,138 @@ class BolusWizardTest : TestBase() {
/** Should calculate the same bolus when different blood glucose but both in target range */
fun shouldCalculateTheSameBolusWhenBGsInRange() {
val profile = setupProfile(4.0, 8.0, 20.0, 12.0)
- var bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 4.2, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ var bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 4.2,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForBg42 = bw.calculatedTotalInsulin
- bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 5.4, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 5.4,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForBg54 = bw.calculatedTotalInsulin
- Assert.assertEquals(bolusForBg42, bolusForBg54, 0.01)
+ Assertions.assertEquals(bolusForBg42, bolusForBg54, 0.01)
}
@Test
fun shouldCalculateHigherBolusWhenHighBG() {
val profile = setupProfile(4.0, 8.0, 20.0, 12.0)
- var bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 9.8, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ var bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 9.8,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForHighBg = bw.calculatedTotalInsulin
- bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 5.4, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 5.4,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForBgInRange = bw.calculatedTotalInsulin
- Assert.assertTrue(bolusForHighBg > bolusForBgInRange)
+ Assertions.assertTrue(bolusForHighBg > bolusForBgInRange)
}
@Test
fun shouldCalculateLowerBolusWhenLowBG() {
val profile = setupProfile(4.0, 8.0, 20.0, 12.0)
- var bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 3.6, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ var bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 3.6,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForLowBg = bw.calculatedTotalInsulin
- bw = BolusWizard(injector).doCalc(profile, "", null, 20, 0.0, 5.4, 0.0, 100, useBg = true, useCob = true, includeBolusIOB = true, includeBasalIOB = true, useSuperBolus = false, useTT = false, useTrend = false, useAlarm = false)
+ bw =
+ BolusWizard(injector).doCalc(
+ profile,
+ "",
+ null,
+ 20,
+ 0.0,
+ 5.4,
+ 0.0,
+ 100,
+ useBg = true,
+ useCob = true,
+ includeBolusIOB = true,
+ includeBasalIOB = true,
+ useSuperBolus = false,
+ useTT = false,
+ useTrend = false,
+ useAlarm = false
+ )
val bolusForBgInRange = bw.calculatedTotalInsulin
- Assert.assertTrue(bolusForLowBg < bolusForBgInRange)
+ Assertions.assertTrue(bolusForLowBg < bolusForBgInRange)
}
}
\ No newline at end of file
diff --git a/plugins/aps/build.gradle b/plugins/aps/build.gradle
index ae1e338a9e..58950c7bb1 100644
--- a/plugins/aps/build.gradle
+++ b/plugins/aps/build.gradle
@@ -23,6 +23,7 @@ dependencies {
implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':core:validators')
+ implementation project(':plugins:automation')
api "androidx.appcompat:appcompat:$appcompat_version"
api "androidx.swiperefreshlayout:swiperefreshlayout:$swipe_version"
@@ -30,5 +31,4 @@ dependencies {
// APS
api 'org.mozilla:rhino:1.7.14'
- implementation project(path: ':plugins:automation')
}
\ No newline at end of file
diff --git a/plugins/main/build.gradle b/plugins/main/build.gradle
index 6f92e4b359..c329c74dd4 100644
--- a/plugins/main/build.gradle
+++ b/plugins/main/build.gradle
@@ -29,6 +29,7 @@ dependencies {
testImplementation project(':implementation')
testImplementation project(':plugins:insulin')
+ testImplementation project(':app-wear-shared:shared-tests')
api "androidx.appcompat:appcompat:$appcompat_version"
api "com.google.android.material:material:$material_version"
diff --git a/plugins/main/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt b/plugins/main/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt
deleted file mode 100644
index 7ecec67fe9..0000000000
--- a/plugins/main/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt
+++ /dev/null
@@ -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
- }
-}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/androidaps/ProfileStoreObject.kt b/plugins/main/src/test/java/info/nightscout/androidaps/ProfileStoreObject.kt
deleted file mode 100644
index e4040d0369..0000000000
--- a/plugins/main/src/test/java/info/nightscout/androidaps/ProfileStoreObject.kt
+++ /dev/null
@@ -1,107 +0,0 @@
-package info.nightscout.androidaps
-
-import androidx.collection.ArrayMap
-import dagger.android.HasAndroidInjector
-import info.nightscout.core.extensions.pureProfileFromJson
-import info.nightscout.core.profile.ProfileSealed
-import info.nightscout.interfaces.Config
-import info.nightscout.interfaces.plugin.ActivePlugin
-import info.nightscout.interfaces.profile.ProfileStore
-import info.nightscout.interfaces.profile.PureProfile
-import info.nightscout.interfaces.utils.HardLimits
-import info.nightscout.interfaces.utils.JsonHelper
-import info.nightscout.rx.bus.RxBus
-import info.nightscout.rx.logging.AAPSLogger
-import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.utils.DateUtil
-import org.json.JSONException
-import org.json.JSONObject
-import javax.inject.Inject
-
-class ProfileStoreObject(val injector: HasAndroidInjector, override val data: JSONObject, val dateUtil: DateUtil) : ProfileStore {
-
- @Inject lateinit var aapsLogger: AAPSLogger
- @Inject lateinit var activePlugin: ActivePlugin
- @Inject lateinit var config: Config
- @Inject lateinit var rh: ResourceHelper
- @Inject lateinit var rxBus: RxBus
- @Inject lateinit var hardLimits: HardLimits
-
- init {
- injector.androidInjector().inject(this)
- }
-
- private val cachedObjects = ArrayMap()
-
- private fun storeUnits(): String? = JsonHelper.safeGetStringAllowNull(data, "units", null)
-
- private fun getStore(): JSONObject? {
- try {
- if (data.has("store")) return data.getJSONObject("store")
- } catch (e: JSONException) {
- aapsLogger.error("Unhandled exception", e)
- }
- return null
- }
-
- override fun getStartDate(): Long {
- val iso = JsonHelper.safeGetString(data, "startDate") ?: return 0
- return try {
- dateUtil.fromISODateString(iso)
- } catch (e: Exception) {
- 0
- }
- }
-
- override fun getDefaultProfile(): PureProfile? = getDefaultProfileName()?.let { getSpecificProfile(it) }
- override fun getDefaultProfileJson(): JSONObject? = getDefaultProfileName()?.let { getSpecificProfileJson(it) }
-
- override fun getDefaultProfileName(): String? {
- val defaultProfileName = data.optString("defaultProfile")
- return if (defaultProfileName.isNotEmpty()) getStore()?.has(defaultProfileName)?.let { defaultProfileName } else null
- }
-
- override fun getProfileList(): ArrayList {
- val ret = ArrayList()
- getStore()?.keys()?.let { keys ->
- while (keys.hasNext()) {
- val profileName = keys.next() as String
- ret.add(profileName)
- }
- }
- return ret
- }
-
- @Synchronized
- override fun getSpecificProfile(profileName: String): PureProfile? {
- var profile: PureProfile? = null
- val units = JsonHelper.safeGetStringAllowNull(data, "units", storeUnits())
- getStore()?.let { store ->
- if (store.has(profileName)) {
- profile = cachedObjects[profileName]
- if (profile == null) {
- JsonHelper.safeGetJSONObject(store, profileName, null)?.let { profileObject ->
- profile = pureProfileFromJson(profileObject, dateUtil, units)
- profile?.let { cachedObjects[profileName] = profile }
- }
- }
- }
- }
- return profile
- }
-
- private fun getSpecificProfileJson(profileName: String): JSONObject? {
- getStore()?.let { store ->
- if (store.has(profileName))
- return JsonHelper.safeGetJSONObject(store, profileName, null)
- }
- return null
- }
-
- override val allProfilesValid: Boolean
- get() = getProfileList()
- .asSequence()
- .map { profileName -> getSpecificProfile(profileName.toString()) }
- .map { pureProfile -> pureProfile?.let { ProfileSealed.Pure(pureProfile).isValid("allProfilesValid", activePlugin.activePump, config, rh, rxBus, hardLimits, false) } }
- .all { it?.isValid == true }
-}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/plugins/main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt
deleted file mode 100644
index fa210907ca..0000000000
--- a/plugins/main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt
+++ /dev/null
@@ -1,182 +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.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.interfaces.utils.HardLimits
-import info.nightscout.rx.bus.RxBus
-import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
-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
- @Mock lateinit var sp: SP
-
- lateinit var dateUtil: DateUtil
- lateinit var hardLimits: HardLimits
- 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)
- hardLimits = HardLimitsMock(sp, rh)
- 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(0)
- val arg1 = invocation.getArgument(1)
- String.format(rh.gs(string), arg1)
- }.`when`(rh).gs(anyInt(), anyInt())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- String.format(rh.gs(string), arg1)
- }.`when`(rh).gs(anyInt(), anyDouble())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- String.format(rh.gs(string), arg1)
- }.`when`(rh).gs(anyInt(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyString(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyString(), anyInt())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyDouble(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyDouble(), anyInt())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyInt(), anyInt())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- String.format(rh.gs(string), arg1, arg2)
- }.`when`(rh).gs(anyInt(), anyInt(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- val arg3 = invocation.getArgument(3)
- String.format(rh.gs(string), arg1, arg2, arg3)
- }.`when`(rh).gs(anyInt(), anyInt(), anyInt(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- val arg3 = invocation.getArgument(3)
- String.format(rh.gs(string), arg1, arg2, arg3)
- }.`when`(rh).gs(anyInt(), anyInt(), anyString(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- val arg3 = invocation.getArgument(3)
- String.format(rh.gs(string), arg1, arg2, arg3)
- }.`when`(rh).gs(anyInt(), anyDouble(), anyInt(), anyString())
-
- Mockito.doAnswer { invocation: InvocationOnMock ->
- val string = invocation.getArgument(0)
- val arg1 = invocation.getArgument(1)
- val arg2 = invocation.getArgument(2)
- val arg3 = invocation.getArgument(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)
- }
-}
diff --git a/plugins/main/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt b/plugins/main/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt
deleted file mode 100644
index b3cdd8a6f8..0000000000
--- a/plugins/main/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package info.nightscout.androidaps
-
-import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.annotations.OpenForTesting
-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")
-@OpenForTesting
-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) {}
-}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/BolusExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/BolusExtensionKtTest.kt
index f5c14a0cbf..a2f9579ebb 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/BolusExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/BolusExtensionKtTest.kt
@@ -1,13 +1,12 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.database.entities.Bolus
import info.nightscout.insulin.InsulinLyumjevPlugin
import info.nightscout.interfaces.insulin.Insulin
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.ui.UiInteraction
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -16,13 +15,11 @@ import org.mockito.Mockito
class BolusExtensionKtTest : TestBaseWithProfile() {
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var profileFunctions: ProfileFunction
@Mock lateinit var uiInteraction: UiInteraction
private lateinit var insulin: Insulin
- private val now = 1000000L
private val dia = 7.0
@BeforeEach
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/ExtendedBolusExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/ExtendedBolusExtensionKtTest.kt
index c86665eaaa..1b15668892 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/ExtendedBolusExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/ExtendedBolusExtensionKtTest.kt
@@ -1,16 +1,15 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.database.entities.ExtendedBolus
import info.nightscout.database.entities.TemporaryBasal
import info.nightscout.insulin.InsulinLyumjevPlugin
import info.nightscout.interfaces.aps.AutosensResult
import info.nightscout.interfaces.aps.SMBDefaults
import info.nightscout.interfaces.insulin.Insulin
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.ui.UiInteraction
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -19,13 +18,11 @@ import org.mockito.Mockito
class ExtendedBolusExtensionKtTest : TestBaseWithProfile() {
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var profileFunctions: ProfileFunction
@Mock lateinit var uiInteraction: UiInteraction
private lateinit var insulin: Insulin
- private val now = 1000000L
private val dia = 7.0
@BeforeEach
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/GlucoseValueExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/GlucoseValueExtensionKtTest.kt
index f70484c71a..5aab6e98ee 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/GlucoseValueExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/GlucoseValueExtensionKtTest.kt
@@ -1,10 +1,10 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.core.main.R
import info.nightscout.database.entities.GlucoseValue
import info.nightscout.interfaces.GlucoseUnit
import info.nightscout.interfaces.iob.InMemoryGlucoseValue
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryBasalExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryBasalExtensionKtTest.kt
index 517f9926eb..e74f1c0a8d 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryBasalExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryBasalExtensionKtTest.kt
@@ -1,15 +1,14 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.database.entities.TemporaryBasal
import info.nightscout.insulin.InsulinLyumjevPlugin
import info.nightscout.interfaces.aps.AutosensResult
import info.nightscout.interfaces.aps.SMBDefaults
import info.nightscout.interfaces.insulin.Insulin
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.ui.UiInteraction
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -18,13 +17,11 @@ import org.mockito.Mockito
class TemporaryBasalExtensionKtTest : TestBaseWithProfile() {
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var profileFunctions: ProfileFunction
@Mock lateinit var uiInteraction: UiInteraction
private lateinit var insulin: Insulin
- private val now = 1000000L
private val dia = 7.0
@BeforeEach
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryTargetExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryTargetExtensionKtTest.kt
index b8ee3884e1..c3d14454ad 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryTargetExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/TemporaryTargetExtensionKtTest.kt
@@ -1,8 +1,8 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.database.entities.TemporaryTarget
import info.nightscout.interfaces.GlucoseUnit
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
diff --git a/plugins/main/src/test/java/info/nightscout/core/extensions/TherapyEventExtensionKtTest.kt b/plugins/main/src/test/java/info/nightscout/core/extensions/TherapyEventExtensionKtTest.kt
index c9e4b43e99..e8e0346eae 100644
--- a/plugins/main/src/test/java/info/nightscout/core/extensions/TherapyEventExtensionKtTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/core/extensions/TherapyEventExtensionKtTest.kt
@@ -1,17 +1,14 @@
package info.nightscout.core.extensions
-import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.database.entities.TherapyEvent
import info.nightscout.database.entities.embedments.InterfaceIDs
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBaseWithProfile
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.mockito.Mockito
class TherapyEventExtensionKtTest : TestBaseWithProfile() {
-
- private val now = 1000000L
-
@Test
fun isOlderThan() {
val therapyEvent = TherapyEvent(
diff --git a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/AuthRequestTest.kt b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/AuthRequestTest.kt
index 398ab06392..dd78ed0f2f 100644
--- a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/AuthRequestTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/AuthRequestTest.kt
@@ -2,7 +2,6 @@ package info.nightscout.plugins.general.smsCommunicator
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBase
import info.nightscout.interfaces.Constants
import info.nightscout.interfaces.smsCommunicator.Sms
import info.nightscout.interfaces.smsCommunicator.SmsCommunicator
@@ -12,7 +11,8 @@ import info.nightscout.plugins.general.smsCommunicator.otp.OneTimePasswordValida
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T
-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.Test
import org.mockito.Mock
@@ -61,26 +61,26 @@ class AuthRequestTest : TestBase() {
// Check if SMS requesting code is sent
var authRequest = AuthRequest(injector, requester, "Request text", "ABC", action)
- Assert.assertEquals(sentSms!!.phoneNumber, "aNumber")
- Assert.assertEquals(sentSms!!.text, "Request text")
+ Assertions.assertEquals(sentSms!!.phoneNumber, "aNumber")
+ Assertions.assertEquals(sentSms!!.text, "Request text")
// wrong reply
actionCalled = false
authRequest.action("EFG")
- Assert.assertEquals(sentSms!!.phoneNumber, "aNumber")
- Assert.assertEquals(sentSms!!.text, "Wrong code. Command cancelled.")
- Assert.assertFalse(actionCalled)
+ Assertions.assertEquals(sentSms!!.phoneNumber, "aNumber")
+ Assertions.assertEquals(sentSms!!.text, "Wrong code. Command cancelled.")
+ Assertions.assertFalse(actionCalled)
// correct reply
authRequest = AuthRequest(injector, requester, "Request text", "ABC", action)
actionCalled = false
`when`(otp.checkOTP(anyObject())).thenReturn(OneTimePasswordValidationResult.OK)
authRequest.action("ABC")
- Assert.assertTrue(actionCalled)
+ Assertions.assertTrue(actionCalled)
// second time action should not be called
actionCalled = false
authRequest.action("ABC")
- Assert.assertFalse(actionCalled)
+ Assertions.assertFalse(actionCalled)
// test timed out message
val now: Long = 10000
@@ -89,6 +89,6 @@ class AuthRequestTest : TestBase() {
actionCalled = false
`when`(dateUtil.now()).thenReturn(now + T.mins(Constants.SMS_CONFIRM_TIMEOUT).msecs() + 1)
authRequest.action("ABC")
- Assert.assertFalse(actionCalled)
+ Assertions.assertFalse(actionCalled)
}
}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsActionTest.kt b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsActionTest.kt
index a2c8f6d539..d4c39f1198 100644
--- a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsActionTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsActionTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.plugins.general.smsCommunicator
-import org.junit.Assert
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
class SmsActionTest {
@@ -13,49 +13,49 @@ class SmsActionTest {
}
}
smsAction.run()
- Assert.assertEquals(result, "A")
+ Assertions.assertEquals(result, "A")
smsAction = object : SmsAction(false, 1.0) {
override fun run() {
result = "B"
}
}
smsAction.run()
- Assert.assertEquals(result, "B")
- Assert.assertEquals(smsAction.aDouble(), 1.0, 0.000001)
+ Assertions.assertEquals(result, "B")
+ Assertions.assertEquals(smsAction.aDouble(), 1.0, 0.000001)
smsAction = object : SmsAction(false, 1.0, 2) {
override fun run() {
result = "C"
}
}
smsAction.run()
- Assert.assertEquals(result, "C")
- Assert.assertEquals(smsAction.aDouble(), 1.0, 0.000001)
- Assert.assertEquals(smsAction.secondInteger().toLong(), 2)
+ Assertions.assertEquals(result, "C")
+ Assertions.assertEquals(smsAction.aDouble(), 1.0, 0.000001)
+ Assertions.assertEquals(smsAction.secondInteger().toLong(), 2)
smsAction = object : SmsAction(false, "aString", 3) {
override fun run() {
result = "D"
}
}
smsAction.run()
- Assert.assertEquals(result, "D")
- Assert.assertEquals(smsAction.aString(), "aString")
- Assert.assertEquals(smsAction.secondInteger().toLong(), 3)
+ Assertions.assertEquals(result, "D")
+ Assertions.assertEquals(smsAction.aString(), "aString")
+ Assertions.assertEquals(smsAction.secondInteger().toLong(), 3)
smsAction = object : SmsAction(false, 4) {
override fun run() {
result = "E"
}
}
smsAction.run()
- Assert.assertEquals(result, "E")
- Assert.assertEquals(smsAction.anInteger().toLong(), 4)
+ Assertions.assertEquals(result, "E")
+ Assertions.assertEquals(smsAction.anInteger().toLong(), 4)
smsAction = object : SmsAction(false, 5, 6) {
override fun run() {
result = "F"
}
}
smsAction.run()
- Assert.assertEquals(result, "F")
- Assert.assertEquals(smsAction.anInteger().toLong(), 5)
- Assert.assertEquals(smsAction.secondInteger().toLong(), 6)
+ Assertions.assertEquals(result, "F")
+ Assertions.assertEquals(smsAction.anInteger().toLong(), 5)
+ Assertions.assertEquals(smsAction.secondInteger().toLong(), 6)
}
}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt
index 0306e1734f..283f0d0975 100644
--- a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt
@@ -3,8 +3,6 @@ package info.nightscout.plugins.general.smsCommunicator
import android.telephony.SmsManager
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBaseWithProfile
-import info.nightscout.androidaps.TestPumpPlugin
import info.nightscout.database.entities.GlucoseValue
import info.nightscout.database.impl.AppRepository
import info.nightscout.database.impl.transactions.CancelCurrentOfflineEventIfAnyTransaction
@@ -24,12 +22,9 @@ import info.nightscout.interfaces.iob.CobInfo
import info.nightscout.interfaces.iob.InMemoryGlucoseValue
import info.nightscout.interfaces.iob.IobTotal
import info.nightscout.interfaces.logging.UserEntryLogger
-import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.plugin.PluginType
import info.nightscout.interfaces.profile.ProfileSource
import info.nightscout.interfaces.pump.PumpEnactResult
-import info.nightscout.interfaces.pump.defs.PumpDescription
-import info.nightscout.interfaces.pump.defs.PumpType
import info.nightscout.interfaces.queue.Callback
import info.nightscout.interfaces.queue.CommandQueue
import info.nightscout.interfaces.smsCommunicator.Sms
@@ -38,6 +33,7 @@ import info.nightscout.plugins.general.smsCommunicator.otp.OneTimePassword
import info.nightscout.plugins.general.smsCommunicator.otp.OneTimePasswordValidationResult
import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBaseWithProfile
import io.reactivex.rxjava3.core.Single
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
@@ -54,10 +50,8 @@ import org.mockito.invocation.InvocationOnMock
class SmsCommunicatorPluginTest : TestBaseWithProfile() {
@Mock lateinit var constraintChecker: Constraints
- @Mock lateinit var activePlugin: ActivePlugin
@Mock lateinit var commandQueue: CommandQueue
@Mock lateinit var loop: Loop
- @Mock lateinit var testPumpPlugin: TestPumpPlugin
@Mock lateinit var profileSource: ProfileSource
@Mock lateinit var otp: OneTimePassword
@Mock lateinit var xDripBroadcast: XDripBroadcast
@@ -159,13 +153,6 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
null
}.`when`(commandQueue).extendedBolus(ArgumentMatchers.anyDouble(), ArgumentMatchers.anyInt(), ArgumentMatchers.any(Callback::class.java))
- `when`(activePlugin.activePump).thenReturn(testPumpPlugin)
-
- `when`(testPumpPlugin.shortStatus(ArgumentMatchers.anyBoolean())).thenReturn("Virtual Pump")
- `when`(testPumpPlugin.isSuspended()).thenReturn(false)
- `when`(testPumpPlugin.pumpDescription).thenReturn(PumpDescription())
- `when`(testPumpPlugin.model()).thenReturn(PumpType.GENERIC_AAPS)
-
`when`(iobCobCalculator.calculateIobFromBolus()).thenReturn(IobTotal(0))
`when`(iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended()).thenReturn(IobTotal(0))
@@ -1011,13 +998,13 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
//BOLUS 1 (Suspended pump)
smsCommunicatorPlugin.lastRemoteBolusTime = 0
- `when`(testPumpPlugin.isSuspended()).thenReturn(true)
+ testPumpPlugin.pumpSuspended = true
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "BOLUS 1")
smsCommunicatorPlugin.processSms(sms)
Assertions.assertEquals("BOLUS 1", smsCommunicatorPlugin.messages[0].text)
Assertions.assertEquals("Pump suspended", smsCommunicatorPlugin.messages[1].text)
- `when`(testPumpPlugin.isSuspended()).thenReturn(false)
+ testPumpPlugin.pumpSuspended = false
//BOLUS 1 a
smsCommunicatorPlugin.messages = ArrayList()
diff --git a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsTest.kt b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsTest.kt
index 5c6300c91c..550fee778f 100644
--- a/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsTest.kt
@@ -1,9 +1,9 @@
package info.nightscout.plugins.general.smsCommunicator
import android.telephony.SmsMessage
-import info.nightscout.androidaps.TestBase
import info.nightscout.interfaces.smsCommunicator.Sms
-import org.junit.Assert
+import info.nightscout.sharedtests.TestBase
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.mockito.Mockito
import org.mockito.Mockito.`when`
@@ -15,32 +15,32 @@ class SmsTest : TestBase() {
`when`(smsMessage.originatingAddress).thenReturn("aNumber")
`when`(smsMessage.messageBody).thenReturn("aBody")
var sms = Sms(smsMessage)
- Assert.assertEquals(sms.phoneNumber, "aNumber")
- Assert.assertEquals(sms.text, "aBody")
- Assert.assertTrue(sms.received)
+ Assertions.assertEquals(sms.phoneNumber, "aNumber")
+ Assertions.assertEquals(sms.text, "aBody")
+ Assertions.assertTrue(sms.received)
sms = Sms("aNumber", "aBody")
- Assert.assertEquals(sms.phoneNumber, "aNumber")
- Assert.assertEquals(sms.text, "aBody")
- Assert.assertTrue(sms.sent)
+ Assertions.assertEquals(sms.phoneNumber, "aNumber")
+ Assertions.assertEquals(sms.text, "aBody")
+ Assertions.assertTrue(sms.sent)
sms = Sms("aNumber", "U")
- Assert.assertEquals(sms.phoneNumber, "aNumber")
- Assert.assertEquals(sms.text, "U")
- Assert.assertTrue(sms.sent)
- Assert.assertEquals(sms.toString(), "SMS from aNumber: U")
+ Assertions.assertEquals(sms.phoneNumber, "aNumber")
+ Assertions.assertEquals(sms.text, "U")
+ Assertions.assertTrue(sms.sent)
+ Assertions.assertEquals(sms.toString(), "SMS from aNumber: U")
// copy constructor #1
val sms2 = Sms(sms)
- Assert.assertEquals(sms2.phoneNumber, "aNumber")
- Assert.assertEquals(sms2.text, "U")
- Assert.assertTrue(sms2.sent)
- Assert.assertEquals(sms2.toString(), "SMS from aNumber: U")
+ Assertions.assertEquals(sms2.phoneNumber, "aNumber")
+ Assertions.assertEquals(sms2.text, "U")
+ Assertions.assertTrue(sms2.sent)
+ Assertions.assertEquals(sms2.toString(), "SMS from aNumber: U")
// copy constructor #2
val sms3 = Sms(sms, "different")
- Assert.assertEquals(sms3.phoneNumber, "different")
- Assert.assertEquals(sms3.text, "U")
- Assert.assertTrue(sms3.sent)
- Assert.assertEquals(sms3.toString(), "SMS from different: U")
+ Assertions.assertEquals(sms3.phoneNumber, "different")
+ Assertions.assertEquals(sms3.text, "U")
+ Assertions.assertTrue(sms3.sent)
+ Assertions.assertEquals(sms3.toString(), "SMS from different: U")
}
}
\ No newline at end of file
diff --git a/plugins/main/src/test/java/info/nightscout/plugins/iob/AutosensDataStoreTest.kt b/plugins/main/src/test/java/info/nightscout/plugins/iob/AutosensDataStoreTest.kt
index 173f8d50a4..56f3215545 100644
--- a/plugins/main/src/test/java/info/nightscout/plugins/iob/AutosensDataStoreTest.kt
+++ b/plugins/main/src/test/java/info/nightscout/plugins/iob/AutosensDataStoreTest.kt
@@ -4,7 +4,6 @@ import android.content.Context
import androidx.collection.LongSparseArray
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBase
import info.nightscout.database.entities.GlucoseValue
import info.nightscout.interfaces.aps.AutosensData
import info.nightscout.interfaces.profile.ProfileFunction
@@ -14,6 +13,7 @@ import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T
+import info.nightscout.sharedtests.TestBase
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
diff --git a/settings.gradle b/settings.gradle
index 24a3acf745..9acd60359b 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,6 +2,7 @@ include ':app'
include ':wear'
include ':app-wear-shared:shared'
include ':app-wear-shared:shared-impl'
+include ':app-wear-shared:shared-tests'
include ':core:main'
include ':core:graphview'
include ':core:graph'