package com.indignado.logicbricks.systems.controllers; import com.badlogic.ashley.core.Entity; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.core.bricks.base.BaseTest; import com.indignado.logicbricks.core.controllers.ConditionalController; import com.indignado.logicbricks.core.data.LogicBrick; import com.indignado.logicbricks.core.sensors.Sensor; import com.indignado.logicbricks.systems.sensors.base.ActuatorTest; import com.indignado.logicbricks.utils.builders.controllers.ConditionalControllerBuilder; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * @author Rubentxu. */ public class ConditionalControllerSystemTest extends BaseTest{ private ConditionalController controller; private TestSensor sensor; private TestSensor sensor2; private TestSensor sensor3; private Entity player; @Before public void setup() { entityBuilder.initialize(); IdentityComponent identityPlayer = entityBuilder.getComponent(IdentityComponent.class); identityPlayer.tag = "Player"; sensor = new TestSensor(); sensor.name = "sensorPlayer"; sensor.pulseState = LogicBrick.BrickMode.BM_ON; sensor2 = new TestSensor(); sensor2.name = "sensor2Player"; sensor2.pulseState = LogicBrick.BrickMode.BM_ON; sensor3 = new TestSensor(); sensor3.name = "sensor3Player"; sensor3.pulseState = LogicBrick.BrickMode.BM_ON; controller =builders.getBrickBuilder(ConditionalControllerBuilder.class) .setOp(ConditionalController.Op.OP_AND) .setName("playerController") .getBrick(); ActuatorTest actuatorTest = new ActuatorTest(); player = entityBuilder .addController(controller, "Default") .connectToSensors(sensor, sensor2, sensor3) .connectToActuator(actuatorTest) .getEntity(); } @Test public void conditionalANDTest() { engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalAND2Test() { engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalAND3Test() { engine.addEntity(player); sensor.positive = true; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalAND4Test() { engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalAND5Test() { engine.addEntity(player); sensor.positive = true; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalAND6Test() { engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalORTest() { controller.op = ConditionalController.Op.OP_OR; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalOR2Test() { controller.op = ConditionalController.Op.OP_OR; engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalOR3Test() { controller.op = ConditionalController.Op.OP_OR; engine.addEntity(player); sensor.positive = true; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalOR4Test() { controller.op = ConditionalController.Op.OP_OR; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalOR5Test() { controller.op = ConditionalController.Op.OP_OR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalXORTest() { controller.op = ConditionalController.Op.OP_XOR; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalXOR2Test() { controller.op = ConditionalController.Op.OP_XOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalXOR3Test() { controller.op = ConditionalController.Op.OP_XOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalXOR4Test() { controller.op = ConditionalController.Op.OP_XOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalNANDTest() { controller.op = ConditionalController.Op.OP_NAND; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalNAND2Test() { controller.op = ConditionalController.Op.OP_NAND; engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalNAND3Test() { controller.op = ConditionalController.Op.OP_NAND; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalNAND4Test() { controller.op = ConditionalController.Op.OP_NAND; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalNORTest() { controller.op = ConditionalController.Op.OP_NOR; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalNOR2Test() { controller.op = ConditionalController.Op.OP_NOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalNOR3Test() { controller.op = ConditionalController.Op.OP_NOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalNOR4Test() { controller.op = ConditionalController.Op.OP_NOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalXNORTest() { controller.op = ConditionalController.Op.OP_XNOR; engine.addEntity(player); sensor.positive = true; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalXNOR2Test() { controller.op = ConditionalController.Op.OP_XNOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = true; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } @Test public void conditionalXNOR3Test() { controller.op = ConditionalController.Op.OP_XNOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = true; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_OFF, controller.pulseState); } @Test public void conditionalXNOR4Test() { controller.op = ConditionalController.Op.OP_XNOR; engine.addEntity(player); sensor.positive = false; sensor2.positive = false; sensor3.positive = false; engine.update(1); assertEquals(LogicBrick.BrickMode.BM_ON, controller.pulseState); } private class TestSensor extends Sensor { } }