package com.indignado.logicbricks.systems.sensors; import com.badlogic.gdx.Input; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.core.controllers.ConditionalController; import com.indignado.logicbricks.core.data.LogicBrick.BrickMode; import com.indignado.logicbricks.core.sensors.KeyboardSensor; import com.indignado.logicbricks.core.sensors.Sensor; import com.indignado.logicbricks.systems.sensors.base.ActuatorTest; import com.indignado.logicbricks.systems.sensors.base.BaseSensorSystemTest; import com.indignado.logicbricks.utils.builders.controllers.ConditionalControllerBuilder; import com.indignado.logicbricks.utils.builders.sensors.KeyboardSensorBuilder; import org.junit.Test; import static org.junit.Assert.*; /** * @author Rubentxu */ public class KeyboardSensorSystemTest extends BaseSensorSystemTest<KeyboardSensor, KeyboardSensorSystem> { @Override protected void tearDown() { } @Override protected void createContext() { // Create Player Entity entityBuilder.initialize(); IdentityComponent identityPlayer = entityBuilder.getComponent(IdentityComponent.class); identityPlayer.tag = "Player"; sensor = builders.getBrickBuilder(KeyboardSensorBuilder.class) .setKeyCode(Input.Keys.A) .setName("sensorPlayer") .getBrick(); ConditionalController controllerGround =builders.getBrickBuilder(ConditionalControllerBuilder.class) .setOp(ConditionalController.Op.OP_AND) .getBrick(); ActuatorTest actuatorTest = new ActuatorTest(); player = entityBuilder .addController(controllerGround, "Default") .connectToSensor(sensor) .connectToActuator(actuatorTest) .getEntity(); sensorSystem = engine.getSystem(KeyboardSensorSystem.class); } @Test public void keyDownTest() { engine.addEntity(player); sensorSystem.keyTyped('a'); sensorSystem.keyDown(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_OFF); assertTrue(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); } @Test public void keyDownPulseModeTrueTest() { sensor.pulse = Sensor.Pulse.PM_TRUE.getValue(); engine.addEntity(player); sensorSystem.keyTyped('a'); sensorSystem.keyDown(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void keyDownPulseModeTrueAndFalseTest() { sensor.pulse = Sensor.Pulse.PM_TRUE.getValue() | Sensor.Pulse.PM_FALSE.getValue(); engine.addEntity(player); sensorSystem.keyTyped('a'); sensorSystem.keyDown(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); } @Test public void keyDownAllKeysConfigTest() { engine.addEntity(player); sensor.keyCode = Input.Keys.UNKNOWN; sensor.allKeys = true; sensorSystem.keyTyped('a'); sensorSystem.keyDown(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); sensorSystem.keyUp(Input.Keys.A); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); } @Test public void keyBoardSensorAllKeysAndLogToggleConfigTest() { engine.addEntity(player); sensor.keyCode = Input.Keys.UNKNOWN; sensor.allKeys = true; sensor.logToggle = true; sensorSystem.keyTyped('a'); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertFalse(sensor.positive); sensorSystem.keyTyped('z'); engine.update(1); assertTrue(sensor.pulseState == BrickMode.BM_ON); assertTrue(sensor.positive); assertEquals("az", sensor.target); } }