@Before
public void setUp() {
/*Initialze the RainbowMocker we provide to mock the rainbow instance*/
RainbowMocker.injectRainbow();
}Here is an example for setting up the SetLoadCmd for ZNNCommandFactory. You should specify the acme file to load.
StandaloneResource resource = StandaloneResourceProvider.instance().acmeResourceForString(
"src/test/resources/acme/znn.acme");
IAcmeSystem sys = resource.getModel().getSystems().iterator().next();
assertTrue(sys.getDeclaredTypes().iterator().next().isSatisfied());
ZNNModelUpdateOperatorsImpl znn = new ZNNModelUpdateOperatorsImpl(sys, "src/test/resources/acme/znn.acme");
IAcmeComponent server = sys.getComponent("s0");
/*For different type of command you call different 'set' method*/
AcmeModelOperation cns = znn.getCommandFactory().setLoadCmd(server, (float) 0.32);Here you need to use the mocked announce port we provide to execute the command. This should work for all the commands that need the IModelChangeBusPort.
/*Use the mockAnnouncePort*/
IModelChangeBusPort announcePort = mockAnnouncePort();
assertTrue(cns.canExecute());
List<? extends IRainbowMessage> generatedEvents = cns.execute(znn, announcePort);assertTrue(cns.canUndo());
assertFalse(cns.canExecute());
assertFalse(cns.canRedo());
outputMessages(generatedEvents);
checkEventProperties(generatedEvents);Here is an example function for printing the output.
private void outputMessages(List<? extends IRainbowMessage> events) {
for (IRainbowMessage msg : events) {
System.out.println(msg.toString());
}
}Here is an example function to check the properties of the generated events.
private void checkEventProperties(List<? extends IRainbowMessage> generatedEvents) {
assertTrue(generatedEvents.size() > 0);
assertTrue(generatedEvents.iterator().next().getProperty(IModelChangeBusPort.EVENT_TYPE_PROP).equals(CommandEventT.START_COMMAND.name()));
assertTrue(generatedEvents.get(generatedEvents.size() - 1).getProperty(IModelChangeBusPort.EVENT_TYPE_PROP).equals(CommandEventT.FINISH_COMMAND.name()));
for (IRainbowMessage msg : generatedEvents) {
assertTrue(msg.getPropertyNames().contains(ESEBConstants.MSG_TYPE_KEY));
}
}