Skip to content

Commit

Permalink
shared-tests #3
Browse files Browse the repository at this point in the history
  • Loading branch information
MilosKozak committed Sep 3, 2023
1 parent bfb343f commit 24c2f47
Show file tree
Hide file tree
Showing 65 changed files with 377 additions and 283 deletions.
@@ -1,7 +1,7 @@
package info.nightscout.sharedtests

import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.pump.DetailedBolusInfo
import info.nightscout.interfaces.pump.Pump
Expand Down
@@ -1,4 +1,4 @@
package info.nightscout.androidaps.annotations
package info.nightscout.annotations

/**
* This is the actual annotation that makes the class open. Don't use it directly, only through [OpenForTesting]
Expand Down
@@ -1,6 +1,6 @@
package info.nightscout.rx.bus

import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.events.Event
import info.nightscout.rx.logging.AAPSLogger
Expand Down
Expand Up @@ -4,10 +4,10 @@ import android.content.Context
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.collection.LongSparseArray
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.annotations.OpenForTesting
import info.nightscout.shared.R
import info.nightscout.shared.SafeParse
import info.nightscout.shared.interfaces.ResourceHelper
import org.apache.commons.lang3.time.DateUtils.isSameDay
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
Expand Down Expand Up @@ -119,10 +119,10 @@ class DateUtil @Inject constructor(private val context: Context) {
val beginOfToday = beginOfDay(now())
return if (mills < now()) // Past
when {
mills > beginOfToday -> rh.gs(R.string.today)
mills > beginOfToday -> rh.gs(R.string.today)
mills > beginOfToday - T.days(1).msecs() -> rh.gs(R.string.yesterday)
mills > beginOfToday - T.days(7).msecs() -> dayAgo(mills, rh, true)
else -> day
else -> day
}
else // Future
when {
Expand Down
@@ -1,4 +1,4 @@
package info.nightscout.androidaps.annotations
package info.nightscout.annotations

/**
* Annotate a class with [OpenForTesting] if it should be extendable for testing.
Expand Down

This file was deleted.

@@ -1,4 +1,4 @@
package info.nightscout.androidaps.utils.rx
package info.nightscout.rx

import io.reactivex.rxjava3.android.plugins.RxAndroidPlugins
import io.reactivex.rxjava3.core.Scheduler
Expand Down
@@ -1,14 +1,18 @@
package info.nightscout.rx.weardata

import info.nightscout.androidaps.TestBase
import kotlinx.serialization.ExperimentalSerializationApi
import org.junit.jupiter.api.Assertions

import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.junit.jupiter.MockitoSettings
import org.mockito.quality.Strictness

@ExperimentalSerializationApi
class EventDataTest : TestBase() {
@ExtendWith(MockitoExtension::class)
@MockitoSettings(strictness = Strictness.LENIENT)
class EventDataTest {

@BeforeEach
fun setUp() {
Expand Down Expand Up @@ -147,13 +151,13 @@ class EventDataTest : TestBase() {
EventData.TreatmentData(
arrayListOf(EventData.TreatmentData.TempBasal(1, 2.0, 3, 4.0, 5.0)),
arrayListOf(EventData.TreatmentData.Basal(1, 2, 3.0)),
arrayListOf(EventData.TreatmentData.Treatment(1, 2.0, 3.0, true, true)),
arrayListOf(EventData.TreatmentData.Treatment(1, 2.0, 3.0, true, isValid = true)),
arrayListOf(EventData.SingleBg(1, sgv = 2.0, high = 3.0, low = 4.0))
).let {
Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte()))
Assertions.assertEquals(it, EventData.deserialize(it.serialize()))
}
EventData.Preferences(1, true, true, 2, 3, 4.0, 5.0, 6.0, 7, 8).let {
EventData.Preferences(1, wearControl = true, true, 2, 3, 4.0, 5.0, 6.0, 7, 8).let {
Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte()))
Assertions.assertEquals(it, EventData.deserialize(it.serialize()))
}
Expand Down
@@ -1,112 +1,112 @@
package info.nightscout.shared

import org.junit.Assert.assertEquals
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test

@Suppress("SpellCheckingInspection")
class SafeParseTest {

@Test fun stringToDoubleTest() {
// correct values
assertEquals(0.1234, SafeParse.stringToDouble("0.1234"), 0.001)
assertEquals(0.1234, SafeParse.stringToDouble("0,1234"), 0.001)
assertEquals(0.5436564812, SafeParse.stringToDouble(".5436564812"), 0.001)
assertEquals(0.5436564812, SafeParse.stringToDouble(",5436564812"), 0.001)
assertEquals(1000500100900.0, SafeParse.stringToDouble("1000500100900"), 0.001)
assertEquals(42.0, SafeParse.stringToDouble("42"), 0.001)
Assertions.assertEquals(0.1234, SafeParse.stringToDouble("0.1234"), 0.001)
Assertions.assertEquals(0.1234, SafeParse.stringToDouble("0,1234"), 0.001)
Assertions.assertEquals(0.5436564812, SafeParse.stringToDouble(".5436564812"), 0.001)
Assertions.assertEquals(0.5436564812, SafeParse.stringToDouble(",5436564812"), 0.001)
Assertions.assertEquals(1000500100900.0, SafeParse.stringToDouble("1000500100900"), 0.001)
Assertions.assertEquals(42.0, SafeParse.stringToDouble("42"), 0.001)

// units or other extra values are not permitted
assertEquals(0.0, SafeParse.stringToDouble("12 U/h"), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble("12 U/h"), 0.001)

// strings are not parsable
assertEquals(0.0, SafeParse.stringToDouble("ala ma kota"), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble("ala ma kota"), 0.001)

// separator errors
assertEquals(0.0, SafeParse.stringToDouble("0.1234.5678"), 0.001)
assertEquals(0.0, SafeParse.stringToDouble("0,1234,5678"), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble("0.1234.5678"), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble("0,1234,5678"), 0.001)

// various emptiness
assertEquals(0.0, SafeParse.stringToDouble(""), 0.001)
assertEquals(0.0, SafeParse.stringToDouble(" "), 0.001)
assertEquals(0.0, SafeParse.stringToDouble("\n\r"), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble(""), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble(" "), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble("\n\r"), 0.001)
}

@Test fun stringToIntTest() {
// correct values
assertEquals(1052934, SafeParse.stringToInt("1052934"))
assertEquals(-42, SafeParse.stringToInt("-42"))
assertEquals(2147483647, SafeParse.stringToInt("2147483647"))
assertEquals(-2147483648, SafeParse.stringToInt("-2147483648"))
Assertions.assertEquals(1052934, SafeParse.stringToInt("1052934"))
Assertions.assertEquals(-42, SafeParse.stringToInt("-42"))
Assertions.assertEquals(2147483647, SafeParse.stringToInt("2147483647"))
Assertions.assertEquals(-2147483648, SafeParse.stringToInt("-2147483648"))

// outside Integer range
assertEquals(0, SafeParse.stringToInt("2147483648"))
assertEquals(0, SafeParse.stringToInt("-2147483649"))
Assertions.assertEquals(0, SafeParse.stringToInt("2147483648"))
Assertions.assertEquals(0, SafeParse.stringToInt("-2147483649"))

// units or other extra values are not permitted
assertEquals(0, SafeParse.stringToInt("12 U/h"))
assertEquals(0, SafeParse.stringToInt("0.1234"))
assertEquals(0, SafeParse.stringToInt("0,1234"))
assertEquals(0, SafeParse.stringToInt(".5436564812"))
assertEquals(0, SafeParse.stringToInt(",5436564812"))
assertEquals(0, SafeParse.stringToInt("42.1234"))
assertEquals(0, SafeParse.stringToInt("42,1234"))
assertEquals(0, SafeParse.stringToInt("3212.5436564812"))
assertEquals(0, SafeParse.stringToInt("3212,5436564812"))
assertEquals(0, SafeParse.stringToInt("1000500100900"))
Assertions.assertEquals(0, SafeParse.stringToInt("12 U/h"))
Assertions.assertEquals(0, SafeParse.stringToInt("0.1234"))
Assertions.assertEquals(0, SafeParse.stringToInt("0,1234"))
Assertions.assertEquals(0, SafeParse.stringToInt(".5436564812"))
Assertions.assertEquals(0, SafeParse.stringToInt(",5436564812"))
Assertions.assertEquals(0, SafeParse.stringToInt("42.1234"))
Assertions.assertEquals(0, SafeParse.stringToInt("42,1234"))
Assertions.assertEquals(0, SafeParse.stringToInt("3212.5436564812"))
Assertions.assertEquals(0, SafeParse.stringToInt("3212,5436564812"))
Assertions.assertEquals(0, SafeParse.stringToInt("1000500100900"))

// strings are not parsable
assertEquals(0, SafeParse.stringToInt("ala ma kota"))
Assertions.assertEquals(0, SafeParse.stringToInt("ala ma kota"))

// various emptiness
assertEquals(0, SafeParse.stringToInt(""))
assertEquals(0, SafeParse.stringToInt(" "))
assertEquals(0, SafeParse.stringToInt("\n\r"))
Assertions.assertEquals(0, SafeParse.stringToInt(""))
Assertions.assertEquals(0, SafeParse.stringToInt(" "))
Assertions.assertEquals(0, SafeParse.stringToInt("\n\r"))
}

@Test fun stringToLongTest() {
// correct values
assertEquals(1052934L, SafeParse.stringToLong("1052934"))
assertEquals(-42L, SafeParse.stringToLong("-42"))
assertEquals(2147483647L, SafeParse.stringToLong("2147483647"))
assertEquals(-2147483648L, SafeParse.stringToLong("-2147483648"))
assertEquals(1000500100900L, SafeParse.stringToLong("1000500100900"))
Assertions.assertEquals(1052934L, SafeParse.stringToLong("1052934"))
Assertions.assertEquals(-42L, SafeParse.stringToLong("-42"))
Assertions.assertEquals(2147483647L, SafeParse.stringToLong("2147483647"))
Assertions.assertEquals(-2147483648L, SafeParse.stringToLong("-2147483648"))
Assertions.assertEquals(1000500100900L, SafeParse.stringToLong("1000500100900"))

// outside Integer range
assertEquals(2147483648L, SafeParse.stringToLong("2147483648"))
assertEquals(-2147483649L, SafeParse.stringToLong("-2147483649"))
Assertions.assertEquals(2147483648L, SafeParse.stringToLong("2147483648"))
Assertions.assertEquals(-2147483649L, SafeParse.stringToLong("-2147483649"))

// units or other extra values are not permitted
assertEquals(0L, SafeParse.stringToLong("12 U/h"))
assertEquals(0L, SafeParse.stringToLong("0.1234"))
assertEquals(0L, SafeParse.stringToLong("0,1234"))
assertEquals(0L, SafeParse.stringToLong(".5436564812"))
assertEquals(0L, SafeParse.stringToLong(",5436564812"))
assertEquals(0L, SafeParse.stringToLong("42.1234"))
assertEquals(0L, SafeParse.stringToLong("42,1234"))
assertEquals(0L, SafeParse.stringToLong("3212.5436564812"))
assertEquals(0L, SafeParse.stringToLong("3212,5436564812"))
Assertions.assertEquals(0L, SafeParse.stringToLong("12 U/h"))
Assertions.assertEquals(0L, SafeParse.stringToLong("0.1234"))
Assertions.assertEquals(0L, SafeParse.stringToLong("0,1234"))
Assertions.assertEquals(0L, SafeParse.stringToLong(".5436564812"))
Assertions.assertEquals(0L, SafeParse.stringToLong(",5436564812"))
Assertions.assertEquals(0L, SafeParse.stringToLong("42.1234"))
Assertions.assertEquals(0L, SafeParse.stringToLong("42,1234"))
Assertions.assertEquals(0L, SafeParse.stringToLong("3212.5436564812"))
Assertions.assertEquals(0L, SafeParse.stringToLong("3212,5436564812"))

// strings are not parsable
assertEquals(0L, SafeParse.stringToLong("ala ma kota"))
Assertions.assertEquals(0L, SafeParse.stringToLong("ala ma kota"))

// various emptiness
assertEquals(0L, SafeParse.stringToLong(""))
assertEquals(0L, SafeParse.stringToLong(" "))
assertEquals(0L, SafeParse.stringToLong("\n\r"))
Assertions.assertEquals(0L, SafeParse.stringToLong(""))
Assertions.assertEquals(0L, SafeParse.stringToLong(" "))
Assertions.assertEquals(0L, SafeParse.stringToLong("\n\r"))
}

@Test
fun stringToDoubleNullTest() {
assertEquals(0.0, SafeParse.stringToDouble(null), 0.001)
Assertions.assertEquals(0.0, SafeParse.stringToDouble(null), 0.001)
}

@Test
fun stringToIntNullTest() {
assertEquals(0, SafeParse.stringToInt(null))
Assertions.assertEquals(0, SafeParse.stringToInt(null))
}

@Test
fun stringToLongNullTest() {
assertEquals(0L, SafeParse.stringToLong(null))
Assertions.assertEquals(0L, SafeParse.stringToLong(null))
}
}
2 changes: 1 addition & 1 deletion core/main/allopen_dependencies.gradle
@@ -1,4 +1,4 @@
allOpen {
// allows mocking for classes w/o directly opening them for release builds
annotation 'info.nightscout.androidaps.annotations.OpenForTesting'
annotation 'info.nightscout.annotations.OpenForTesting'
}
@@ -1,7 +1,7 @@
package info.nightscout.core.wizard

import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import info.nightscout.core.extensions.valueToUnits
import info.nightscout.core.iob.round
import info.nightscout.core.utils.MidnightUtils
Expand Down Expand Up @@ -38,9 +38,11 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec
// for mock
@OpenForTesting
class Time {

fun secondsFromMidnight(): Int = MidnightUtils.secondsFromMidnight()

}

var time = Time()

lateinit var storage: JSONObject
Expand Down Expand Up @@ -151,7 +153,26 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec
trend = true
}
val percentage = if (usePercentage() == DEFAULT) sp.getInt(info.nightscout.core.utils.R.string.key_boluswizard_percentage, 100) else percentage()
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, false, buttonText(), quickWizard = true) //tbc, ok if only quickwizard, but if other sources elsewhere use Sources.QuickWizard
return BolusWizard(injector).doCalc(
profile,
profileName,
tempTarget,
carbs(),
cob,
bg,
0.0,
percentage,
true,
useCOB() == YES,
bolusIOB,
basalIOB,
superBolus,
useTempTarget() == YES,
trend,
false,
buttonText(),
quickWizard = true
) //tbc, ok if only quickwizard, but if other sources elsewhere use Sources.QuickWizard
}

fun guid(): String = safeGetString(storage, "guid", "")
Expand Down
Expand Up @@ -5,7 +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.annotations.OpenForTesting
import info.nightscout.core.utils.R
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
Expand Down
Expand Up @@ -6,7 +6,7 @@ import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import org.json.JSONArray
import org.json.JSONObject
import javax.inject.Inject
Expand Down
@@ -1,6 +1,6 @@
package info.nightscout.implementation

import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import info.nightscout.interfaces.Constants
import info.nightscout.interfaces.GlucoseUnit
import info.nightscout.interfaces.profile.DefaultValueHelper
Expand Down
@@ -1,7 +1,7 @@
package info.nightscout.implementation

import android.content.Context
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.annotations.OpenForTesting
import info.nightscout.database.impl.AppRepository
import info.nightscout.database.impl.transactions.InsertTherapyEventAnnouncementTransaction
import info.nightscout.interfaces.ui.UiInteraction
Expand Down

0 comments on commit 24c2f47

Please sign in to comment.