package com.indignado.logicbricks.systems.sensors; import com.badlogic.gdx.ai.msg.MessageManager; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.core.MessageHandler; import com.indignado.logicbricks.core.actuators.MessageActuator; import com.indignado.logicbricks.core.controllers.ConditionalController; import com.indignado.logicbricks.core.data.LogicBrick; import com.indignado.logicbricks.core.sensors.MessageSensor; import com.indignado.logicbricks.systems.sensors.base.ActuatorTest; import com.indignado.logicbricks.systems.sensors.base.BaseSensorSystemTest; import com.indignado.logicbricks.utils.builders.actuators.MessageActuatorBuilder; import com.indignado.logicbricks.utils.builders.controllers.ConditionalControllerBuilder; import com.indignado.logicbricks.utils.builders.sensors.MessageSensorBuilder; import org.junit.Test; import static org.junit.Assert.*; /** * @author Rubentxu */ public class MessageSensorSystemTest extends BaseSensorSystemTest<MessageSensor, MessageSensorSystem> { private MessageActuator messageActuator; private String message; public MessageSensorSystemTest() { super(); sensorSystem = new MessageSensorSystem(); engine.addSystem(sensorSystem); } @Override public void tearDown() { player = null; sensor = null; } @Override protected void createContext() { // Create Player Entity entityBuilder.initialize(); IdentityComponent identityPlayer = entityBuilder.getComponent(IdentityComponent.class); identityPlayer.tag = "Player"; message = "TestMessage"; sensor =builders.getBrickBuilder(MessageSensorBuilder.class) .setSubject(message) .setName("sensorPlayer") .getBrick(); ConditionalController controllerGround =builders.getBrickBuilder(ConditionalControllerBuilder.class) .setOp(ConditionalController.Op.OP_AND) .getBrick(); ActuatorTest actuatorTest = new ActuatorTest(); messageActuator =builders.getBrickBuilder(MessageActuatorBuilder.class) .setMessage(message) .getBrick(); player = entityBuilder .addController(controllerGround, "Default") .connectToSensor(sensor) .connectToActuator(actuatorTest) .getEntity(); } @Test public void messageTest() { engine.addEntity(player); MessageManager.getInstance().dispatchMessage(messageActuator, MessageHandler.getMessageKey(message)); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); sensor.managedMessage = true; engine.update(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); } }