2017-01-11 17:31:00 +01:00
|
|
|
package se.hal;
|
|
|
|
|
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
import se.hal.intf.HalAction;
|
|
|
|
|
import se.hal.intf.HalTrigger;
|
2017-01-30 17:16:56 +01:00
|
|
|
import se.hal.struct.Action;
|
|
|
|
|
import se.hal.struct.Trigger;
|
2017-01-11 17:31:00 +01:00
|
|
|
import se.hal.struct.TriggerFlow;
|
|
|
|
|
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
|
2021-05-08 01:41:13 +02:00
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
|
import static org.junit.Assert.assertTrue;
|
2017-01-11 17:31:00 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public class TriggerManagerTest {
|
|
|
|
|
|
|
|
|
|
private TriggerManager manager = new TriggerManager();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void registerAvailableTrigger(){
|
|
|
|
|
assertEquals(Collections.EMPTY_LIST, manager.getAvailableTriggers());
|
|
|
|
|
|
|
|
|
|
manager.addAvailableTrigger(TestTrigger.class);
|
|
|
|
|
manager.addAvailableTrigger(TestTrigger.class);
|
|
|
|
|
assertEquals(1, manager.getAvailableTriggers().size());
|
|
|
|
|
assertTrue(manager.getAvailableTriggers().contains(TestTrigger.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void registerAvailableAction(){
|
|
|
|
|
assertEquals(Collections.EMPTY_LIST, manager.getAvailableActions());
|
|
|
|
|
|
|
|
|
|
manager.addAvailableAction(TestAction.class);
|
|
|
|
|
manager.addAvailableAction(TestAction.class);
|
|
|
|
|
assertEquals(1, manager.getAvailableActions().size());
|
|
|
|
|
assertTrue(manager.getAvailableActions().contains(TestAction.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void register(){
|
|
|
|
|
registerAvailableTrigger();
|
|
|
|
|
|
|
|
|
|
TriggerFlow flow = new TriggerFlow();
|
2017-01-30 17:16:56 +01:00
|
|
|
flow.addTrigger(new Trigger(new TestTrigger(true)));
|
2017-01-11 17:31:00 +01:00
|
|
|
TestAction action = new TestAction();
|
2017-01-30 17:16:56 +01:00
|
|
|
flow.addAction(new Action(action));
|
2017-01-11 17:31:00 +01:00
|
|
|
manager.register(flow);
|
|
|
|
|
manager.evaluateAndExecute();
|
|
|
|
|
assertEquals(1, action.nrOfExecutions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void evaluateAndExecute(){
|
|
|
|
|
registerAvailableTrigger();
|
|
|
|
|
|
|
|
|
|
TriggerFlow flow = new TriggerFlow();
|
|
|
|
|
TestTrigger trigger = new TestTrigger(true);
|
2017-01-30 17:16:56 +01:00
|
|
|
flow.addTrigger(new Trigger(trigger));
|
2017-01-11 17:31:00 +01:00
|
|
|
TestAction action = new TestAction();
|
2017-01-30 17:16:56 +01:00
|
|
|
flow.addAction(new Action(action));
|
2017-01-11 17:31:00 +01:00
|
|
|
manager.register(flow);
|
|
|
|
|
|
|
|
|
|
manager.evaluateAndExecute();
|
|
|
|
|
assertEquals("Action executed nr of times",
|
|
|
|
|
1, action.nrOfExecutions);
|
|
|
|
|
|
|
|
|
|
manager.evaluateAndExecute();
|
|
|
|
|
assertEquals("Action executed nr of times",
|
|
|
|
|
1, action.nrOfExecutions);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2017-01-30 17:16:56 +01:00
|
|
|
private static class TestTrigger implements HalTrigger {
|
2017-01-11 17:31:00 +01:00
|
|
|
boolean evaluation;
|
|
|
|
|
TestTrigger(boolean b){ evaluation = b; }
|
|
|
|
|
@Override
|
|
|
|
|
public boolean evaluate() { return evaluation; }
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void reset() { evaluation = false; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2017-01-30 17:16:56 +01:00
|
|
|
private class TestAction implements HalAction {
|
2017-01-11 17:31:00 +01:00
|
|
|
int nrOfExecutions;
|
|
|
|
|
@Override
|
|
|
|
|
public void execute() { nrOfExecutions++; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|