diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-10-06 20:41:53 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-10-29 11:31:21 +0000 |
commit | 7e4dc51ddbc99f3d8be5b921f49603de4f42ee60 (patch) | |
tree | feb878e2867e4cbb88e4a675dcc0a6becc4146fd /tests/auto/input | |
parent | f87ff1b6c41b9edabba72942998a06cbdd81ee74 (diff) |
Move all axis input logic in the relevant classes
This allows to align how we do things with a similar approach than the
one we use for the action inputs. All the processing for axis inputs
which was happening in UpdateAxisActionJob now happens in
AnalogAxisInput and ButtonAxisInput respectively. Makes the whole thing
more testable in return.
Change-Id: Ib24442b9983ae1736c287cd98c99ff2c04c1f807
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/input')
3 files changed, 73 insertions, 13 deletions
diff --git a/tests/auto/input/abstractaxisinput/tst_abstractaxisinput.cpp b/tests/auto/input/abstractaxisinput/tst_abstractaxisinput.cpp index 26f255d74..0e80b2478 100644 --- a/tests/auto/input/abstractaxisinput/tst_abstractaxisinput.cpp +++ b/tests/auto/input/abstractaxisinput/tst_abstractaxisinput.cpp @@ -63,6 +63,13 @@ public: : AbstractAxisInput() { } + + float process(Qt3DInput::Input::InputHandler *inputHandler, qint64 currentTime) Q_DECL_OVERRIDE + { + Q_UNUSED(inputHandler); + Q_UNUSED(currentTime); + return 0.0f; + } }; diff --git a/tests/auto/input/analogaxisinput/tst_analogaxisinput.cpp b/tests/auto/input/analogaxisinput/tst_analogaxisinput.cpp index 7e8a25de4..374cf2dd5 100644 --- a/tests/auto/input/analogaxisinput/tst_analogaxisinput.cpp +++ b/tests/auto/input/analogaxisinput/tst_analogaxisinput.cpp @@ -28,13 +28,15 @@ #include <QtTest/QTest> #include <qbackendnodetester.h> +#include "testdevice.h" + #include <Qt3DCore/private/qnode_p.h> #include <Qt3DCore/private/qscene_p.h> #include <Qt3DCore/qpropertyupdatedchange.h> #include <Qt3DInput/private/analogaxisinput_p.h> +#include <Qt3DInput/private/inputhandler_p.h> #include <Qt3DInput/QAnalogAxisInput> #include <Qt3DCore/qpropertyupdatedchange.h> -#include "testdevice.h" class tst_AnalogAxisInput: public Qt3DCore::QBackendNodeTester { @@ -123,6 +125,39 @@ private Q_SLOTS: // THEN QCOMPARE(backendAxisInput.sourceDevice(), device.id()); } + + void shouldProcessAxisValue() + { + const qint64 s = 1000000000; + + // GIVEN + TestDeviceIntegration deviceIntegration; + TestDevice *device = deviceIntegration.createPhysicalDevice("keyboard"); + TestDeviceBackendNode *deviceBackend = deviceIntegration.physicalDevice(device->id()); + Qt3DInput::Input::InputHandler handler; + handler.addInputDeviceIntegration(&deviceIntegration); + + Qt3DInput::Input::AnalogAxisInput backendAxisInput; + Qt3DInput::QAnalogAxisInput axisInput; + axisInput.setAxis(2); + axisInput.setSourceDevice(device); + simulateInitialization(&axisInput, &backendAxisInput); + QCOMPARE(backendAxisInput.axis(), 2); + + // WHEN + deviceBackend->setAxisValue(2, 0.1f); + + // THEN + QCOMPARE(backendAxisInput.process(&handler, 30 * s), 0.1f); + QCOMPARE(backendAxisInput.process(&handler, 31 * s), 0.1f); + + // WHEN + deviceBackend->setAxisValue(2, 0.2f); + + // THEN + QCOMPARE(backendAxisInput.process(&handler, 32 * s), 0.2f); + QCOMPARE(backendAxisInput.process(&handler, 33 * s), 0.2f); + } }; QTEST_APPLESS_MAIN(tst_AnalogAxisInput) diff --git a/tests/auto/input/buttonaxisinput/tst_buttonaxisinput.cpp b/tests/auto/input/buttonaxisinput/tst_buttonaxisinput.cpp index d4f3702e6..48416641c 100644 --- a/tests/auto/input/buttonaxisinput/tst_buttonaxisinput.cpp +++ b/tests/auto/input/buttonaxisinput/tst_buttonaxisinput.cpp @@ -28,13 +28,15 @@ #include <QtTest/QTest> #include <qbackendnodetester.h> +#include "testdevice.h" + #include <Qt3DCore/private/qnode_p.h> #include <Qt3DCore/private/qscene_p.h> #include <Qt3DCore/qpropertyupdatedchange.h> #include <Qt3DInput/private/buttonaxisinput_p.h> +#include <Qt3DInput/private/inputhandler_p.h> #include <Qt3DInput/QButtonAxisInput> #include <Qt3DCore/qpropertyupdatedchange.h> -#include "testdevice.h" class tst_ButtonAxisInput: public Qt3DCore::QBackendNodeTester { @@ -189,84 +191,100 @@ private Q_SLOTS: QVERIFY(qIsInf(backendAxisInput.deceleration())); } - void shouldUpdateSpeedRatioOverTime() + void shouldProcessAndUpdateSpeedRatioOverTime() { const qint64 s = 1000000000; // GIVEN + TestDeviceIntegration deviceIntegration; + TestDevice *device = deviceIntegration.createPhysicalDevice("keyboard"); + TestDeviceBackendNode *deviceBackend = deviceIntegration.physicalDevice(device->id()); + Qt3DInput::Input::InputHandler handler; + handler.addInputDeviceIntegration(&deviceIntegration); + Qt3DInput::Input::ButtonAxisInput backendAxisInput; Qt3DInput::QButtonAxisInput axisInput; + axisInput.setButtons(QVector<int>() << Qt::Key_Space); + axisInput.setScale(-1.0f); axisInput.setAcceleration(0.15f); axisInput.setDeceleration(0.3f); + axisInput.setSourceDevice(device); simulateInitialization(&axisInput, &backendAxisInput); QCOMPARE(backendAxisInput.speedRatio(), 0.0f); QCOMPARE(backendAxisInput.lastUpdateTime(), 0); + // WHEN (accelerate) + deviceBackend->setButtonPressed(Qt::Key_Space, true); + // WHEN - backendAxisInput.updateSpeedRatio(30 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 30 * s), 0.0f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.0f); QCOMPARE(backendAxisInput.lastUpdateTime(), 30 * s); // WHEN - backendAxisInput.updateSpeedRatio(31 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 31 * s), -0.15f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.15f); QCOMPARE(backendAxisInput.lastUpdateTime(), 31 * s); // WHEN - backendAxisInput.updateSpeedRatio(32 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 32 * s), -0.3f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.3f); QCOMPARE(backendAxisInput.lastUpdateTime(), 32 * s); // WHEN - backendAxisInput.updateSpeedRatio(35 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 35 * s), -0.75f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.75f); QCOMPARE(backendAxisInput.lastUpdateTime(), 35 * s); // WHEN - backendAxisInput.updateSpeedRatio(37 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 37 * s), -1.0f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 1.0f); QCOMPARE(backendAxisInput.lastUpdateTime(), 37 * s); // WHEN - backendAxisInput.updateSpeedRatio(38 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 38 * s), -1.0f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 1.0f); QCOMPARE(backendAxisInput.lastUpdateTime(), 38 * s); // WHEN - backendAxisInput.updateSpeedRatio(42 * s, Qt3DInput::Input::ButtonAxisInput::Accelerate); + QCOMPARE(backendAxisInput.process(&handler, 42 * s), -1.0f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 1.0f); QCOMPARE(backendAxisInput.lastUpdateTime(), 42 * s); + + // WHEN (decelerate) + deviceBackend->setButtonPressed(Qt::Key_Space, false); + // WHEN - backendAxisInput.updateSpeedRatio(43 * s, Qt3DInput::Input::ButtonAxisInput::Decelerate); + QCOMPARE(backendAxisInput.process(&handler, 43 * s), -0.7f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.7f); QCOMPARE(backendAxisInput.lastUpdateTime(), 43 * s); // WHEN - backendAxisInput.updateSpeedRatio(45 * s, Qt3DInput::Input::ButtonAxisInput::Decelerate); + QCOMPARE(backendAxisInput.process(&handler, 45 * s), -0.1f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.1f); QCOMPARE(backendAxisInput.lastUpdateTime(), 45 * s); // WHEN - backendAxisInput.updateSpeedRatio(46 * s, Qt3DInput::Input::ButtonAxisInput::Decelerate); + QCOMPARE(backendAxisInput.process(&handler, 46 * s), 0.0f); // THEN QCOMPARE(backendAxisInput.speedRatio(), 0.0f); |