summaryrefslogtreecommitdiffstats
path: root/tests/auto/input
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-10-06 20:41:53 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-10-29 11:31:21 +0000
commit7e4dc51ddbc99f3d8be5b921f49603de4f42ee60 (patch)
treefeb878e2867e4cbb88e4a675dcc0a6becc4146fd /tests/auto/input
parentf87ff1b6c41b9edabba72942998a06cbdd81ee74 (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')
-rw-r--r--tests/auto/input/abstractaxisinput/tst_abstractaxisinput.cpp7
-rw-r--r--tests/auto/input/analogaxisinput/tst_analogaxisinput.cpp37
-rw-r--r--tests/auto/input/buttonaxisinput/tst_buttonaxisinput.cpp42
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);