package com.indignado.logicbricks.systems.sensors; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.core.controllers.ConditionalController; import com.indignado.logicbricks.core.data.LogicBrick; import com.indignado.logicbricks.core.sensors.AlwaysSensor; 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.AlwaysSensorBuilder; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * @author Rubentxu */ public class AlwaysSensorSystemTest extends BaseSensorSystemTest<AlwaysSensor, AlwaysSensorSystem> { @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"; sensor =builders.getBrickBuilder(AlwaysSensorBuilder.class) .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(); } @Test public void alwaysTest() { engine.addEntity(player); 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); engine.update(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); } @Test public void alwaysPulseModeTrueTest() { sensor.pulse = Sensor.Pulse.PM_TRUE.getValue(); engine.addEntity(player); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); } @Test public void alwaysPulseModeTrueAndFrecuencyTest() { sensor.pulse = Sensor.Pulse.PM_TRUE.getValue(); sensor.frequency = 1.2f; engine.addEntity(player); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1.3f); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_OFF, sensor.pulseState); engine.update(0.21f); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_ON, sensor.pulseState); engine.update(1); assertTrue(sensor.positive); assertEquals(LogicBrick.BrickMode.BM_OFF, sensor.pulseState); } }