TriggerAnd, TriggerOr
This commit is contained in:
parent
d317ec94ad
commit
4ba1adabf4
|
@ -0,0 +1,6 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.actions;
|
||||||
|
|
||||||
|
public abstract class Trigger {
|
||||||
|
|
||||||
|
abstract boolean shouldRun();
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.actions;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TriggerAnd extends Trigger {
|
||||||
|
|
||||||
|
private List<Trigger> list = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
synchronized boolean shouldRun() {
|
||||||
|
boolean result = true;
|
||||||
|
|
||||||
|
for (Trigger t : list) {
|
||||||
|
result = result && t.shouldRun();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized void add(Trigger t) {
|
||||||
|
list.add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized boolean remove(Trigger t) {
|
||||||
|
return list.remove(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
int size() {
|
||||||
|
return list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
Trigger get(int i) {
|
||||||
|
return list.get(i);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.actions;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TriggerOr extends Trigger {
|
||||||
|
|
||||||
|
private List<Trigger> list = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
synchronized boolean shouldRun() {
|
||||||
|
boolean result = false;
|
||||||
|
|
||||||
|
for (Trigger t : list) {
|
||||||
|
result = result || t.shouldRun();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized void add(Trigger t) {
|
||||||
|
list.add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized boolean remove(Trigger t) {
|
||||||
|
return list.remove(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
int size() {
|
||||||
|
return list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
Trigger get(int i) {
|
||||||
|
return list.get(i);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.actions;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest({})
|
||||||
|
public class TriggerAndTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void doTests() {
|
||||||
|
TriggerAnd t = new TriggerAnd();
|
||||||
|
TriggerAnd t2 = new TriggerAnd();
|
||||||
|
TriggerAnd t3 = new TriggerAnd();
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
t.remove(t2);
|
||||||
|
Assert.assertTrue(t.size() == 1);
|
||||||
|
Assert.assertEquals(t3, t.get(0));
|
||||||
|
|
||||||
|
Assert.assertTrue(t.shouldRun());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.actions;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest({})
|
||||||
|
public class TriggerOrTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void doTests() {
|
||||||
|
TriggerOr t = new TriggerOr();
|
||||||
|
TriggerOr t2 = new TriggerOr();
|
||||||
|
TriggerOr t3 = new TriggerOr();
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
t.remove(t2);
|
||||||
|
Assert.assertTrue(t.size() == 1);
|
||||||
|
Assert.assertEquals(t3, t.get(0));
|
||||||
|
|
||||||
|
Assert.assertFalse(t.shouldRun());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue