package com.indignado.logicbricks.systems.sensors; import com.badlogic.gdx.Input; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Transform; 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.MouseSensor; 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.MouseSensorBuilder; import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * @author Rubentxu */ public class MouseSensorSystemTest extends BaseSensorSystemTest<MouseSensor, MouseSensorSystem> { private Transform transform; @Override protected void tearDown() { } @Override protected void createContext() { // Create Player Entity entityBuilder.initialize(); IdentityComponent identityPlayer = entityBuilder.getComponent(IdentityComponent.class); identityPlayer.tag = "Player"; transform = new Transform(new Vector2(), 0); /* TextureView view = new TextureView(); view.attachedTransform = transform; view.width = 4; view.height = 3; entityBuilder.getComponent(ViewsComponent.class).views.add(view); */ sensor =builders.getBrickBuilder(MouseSensorBuilder.class) .setMouseEvent(MouseSensor.MouseEvent.MOVEMENT) .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(MouseSensorSystem.class); } @Test public void mouseSensorMovementEventTest() { engine.addEntity(player); sensorSystem.mouseMoved(50, 50); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); } //@Test public void mouseSensorMouseOvertEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.MOUSE_OVER); sensor.target = (player); engine.addEntity(player); transform.setPosition(new Vector2(24, 24)); sensorSystem.mouseMoved(25, 25); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); sensorSystem.mouseMoved(28, 28); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void mouseSensorWheelDownEventTest() { sensor.mouseEvent = MouseSensor.MouseEvent.WHEEL_DOWN; engine.addEntity(player); sensorSystem.scrolled(-1); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void mouseSensorWheelUpEventTest() { sensor.mouseEvent = MouseSensor.MouseEvent.WHEEL_UP; engine.addEntity(player); sensorSystem.scrolled(1); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void leftButtonDownEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.LEFT_BUTTON_DOWN); engine.addEntity(player); sensorSystem.touchDown(5, 5, 1, Input.Buttons.LEFT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); sensorSystem.touchUp(5, 5, 1, Input.Buttons.LEFT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void middleButtonDownEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.MIDDLE_BUTTON_DOWN); engine.addEntity(player); sensorSystem.touchDown(5, 5, 1, Input.Buttons.MIDDLE); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); sensorSystem.touchUp(5, 5, 1, Input.Buttons.MIDDLE); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void rightButtonDownEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.RIGHT_BUTTON_DOWN); engine.addEntity(player); sensorSystem.touchDown(5, 5, 1, Input.Buttons.RIGHT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertTrue(sensor.positive); sensorSystem.touchUp(5, 5, 1, Input.Buttons.RIGHT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void leftButtonUpEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.LEFT_BUTTON_UP); engine.addEntity(player); sensorSystem.touchUp(5, 5, 1, Input.Buttons.LEFT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void middleButtonUpEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.MIDDLE_BUTTON_UP); engine.addEntity(player); sensorSystem.touchUp(5, 5, 1, Input.Buttons.MIDDLE); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } @Test public void rightButtonUpEventTest() { sensor.mouseEvent = (MouseSensor.MouseEvent.RIGHT_BUTTON_UP); engine.addEntity(player); sensorSystem.touchUp(5, 5, 1, Input.Buttons.RIGHT); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertTrue(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_ON); assertFalse(sensor.positive); game.singleStep(1); assertTrue(sensor.pulseState == LogicBrick.BrickMode.BM_OFF); assertFalse(sensor.positive); } }