Trigger tests
This commit is contained in:
parent
99aec40534
commit
e812dd9437
9 changed files with 258 additions and 300 deletions
|
@ -21,8 +21,6 @@ import java.util.*
|
|||
class TriggerConnector(injector: HasAndroidInjector) : Trigger(injector) {
|
||||
var list: MutableList<Trigger> = ArrayList()
|
||||
private var connectorType: Type = Type.AND
|
||||
// TODO move to TriggerConnector
|
||||
//var connector: TriggerConnector = TriggerConnector(injector, TriggerConnector.Type.AND)
|
||||
|
||||
enum class Type {
|
||||
AND, OR, XOR;
|
||||
|
|
|
@ -4,10 +4,10 @@ import com.google.common.base.Optional
|
|||
import dagger.android.HasAndroidInjector
|
||||
|
||||
// Used for instantiation of other triggers only
|
||||
class TriggerDummy(injector: HasAndroidInjector) : Trigger(injector) {
|
||||
class TriggerDummy(injector: HasAndroidInjector, val shouldRun: Boolean = false) : Trigger(injector) {
|
||||
|
||||
override fun shouldRun(): Boolean {
|
||||
throw NotImplementedError("An operation is not implemented")
|
||||
return shouldRun
|
||||
}
|
||||
|
||||
override fun toJSON(): String {
|
||||
|
@ -23,7 +23,7 @@ class TriggerDummy(injector: HasAndroidInjector) : Trigger(injector) {
|
|||
}
|
||||
|
||||
override fun friendlyDescription(): String {
|
||||
throw NotImplementedError("An operation is not implemented")
|
||||
return "TriggerDummy"
|
||||
}
|
||||
|
||||
override fun icon(): Optional<Int?> {
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest;
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({})
|
||||
public class AutomationEventTest {
|
||||
@Test
|
||||
public void testCloneEvent() throws CloneNotSupportedException {
|
||||
// create test object
|
||||
AutomationEvent event = new AutomationEvent();
|
||||
event.setTitle("Test");
|
||||
event.setTrigger(Trigger.instantiate(TriggerConnectorTest.oneItem));
|
||||
event.addAction(new ActionLoopEnable());
|
||||
|
||||
// export to json
|
||||
final String eventJsonExpected = "{\"trigger\":\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"connectorType\\\\\\\":\\\\\\\"AND\\\\\\\",\\\\\\\"triggerList\\\\\\\":[]},\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\\\\\"}\\\"]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\",\"title\":\"Test\",\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable\\\"}\"],\"enabled\":true}";
|
||||
Assert.assertEquals(eventJsonExpected, event.toJSON());
|
||||
|
||||
// clone
|
||||
AutomationEvent clone = new AutomationEvent().fromJSON(eventJsonExpected);
|
||||
|
||||
// check title
|
||||
Assert.assertEquals(event.getTitle(), clone.getTitle());
|
||||
|
||||
// check trigger
|
||||
Assert.assertNotNull(clone.getTrigger());
|
||||
Assert.assertFalse(event.getTrigger() == clone.getTrigger()); // not the same object reference
|
||||
Assert.assertEquals(event.getTrigger().getClass(), clone.getTrigger().getClass());
|
||||
Assert.assertEquals(event.getTrigger().toJSON(), clone.getTrigger().toJSON());
|
||||
|
||||
// check action
|
||||
Assert.assertEquals(1, clone.getActions().size());
|
||||
Assert.assertFalse(event.getActions() == clone.getActions()); // not the same object reference
|
||||
Assert.assertEquals(clone.toJSON(), clone.toJSON());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation
|
||||
|
||||
import dagger.android.AndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.TestBase
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.powermock.modules.junit4.PowerMockRunner
|
||||
|
||||
@RunWith(PowerMockRunner::class)
|
||||
class AutomationEventTest : TestBase() {
|
||||
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var loopPlugin: LoopPlugin
|
||||
@Mock lateinit var resourceHelper: ResourceHelper
|
||||
@Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
|
||||
|
||||
var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
if (it is AutomationEvent) {
|
||||
it.aapsLogger = aapsLogger
|
||||
}
|
||||
if (it is ActionLoopEnable) {
|
||||
it.loopPlugin = loopPlugin
|
||||
it.resourceHelper = resourceHelper
|
||||
it.configBuilderPlugin = configBuilderPlugin
|
||||
it.rxBus = RxBusWrapper()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCloneEvent() {
|
||||
// create test object
|
||||
val event = AutomationEvent(injector)
|
||||
event.title = "Test"
|
||||
event.trigger = TriggerDummy(injector).instantiate(JSONObject(TriggerConnectorTest.oneItem))
|
||||
?: throw Exception()
|
||||
event.addAction(ActionLoopEnable(injector))
|
||||
|
||||
// export to json
|
||||
val eventJsonExpected = "{\"trigger\":\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"connectorType\\\\\\\":\\\\\\\"AND\\\\\\\",\\\\\\\"triggerList\\\\\\\":[]},\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\\\\\"}\\\"]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\",\"title\":\"Test\",\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable\\\"}\"],\"enabled\":true}"
|
||||
Assert.assertEquals(eventJsonExpected, event.toJSON())
|
||||
|
||||
// clone
|
||||
val clone = AutomationEvent(injector).fromJSON(eventJsonExpected)
|
||||
|
||||
// check title
|
||||
Assert.assertEquals(event.title, clone.title)
|
||||
|
||||
// check trigger
|
||||
Assert.assertNotNull(clone.trigger)
|
||||
Assert.assertFalse(event.trigger === clone.trigger) // not the same object reference
|
||||
Assert.assertEquals(event.trigger.javaClass, clone.trigger.javaClass)
|
||||
Assert.assertEquals(event.trigger.toJSON(), clone.trigger.toJSON())
|
||||
|
||||
// check action
|
||||
Assert.assertEquals(1, clone.actions.size.toLong())
|
||||
Assert.assertFalse(event.actions === clone.actions) // not the same object reference
|
||||
Assert.assertEquals(clone.toJSON(), clone.toJSON())
|
||||
}
|
||||
}
|
|
@ -1,138 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
|
||||
import info.nightscout.androidaps.plugins.general.automation.dialogs.TriggerListAdapter;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.DummyTrigger;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector;
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({})
|
||||
public class ComposeTriggerTest {
|
||||
@Test
|
||||
public void testTriggerList() {
|
||||
TriggerConnector root = new TriggerConnector();
|
||||
|
||||
// add some triggers
|
||||
Trigger t0 = new DummyTrigger();
|
||||
root.add(t0);
|
||||
Trigger t1 = new DummyTrigger();
|
||||
root.add(t1);
|
||||
Trigger t2 = new DummyTrigger();
|
||||
root.add(t2);
|
||||
|
||||
Assert.assertEquals(3, root.size());
|
||||
Assert.assertEquals(t0, root.get(0));
|
||||
Assert.assertEquals(t1, root.get(1));
|
||||
Assert.assertEquals(t2, root.get(2));
|
||||
|
||||
// remove a trigger
|
||||
root.remove(t1);
|
||||
|
||||
Assert.assertEquals(2, root.size());
|
||||
Assert.assertEquals(t0, root.get(0));
|
||||
Assert.assertEquals(t2, root.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChangeConnector() {
|
||||
// initialize scenario
|
||||
TriggerConnector root = new TriggerConnector(TriggerConnector.Type.AND);
|
||||
Trigger[] t = new Trigger[4];
|
||||
for (int i = 0; i < t.length; ++i) {
|
||||
t[i] = new DummyTrigger();
|
||||
root.add(t[i]);
|
||||
}
|
||||
Assert.assertEquals(4, root.size());
|
||||
|
||||
// change connector of t1,t2 from "and" to "or"
|
||||
Assert.assertEquals(root, t[2].getConnector());
|
||||
TriggerListAdapter.changeConnector(null, t[2], t[2].getConnector(), TriggerConnector.Type.OR);
|
||||
|
||||
Assert.assertEquals(3, root.size());
|
||||
Assert.assertEquals(t[0], root.get(0));
|
||||
Assert.assertEquals(t[3], root.get(2));
|
||||
Assert.assertTrue(root.get(1) instanceof TriggerConnector);
|
||||
|
||||
TriggerConnector newConnector = (TriggerConnector) root.get(1);
|
||||
Assert.assertEquals(2, newConnector.size());
|
||||
Assert.assertEquals(t[1], newConnector.get(0));
|
||||
Assert.assertEquals(t[2], newConnector.get(1));
|
||||
|
||||
// undo
|
||||
Assert.assertEquals(newConnector, t[2].getConnector());
|
||||
TriggerListAdapter.changeConnector(null, t[2], t[2].getConnector(), TriggerConnector.Type.AND);
|
||||
Assert.assertEquals(4, root.size());
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
Assert.assertEquals(t[i], root.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConnectorSimplify() {
|
||||
// initialize scenario
|
||||
/*
|
||||
* parent
|
||||
* -> child
|
||||
* -> t0
|
||||
* -> t1
|
||||
*/
|
||||
TriggerConnector parent = new TriggerConnector(TriggerConnector.Type.AND);
|
||||
TriggerConnector child = new TriggerConnector(TriggerConnector.Type.AND);
|
||||
Trigger t0 = new DummyTrigger();
|
||||
Trigger t1 = new DummyTrigger();
|
||||
child.add(t0);
|
||||
child.add(t1);
|
||||
parent.add(child);
|
||||
Assert.assertEquals(1, parent.size());
|
||||
Assert.assertEquals(child, parent.get(0));
|
||||
Assert.assertEquals(2, child.size());
|
||||
Assert.assertEquals(t0, child.get(0));
|
||||
Assert.assertEquals(t1, child.get(1));
|
||||
|
||||
// simplify
|
||||
parent.simplify();
|
||||
|
||||
/*
|
||||
* parent
|
||||
* -> t0
|
||||
* -> t1
|
||||
*/
|
||||
Assert.assertEquals(2, parent.size());
|
||||
Assert.assertEquals(t0, parent.get(0));
|
||||
Assert.assertEquals(t1, parent.get(1));
|
||||
|
||||
// add a new child at position 1
|
||||
/*
|
||||
* parent
|
||||
* -> t0
|
||||
* -> newChild
|
||||
* -> t2
|
||||
* -> t1
|
||||
*/
|
||||
TriggerConnector newChild = new TriggerConnector(TriggerConnector.Type.AND);
|
||||
Trigger t2 = new DummyTrigger();
|
||||
newChild.add(t2);
|
||||
parent.add(1, newChild);
|
||||
|
||||
// simplify
|
||||
parent.simplify();
|
||||
|
||||
/*
|
||||
* parent
|
||||
* -> t0
|
||||
* -> t2
|
||||
* -> t1
|
||||
*/
|
||||
Assert.assertEquals(3, parent.size());
|
||||
Assert.assertEquals(t0, parent.get(0));
|
||||
Assert.assertEquals(t2, parent.get(1));
|
||||
Assert.assertEquals(t1, parent.get(2));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation
|
||||
|
||||
import dagger.android.AndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.TestBase
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest
|
||||
import org.powermock.modules.junit4.PowerMockRunner
|
||||
|
||||
@RunWith(PowerMockRunner::class)
|
||||
@PrepareForTest
|
||||
class ComposeTriggerTest : TestBase() {
|
||||
|
||||
var injector: HasAndroidInjector = HasAndroidInjector { AndroidInjector { } }
|
||||
|
||||
@Test fun testTriggerList() {
|
||||
val root = TriggerConnector(injector)
|
||||
|
||||
// add some triggers
|
||||
val t0: Trigger = TriggerDummy(injector)
|
||||
root.list.add(t0)
|
||||
val t1: Trigger = TriggerDummy(injector)
|
||||
root.list.add(t1)
|
||||
val t2: Trigger = TriggerDummy(injector)
|
||||
root.list.add(t2)
|
||||
Assert.assertEquals(3, root.size())
|
||||
Assert.assertEquals(t0, root.list[0])
|
||||
Assert.assertEquals(t1, root.list[1])
|
||||
Assert.assertEquals(t2, root.list[2])
|
||||
|
||||
// remove a trigger
|
||||
root.list.remove(t1)
|
||||
Assert.assertEquals(2, root.size())
|
||||
Assert.assertEquals(t0, root.list[0])
|
||||
Assert.assertEquals(t2, root.list[1])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testChangeConnector() {
|
||||
// initialize scenario
|
||||
val root = TriggerConnector(injector, TriggerConnector.Type.AND)
|
||||
val t = arrayOfNulls<Trigger>(4)
|
||||
for (i in t.indices) {
|
||||
t[i] = TriggerDummy(injector)
|
||||
root.list.add(t[i]!!)
|
||||
}
|
||||
Assert.assertEquals(4, root.size())
|
||||
}
|
||||
}
|
|
@ -1,112 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.triggers;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
|
||||
import info.AAPSMocker;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({MainApp.class, L.class, SP.class})
|
||||
public class TriggerConnectorTest {
|
||||
|
||||
@Test
|
||||
public void testTriggerList() {
|
||||
TriggerConnector t = new TriggerConnector();
|
||||
TriggerConnector t2 = new TriggerConnector();
|
||||
TriggerConnector t3 = new TriggerConnector();
|
||||
|
||||
Assert.assertTrue(t.size() == 0);
|
||||
|
||||
t.add(t2);
|
||||
Assert.assertTrue(t.size() == 1);
|
||||
Assert.assertEquals(t2, t.get(0));
|
||||
|
||||
t.add(t3);
|
||||
Assert.assertTrue(t.size() == 2);
|
||||
Assert.assertEquals(t2, t.get(0));
|
||||
Assert.assertEquals(t3, t.get(1));
|
||||
|
||||
Assert.assertTrue(t.remove(t2));
|
||||
Assert.assertTrue(t.size() == 1);
|
||||
Assert.assertEquals(t3, t.get(0));
|
||||
|
||||
Assert.assertTrue(t.shouldRun());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListTriggerOR() {
|
||||
TriggerConnector t = new TriggerConnector(TriggerConnector.Type.OR);
|
||||
t.add(new DummyTrigger(false));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertFalse(t.shouldRun());
|
||||
|
||||
t.add(new DummyTrigger(true));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertTrue(t.shouldRun());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListTriggerXOR() {
|
||||
TriggerConnector t = new TriggerConnector(TriggerConnector.Type.XOR);
|
||||
t.add(new DummyTrigger(false));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertFalse(t.shouldRun());
|
||||
|
||||
t.add(new DummyTrigger(true));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertTrue(t.shouldRun());
|
||||
|
||||
t.add(new DummyTrigger(true));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertFalse(t.shouldRun());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListTriggerAND() {
|
||||
TriggerConnector t = new TriggerConnector(TriggerConnector.Type.AND);
|
||||
t.add(new DummyTrigger(true));
|
||||
t.add(new DummyTrigger(true));
|
||||
Assert.assertTrue(t.shouldRun());
|
||||
|
||||
t.add(new DummyTrigger(true));
|
||||
t.add(new DummyTrigger(false));
|
||||
Assert.assertFalse(t.shouldRun());
|
||||
}
|
||||
|
||||
static public final String empty = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}";
|
||||
static public final String oneItem = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\"]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}";
|
||||
|
||||
@Test
|
||||
public void toJSONTest() {
|
||||
TriggerConnector t = new TriggerConnector();
|
||||
Assert.assertEquals(empty, t.toJSON());
|
||||
t.add(new TriggerConnector());
|
||||
Assert.assertEquals(oneItem, t.toJSON());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fromJSONTest() throws JSONException {
|
||||
TriggerConnector t = new TriggerConnector();
|
||||
t.add(new TriggerConnector());
|
||||
|
||||
TriggerConnector t2 = (TriggerConnector) Trigger.instantiate(new JSONObject(t.toJSON()));
|
||||
Assert.assertEquals(1, t2.size());
|
||||
Assert.assertTrue(t2.get(0) instanceof TriggerConnector);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void prepareMock() {
|
||||
AAPSMocker.mockMainApp();
|
||||
AAPSMocker.mockSP();
|
||||
AAPSMocker.mockL();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.triggers
|
||||
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.powermock.modules.junit4.PowerMockRunner
|
||||
|
||||
@RunWith(PowerMockRunner::class)
|
||||
class TriggerConnectorTest : TriggerTestBase() {
|
||||
|
||||
@Test fun testTriggerList() {
|
||||
val t = TriggerConnector(injector)
|
||||
val t2 = TriggerConnector(injector)
|
||||
val t3 = TriggerConnector(injector)
|
||||
Assert.assertTrue(t.size() == 0)
|
||||
t.list.add(t2)
|
||||
Assert.assertTrue(t.size() == 1)
|
||||
Assert.assertEquals(t2, t.list.get(0))
|
||||
t.list.add(t3)
|
||||
Assert.assertTrue(t.size() == 2)
|
||||
Assert.assertEquals(t2, t.list.get(0))
|
||||
Assert.assertEquals(t3, t.list.get(1))
|
||||
Assert.assertTrue(t.list.remove(t2))
|
||||
Assert.assertTrue(t.size() == 1)
|
||||
Assert.assertEquals(t3, t.list.get(0))
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
}
|
||||
|
||||
@Test fun testListTriggerOR() {
|
||||
val t = TriggerConnector(injector, TriggerConnector.Type.OR)
|
||||
t.list.add(TriggerDummy(injector))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertFalse(t.shouldRun())
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
}
|
||||
|
||||
@Test fun testListTriggerXOR() {
|
||||
val t = TriggerConnector(injector, TriggerConnector.Type.XOR)
|
||||
t.list.add(TriggerDummy(injector))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertFalse(t.shouldRun())
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertFalse(t.shouldRun())
|
||||
}
|
||||
|
||||
@Test fun testListTriggerAND() {
|
||||
val t = TriggerConnector(injector, TriggerConnector.Type.AND)
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
t.list.add(TriggerDummy(injector, true))
|
||||
t.list.add(TriggerDummy(injector))
|
||||
Assert.assertFalse(t.shouldRun())
|
||||
}
|
||||
|
||||
@Test fun toJSONTest() {
|
||||
val t = TriggerConnector(injector)
|
||||
Assert.assertEquals(empty, t.toJSON())
|
||||
t.list.add(TriggerConnector(injector))
|
||||
Assert.assertEquals(oneItem, t.toJSON())
|
||||
}
|
||||
|
||||
@Test @Throws(JSONException::class) fun fromJSONTest() {
|
||||
val t = TriggerConnector(injector)
|
||||
t.list.add(TriggerConnector(injector))
|
||||
val t2 = TriggerDummy(injector).instantiate(JSONObject(t.toJSON())) as TriggerConnector
|
||||
Assert.assertEquals(1, t2.size().toLong())
|
||||
Assert.assertTrue(t2.list[0] is TriggerConnector)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val empty = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}"
|
||||
const val oneItem = "{\"data\":{\"connectorType\":\"AND\",\"triggerList\":[\"{\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[]},\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\"}\"]},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\"}"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.triggers
|
||||
|
||||
import dagger.android.AndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.TestBase
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
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.services.LastLocationDataContainer
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import org.mockito.Mock
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest
|
||||
|
||||
@PrepareForTest(LastLocationDataContainer::class)
|
||||
open class TriggerTestBase : TestBase() {
|
||||
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var resourceHelper: ResourceHelper
|
||||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var sp: SP
|
||||
@Mock lateinit var locationDataContainer: LastLocationDataContainer
|
||||
@Mock lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||
@Mock lateinit var activePlugin: ActivePluginProvider
|
||||
@Mock lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
|
||||
|
||||
var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
if (it is Trigger) {
|
||||
it.aapsLogger = aapsLogger
|
||||
it.rxBus = RxBusWrapper()
|
||||
it.resourceHelper = resourceHelper
|
||||
it.profileFunction = profileFunction
|
||||
it.locationDataContainer = locationDataContainer
|
||||
it.treatmentsPlugin = treatmentsPlugin
|
||||
it.activePlugin = activePlugin
|
||||
it.iobCobCalculatorPlugin = iobCobCalculatorPlugin
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue