package com.indignado.logicbricks.systems.controllers; import com.badlogic.ashley.core.Entity; import com.badlogic.gdx.utils.ObjectSet; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.components.StateComponent; import com.indignado.logicbricks.components.controllers.ControllerComponent; import com.indignado.logicbricks.core.bricks.base.BaseTest; import com.indignado.logicbricks.core.controllers.Controller; import com.indignado.logicbricks.core.data.LogicBrick.BrickMode; import com.indignado.logicbricks.core.sensors.AlwaysSensor; import com.indignado.logicbricks.utils.builders.sensors.AlwaysSensorBuilder; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * @author Rubentxu */ public class ControllerSystemTest extends BaseTest{ private String stateTest; private Controller controller; private AlwaysSensor sensor; private Entity player; @Before public void setup() { this.stateTest = "StatePruebas"; entityBuilder.initialize(); IdentityComponent identityPlayer = entityBuilder.getComponent(IdentityComponent.class); identityPlayer.tag = "Player"; StateComponent stateComponent = entityBuilder.getComponent(StateComponent.class); stateComponent.createState(stateTest); sensor =builders.getBrickBuilder(AlwaysSensorBuilder.class) .setName("sensorPlayer") .getBrick(); controller = new Controller(); controller.name = "TestController"; controller.sensors.put(sensor.name, sensor); ObjectSet<Controller> controllersSet = new ObjectSet<>(); controllersSet.add(controller); ControllerComponent controllerComponent = entityBuilder.getComponent(ControllerComponent.class); controllerComponent.controllers.put(stateComponent.getCurrentState(), controllersSet); ControllerSystem controllerSystem = new ControllerSystem(ControllerComponent.class) { @Override public void processController(Controller controller) { } }; engine.addSystem(controllerSystem); player = entityBuilder.getEntity(); } @Test public void defaulTest() { sensor.pulseState = BrickMode.BM_ON; engine.addEntity(player); game.singleStep(1); assertEquals(BrickMode.BM_IDLE, controller.pulseState); sensor.pulseState = BrickMode.BM_IDLE; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); sensor.pulseState = BrickMode.BM_IDLE; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); sensor.pulseState = BrickMode.BM_OFF; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); } @Test public void twoSensorsTest() { AlwaysSensor sensor2 =builders.getBrickBuilder(AlwaysSensorBuilder.class) .setName("sensor2Player") .getBrick(); controller.sensors.put(sensor2.name, sensor2); sensor.pulseState = BrickMode.BM_ON; sensor2.pulseState = BrickMode.BM_ON; engine.addEntity(player); game.singleStep(1); assertEquals(BrickMode.BM_IDLE, controller.pulseState); sensor.pulseState = BrickMode.BM_IDLE; sensor2.pulseState = BrickMode.BM_ON; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); sensor.pulseState = BrickMode.BM_ON; sensor2.pulseState = BrickMode.BM_OFF; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); sensor.pulseState = BrickMode.BM_OFF; sensor2.pulseState = BrickMode.BM_ON; game.singleStep(1); assertEquals(BrickMode.BM_OFF, controller.pulseState); } }