QuickWizardTest
This commit is contained in:
parent
4f295fec4b
commit
7ace6fe3ac
|
@ -16,6 +16,7 @@ import java.util.Objects;
|
|||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.interfaces.Interval;
|
||||
|
@ -74,6 +75,11 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
|
|||
@Inject public RxBusWrapper rxBus;
|
||||
@Inject public ResourceHelper resourceHelper;
|
||||
|
||||
public ProfileSwitch() {
|
||||
this.injector = MainApp.instance().injector;
|
||||
injector.androidInjector().inject(this);
|
||||
}
|
||||
|
||||
public ProfileSwitch(HasAndroidInjector injector) {
|
||||
injector.androidInjector().inject(this);
|
||||
this.injector = injector;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package info.nightscout.androidaps.utils.wizard
|
||||
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
|
@ -10,8 +10,9 @@ import javax.inject.Singleton
|
|||
@Singleton
|
||||
class QuickWizard @Inject constructor(
|
||||
private val sp: SP,
|
||||
private val mainApp: MainApp
|
||||
){
|
||||
private val injector: HasAndroidInjector
|
||||
) {
|
||||
|
||||
private var storage = JSONArray()
|
||||
|
||||
init {
|
||||
|
@ -20,7 +21,7 @@ class QuickWizard @Inject constructor(
|
|||
|
||||
fun getActive(): QuickWizardEntry? {
|
||||
for (i in 0 until storage.length()) {
|
||||
val entry = QuickWizardEntry(mainApp).from(storage.get(i) as JSONObject, i)
|
||||
val entry = QuickWizardEntry(injector).from(storage.get(i) as JSONObject, i)
|
||||
if (entry.isActive()) return entry
|
||||
}
|
||||
return null
|
||||
|
@ -37,11 +38,10 @@ class QuickWizard @Inject constructor(
|
|||
fun size(): Int = storage.length()
|
||||
|
||||
operator fun get(position: Int): QuickWizardEntry =
|
||||
QuickWizardEntry(mainApp).from(storage.get(position) as JSONObject, position)
|
||||
|
||||
QuickWizardEntry(injector).from(storage.get(position) as JSONObject, position)
|
||||
|
||||
fun newEmptyItem(): QuickWizardEntry {
|
||||
return QuickWizardEntry(mainApp)
|
||||
return QuickWizardEntry(injector)
|
||||
}
|
||||
|
||||
fun addOrUpdate(newItem: QuickWizardEntry) {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package info.nightscout.androidaps.utils.wizard
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.db.BgReading
|
||||
|
@ -20,9 +19,8 @@ import org.json.JSONObject
|
|||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class QuickWizardEntry @Inject constructor(private val mainApp: MainApp) {
|
||||
class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjector) {
|
||||
|
||||
@Inject lateinit var injector: HasAndroidInjector
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
|
@ -41,7 +39,7 @@ class QuickWizardEntry @Inject constructor(private val mainApp: MainApp) {
|
|||
}
|
||||
|
||||
init {
|
||||
mainApp.androidInjector().inject(this)
|
||||
injector.androidInjector().inject(this)
|
||||
val emptyData = "{\"buttonText\":\"\",\"carbs\":0,\"validFrom\":0,\"validTo\":86340}"
|
||||
try {
|
||||
storage = JSONObject(emptyData)
|
||||
|
@ -119,7 +117,7 @@ class QuickWizardEntry @Inject constructor(private val mainApp: MainApp) {
|
|||
trend = true
|
||||
}
|
||||
val percentage = sp.getDouble(R.string.key_boluswizard_percentage, 100.0)
|
||||
return BolusWizard(mainApp).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, "QuickWizard")
|
||||
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, "QuickWizard")
|
||||
}
|
||||
|
||||
fun buttonText(): String = safeGetString(storage, "buttonText", "")
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
package info.nightscout.androidaps.data;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.mockito.PowerMockito;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
|
||||
import info.AAPSMocker;
|
||||
import info.SPMocker;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizard;
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry;
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({SP.class, MainApp.class, Profile.class})
|
||||
public class QuickWizardTest {
|
||||
|
||||
private String data1 = "{\"buttonText\":\"Meal\",\"carbs\":36,\"validFrom\":0,\"validTo\":18000," +
|
||||
"\"useBG\":0,\"useCOB\":0,\"useBolusIOB\":0,\"useBasalIOB\":0,\"useTrend\":0,\"useSuperBolus\":0,\"useTemptarget\":0}";
|
||||
private String data2 = "{\"buttonText\":\"Lunch\",\"carbs\":18,\"validFrom\":36000,\"validTo\":39600," +
|
||||
"\"useBG\":0,\"useCOB\":0,\"useBolusIOB\":1,\"useBasalIOB\":2,\"useTrend\":0,\"useSuperBolus\":0,\"useTemptarget\":0}";
|
||||
|
||||
private JSONArray array;
|
||||
|
||||
public QuickWizardTest() {
|
||||
try {
|
||||
array = new JSONArray("[" + data1 + "," + data2 + "]");
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Before
|
||||
public void mock() throws Exception {
|
||||
AAPSMocker.mockMainApp();
|
||||
SPMocker.prepareMock();
|
||||
PowerMockito.mockStatic(Profile.class);
|
||||
PowerMockito.when(Profile.class, "secondsFromMidnight").thenReturn(0);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setDataTest() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
Assert.assertEquals(2, QuickWizard.INSTANCE.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveTest() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
QuickWizard.INSTANCE.save();
|
||||
Assert.assertEquals("[{\"useBolusIOB\":0,\"buttonText\":\"Meal\",\"useTrend\":0,\"carbs\":36,\"useCOB\":0,\"useBasalIOB\":0,\"useTemptarget\":0,\"useBG\":0,\"validFrom\":0,\"useSuperBolus\":0,\"validTo\":18000},{\"useBolusIOB\":1,\"buttonText\":\"Lunch\",\"useTrend\":0,\"carbs\":18,\"useCOB\":0,\"useBasalIOB\":2,\"useTemptarget\":0,\"useBG\":0,\"validFrom\":36000,\"useSuperBolus\":0,\"validTo\":39600}]", SP.getString("QuickWizard", "d"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTest() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
Assert.assertEquals("Lunch", QuickWizard.INSTANCE.get(1).buttonText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getActive() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
QuickWizardEntry e = QuickWizard.INSTANCE.getActive();
|
||||
Assert.assertEquals(36d, e.carbs(), 0.01d);
|
||||
QuickWizard.INSTANCE.remove(0);
|
||||
QuickWizard.INSTANCE.remove(0);
|
||||
Assert.assertNull(QuickWizard.INSTANCE.getActive());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void newEmptyItemTest() {
|
||||
Assert.assertNotNull(QuickWizard.INSTANCE.newEmptyItem());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addOrUpdate() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
Assert.assertEquals(2, QuickWizard.INSTANCE.size());
|
||||
QuickWizard.INSTANCE.addOrUpdate(QuickWizard.INSTANCE.newEmptyItem());
|
||||
Assert.assertEquals(3, QuickWizard.INSTANCE.size());
|
||||
QuickWizardEntry q = QuickWizard.INSTANCE.newEmptyItem();
|
||||
q.position = 0;
|
||||
QuickWizard.INSTANCE.addOrUpdate(q);
|
||||
Assert.assertEquals(3, QuickWizard.INSTANCE.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void remove() {
|
||||
QuickWizard.INSTANCE.setData(array);
|
||||
QuickWizard.INSTANCE.remove(0);
|
||||
Assert.assertEquals(1, QuickWizard.INSTANCE.size());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
package info.nightscout.androidaps.data
|
||||
|
||||
import dagger.android.AndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.TestBase
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizard
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
|
||||
import org.json.JSONArray
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.powermock.api.mockito.PowerMockito
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest
|
||||
import org.powermock.modules.junit4.PowerMockRunner
|
||||
|
||||
@RunWith(PowerMockRunner::class)
|
||||
@PrepareForTest(Profile::class)
|
||||
class QuickWizardTest : TestBase() {
|
||||
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var sp: SP
|
||||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||
@Mock lateinit var loopPlugin: LoopPlugin
|
||||
@Mock lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
|
||||
|
||||
private val data1 = "{\"buttonText\":\"Meal\",\"carbs\":36,\"validFrom\":0,\"validTo\":18000," +
|
||||
"\"useBG\":0,\"useCOB\":0,\"useBolusIOB\":0,\"useBasalIOB\":0,\"useTrend\":0,\"useSuperBolus\":0,\"useTemptarget\":0}"
|
||||
private val data2 = "{\"buttonText\":\"Lunch\",\"carbs\":18,\"validFrom\":36000,\"validTo\":39600," +
|
||||
"\"useBG\":0,\"useCOB\":0,\"useBolusIOB\":1,\"useBasalIOB\":2,\"useTrend\":0,\"useSuperBolus\":0,\"useTemptarget\":0}"
|
||||
var array: JSONArray = JSONArray("[$data1,$data2]")
|
||||
|
||||
val injector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
if (it is QuickWizardEntry) {
|
||||
it.aapsLogger = aapsLogger
|
||||
it.sp = sp
|
||||
it.profileFunction = profileFunction
|
||||
it.treatmentsPlugin = treatmentsPlugin
|
||||
it.loopPlugin = loopPlugin
|
||||
it.iobCobCalculatorPlugin = iobCobCalculatorPlugin
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var quickWizard : QuickWizard
|
||||
|
||||
@Before
|
||||
fun mock() {
|
||||
PowerMockito.mockStatic(Profile::class.java)
|
||||
PowerMockito.`when`<Any>(Profile::class.java, "secondsFromMidnight").thenReturn(0)
|
||||
`when`(sp.getString("QuickWizard", "[]")).thenReturn("[]")
|
||||
quickWizard = QuickWizard(sp, injector)
|
||||
}
|
||||
|
||||
@Test fun setDataTest() {
|
||||
quickWizard.setData(array)
|
||||
Assert.assertEquals(2, quickWizard.size())
|
||||
}
|
||||
|
||||
@Test fun test() {
|
||||
quickWizard.setData(array)
|
||||
Assert.assertEquals("Lunch", quickWizard.get(1).buttonText())
|
||||
}
|
||||
|
||||
@Test fun active() {
|
||||
quickWizard.setData(array)
|
||||
val e: QuickWizardEntry = quickWizard.getActive()!!
|
||||
Assert.assertEquals(36.0, e.carbs().toDouble(), 0.01)
|
||||
quickWizard.remove(0)
|
||||
quickWizard.remove(0)
|
||||
Assert.assertNull(quickWizard.getActive())
|
||||
}
|
||||
|
||||
@Test fun newEmptyItemTest() {
|
||||
Assert.assertNotNull(quickWizard.newEmptyItem())
|
||||
}
|
||||
|
||||
@Test fun addOrUpdate() {
|
||||
quickWizard.setData(array)
|
||||
Assert.assertEquals(2, quickWizard.size())
|
||||
quickWizard.addOrUpdate(quickWizard.newEmptyItem())
|
||||
Assert.assertEquals(3, quickWizard.size())
|
||||
val q: QuickWizardEntry = quickWizard.newEmptyItem()
|
||||
q.position = 0
|
||||
quickWizard.addOrUpdate(q)
|
||||
Assert.assertEquals(3, quickWizard.size())
|
||||
}
|
||||
|
||||
@Test fun remove() {
|
||||
quickWizard.setData(array)
|
||||
quickWizard.remove(0)
|
||||
Assert.assertEquals(1, quickWizard.size())
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue