kotlin-allopen, fixed tests
This commit is contained in:
parent
0af345e340
commit
4761a1a5ba
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -11,8 +11,6 @@ build/
|
|||
.idea/*
|
||||
!.idea/codeStyles/
|
||||
full/
|
||||
debug/
|
||||
release/
|
||||
app/com.crashlytics.settings.json
|
||||
app/session_analytics.tap
|
||||
.project
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-allopen'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.hiya.jacoco-android'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
|
@ -13,6 +14,11 @@ repositories {
|
|||
google()
|
||||
}
|
||||
|
||||
allOpen {
|
||||
// allows mocking for classes w/o directly opening them for release builds
|
||||
annotation 'info.nightscout.androidaps.annotations.OpenForTesting'
|
||||
}
|
||||
|
||||
def generateGitBuild = { ->
|
||||
StringBuilder stringBuilder = new StringBuilder()
|
||||
try {
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.core.app.NotificationCompat
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.*
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
|
@ -65,8 +66,9 @@ import javax.inject.Inject
|
|||
import javax.inject.Singleton
|
||||
import kotlin.math.abs
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class LoopPlugin @Inject constructor(
|
||||
class LoopPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
private val aapsSchedulers: AapsSchedulers,
|
||||
|
|
|
@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.aps.openAPSAMA
|
|||
import android.content.Context
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.ValueWrapper
|
||||
|
@ -27,8 +28,9 @@ import org.json.JSONException
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class OpenAPSAMAPlugin @Inject constructor(
|
||||
class OpenAPSAMAPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
private val rxBus: RxBusWrapper,
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.preference.PreferenceFragmentCompat
|
|||
import androidx.preference.SwitchPreference
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.ValueWrapper
|
||||
import info.nightscout.androidaps.extensions.target
|
||||
|
@ -27,8 +28,9 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class OpenAPSSMBPlugin @Inject constructor(
|
||||
class OpenAPSSMBPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
private val rxBus: RxBusWrapper,
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.os.StatFs
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
import info.nightscout.androidaps.interfaces.Constraints
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
|
@ -20,8 +21,9 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class StorageConstraintPlugin @Inject constructor(
|
||||
class StorageConstraintPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
resourceHelper: ResourceHelper,
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.collection.LongSparseArray
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.data.IobTotal
|
||||
import info.nightscout.androidaps.data.MealData
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
|
@ -42,8 +43,9 @@ import kotlin.math.floor
|
|||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class IobCobCalculatorPlugin @Inject constructor(
|
||||
class IobCobCalculatorPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
private val aapsSchedulers: AapsSchedulers,
|
||||
|
|
|
@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.sensitivity
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.TherapyEvent
|
||||
import info.nightscout.androidaps.extensions.isEPSEvent5minBack
|
||||
|
@ -27,8 +28,9 @@ import javax.inject.Inject
|
|||
import javax.inject.Singleton
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class SensitivityAAPSPlugin @Inject constructor(
|
||||
class SensitivityAAPSPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
resourceHelper: ResourceHelper,
|
||||
|
|
|
@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.sensitivity
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.TherapyEvent
|
||||
import info.nightscout.androidaps.extensions.isEPSEvent5minBack
|
||||
|
@ -28,8 +29,9 @@ import javax.inject.Inject
|
|||
import javax.inject.Singleton
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class SensitivityOref1Plugin @Inject constructor(
|
||||
class SensitivityOref1Plugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
resourceHelper: ResourceHelper,
|
||||
|
|
|
@ -4,6 +4,7 @@ import androidx.collection.LongSparseArray
|
|||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.TherapyEvent
|
||||
import info.nightscout.androidaps.extensions.isEPSEvent5minBack
|
||||
|
@ -26,8 +27,9 @@ import javax.inject.Inject
|
|||
import javax.inject.Singleton
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class SensitivityWeightedAveragePlugin @Inject constructor(
|
||||
class SensitivityWeightedAveragePlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
aapsLogger: AAPSLogger,
|
||||
resourceHelper: ResourceHelper,
|
||||
|
|
|
@ -9,6 +9,7 @@ import dagger.android.HasAndroidInjector
|
|||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.activities.BolusProgressHelperActivity
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
|
@ -47,8 +48,9 @@ import java.util.*
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class CommandQueue @Inject constructor(
|
||||
class CommandQueue @Inject constructor(
|
||||
private val injector: HasAndroidInjector,
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val rxBus: RxBusWrapper,
|
||||
|
|
|
@ -49,6 +49,7 @@ buildscript {
|
|||
// in the individual module build.gradle files
|
||||
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
|
||||
classpath 'com.hiya:jacoco-android:0.2'
|
||||
modules {
|
||||
module("org.jetbrains.trove4j:trove4j") {
|
||||
|
|
|
@ -2,6 +2,7 @@ apply plugin: 'com.android.library'
|
|||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
apply plugin: 'kotlin-allopen'
|
||||
apply plugin: 'com.hiya.jacoco-android'
|
||||
|
||||
apply from: 'core_dependencies.gradle'
|
||||
|
@ -14,3 +15,7 @@ dependencies {
|
|||
implementation project(':database')
|
||||
}
|
||||
|
||||
allOpen {
|
||||
// allows mocking for classes w/o directly opening them for release builds
|
||||
annotation 'info.nightscout.androidaps.annotations.OpenForTesting'
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package info.nightscout.androidaps.annotations
|
||||
|
||||
/**
|
||||
* This is the actual annotation that makes the class open. Don't use it directly, only through [OpenForTesting]
|
||||
* which has a NOOP replacement in production.
|
||||
*/
|
||||
@Target(AnnotationTarget.ANNOTATION_CLASS)
|
||||
annotation class OpenClass
|
||||
|
||||
/**
|
||||
* Annotate a class with [OpenForTesting] if it should be extendable for testing.
|
||||
*/
|
||||
@OpenClass
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
annotation class OpenForTesting
|
|
@ -1,6 +1,9 @@
|
|||
package info.nightscout.androidaps.interfaces
|
||||
|
||||
open class PluginDescription {
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
|
||||
@OpenForTesting
|
||||
class PluginDescription {
|
||||
|
||||
var mainType = PluginType.GENERAL
|
||||
var fragmentClass: String? = null
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.bus
|
||||
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.events.Event
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import io.reactivex.Observable
|
||||
|
@ -7,8 +8,9 @@ import io.reactivex.subjects.PublishSubject
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class RxBusWrapper @Inject constructor(
|
||||
class RxBusWrapper @Inject constructor(
|
||||
val aapsSchedulers: AapsSchedulers
|
||||
) {
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package info.nightscout.androidaps.receivers
|
||||
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import info.nightscout.androidaps.events.EventChargingState
|
||||
|
@ -8,6 +9,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
class ReceiverStatusStore @Inject constructor(val context: Context, val rxBus: RxBusWrapper) {
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package info.nightscout.androidaps.utils
|
|||
|
||||
import android.content.Context
|
||||
import androidx.collection.LongSparseArray
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.core.R
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import org.joda.time.DateTime
|
||||
|
@ -26,8 +27,9 @@ import kotlin.math.abs
|
|||
* The Class DateUtil. A simple wrapper around SimpleDateFormat to ease the handling of iso date string <-> date obj
|
||||
* with TZ
|
||||
*/
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class DateUtil @Inject constructor(private val context: Context) {
|
||||
class DateUtil @Inject constructor(private val context: Context) {
|
||||
|
||||
/**
|
||||
* The date format in iso.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package info.nightscout.androidaps.utils
|
||||
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.core.R
|
||||
import info.nightscout.androidaps.interfaces.GlucoseUnit
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
|
@ -9,8 +10,9 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class DefaultValueHelper @Inject constructor(
|
||||
class DefaultValueHelper @Inject constructor(
|
||||
private val sp: SP,
|
||||
private val profileFunction: ProfileFunction
|
||||
) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.google.firebase.analytics.FirebaseAnalytics
|
|||
import com.google.firebase.analytics.ktx.analytics
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import info.nightscout.androidaps.annotations.OpenForTesting
|
||||
import info.nightscout.androidaps.core.R
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
|
@ -17,8 +18,9 @@ import javax.inject.Singleton
|
|||
* to disable them and make calls from a potentially invalid singleton reference. This wrapper
|
||||
* emulates the methods but ignores the request if the instance is null or invalid.
|
||||
*/
|
||||
@OpenForTesting
|
||||
@Singleton
|
||||
open class FabricPrivacy @Inject constructor(
|
||||
class FabricPrivacy @Inject constructor(
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val sp: SP
|
||||
) {
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package info.nightscout.androidaps.annotations
|
||||
|
||||
/**
|
||||
* Annotate a class with [OpenForTesting] if it should be extendable for testing.
|
||||
* In production the class remains final.
|
||||
*/
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
annotation class OpenForTesting
|
|
@ -1,9 +1,11 @@
|
|||
package info.nightscout.androidaps.plugins.constraints.versionChecker
|
||||
package info.nightscout.androidaps.plugins.contraints.versionChecker
|
||||
|
||||
import android.content.Context
|
||||
import info.nightscout.androidaps.utils.buildHelper.ConfigImpl
|
||||
import info.nightscout.androidaps.TestBase
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils
|
||||
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import org.junit.Assert.assertArrayEquals
|
||||
|
@ -14,17 +16,18 @@ import org.mockito.Mock
|
|||
|
||||
class VersionCheckerUtilsKtTest : TestBase() {
|
||||
|
||||
lateinit var versionCheckerUtils: VersionCheckerUtils
|
||||
private lateinit var versionCheckerUtils: VersionCheckerUtils
|
||||
|
||||
@Mock lateinit var sp: SP
|
||||
@Mock lateinit var resourceHelper: ResourceHelper
|
||||
@Mock lateinit var context: Context
|
||||
val config = ConfigImpl()
|
||||
@Mock lateinit var receiverStatusStore: ReceiverStatusStore
|
||||
@Mock lateinit var config: Config
|
||||
|
||||
private val rxBus = RxBusWrapper(aapsSchedulers)
|
||||
|
||||
@Before fun setup() {
|
||||
versionCheckerUtils = VersionCheckerUtils(aapsLogger, sp, resourceHelper, rxBus, config, context)
|
||||
versionCheckerUtils = VersionCheckerUtils(aapsLogger, sp, resourceHelper, rxBus, config, context, receiverStatusStore)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -124,6 +127,7 @@ class VersionCheckerUtilsKtTest : TestBase() {
|
|||
}
|
||||
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@Test
|
||||
fun findVersionMatchesRegularVersion() {
|
||||
val buildGradle = """blabla
|
Loading…
Reference in a new issue