forked from paceholder/nodeeditor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestDragging.cpp
More file actions
68 lines (51 loc) · 1.89 KB
/
TestDragging.cpp
File metadata and controls
68 lines (51 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "ApplicationSetup.hpp"
#include "Stringify.hpp"
#include "StubNodeDataModel.hpp"
#include <QtNodes/Connection>
#include <QtNodes/FlowScene>
#include <QtNodes/FlowView>
#include <QtNodes/Node>
#include <catch2/catch.hpp>
#include <QtTest>
#include <QtWidgets/QApplication>
using QtNodes::Connection;
using QtNodes::DataModelRegistry;
using QtNodes::FlowScene;
using QtNodes::FlowView;
using QtNodes::Node;
using QtNodes::NodeData;
using QtNodes::NodeDataModel;
using QtNodes::NodeDataType;
using QtNodes::PortIndex;
using QtNodes::PortType;
TEST_CASE("Dragging node changes position", "[gui]")
{
auto app = applicationSetup();
FlowScene scene;
FlowView view(&scene);
view.show();
REQUIRE(QTest::qWaitForWindowExposed(&view));
SECTION("just one node")
{
auto &node = scene.createNode(std::make_unique<StubNodeDataModel>());
auto &ngo = node.nodeGraphicsObject();
QPointF scPosBefore = ngo.pos();
QPointF scClickPos = ngo.boundingRect().center();
scClickPos = QPointF(ngo.sceneTransform().map(scClickPos).toPoint());
QPoint vwClickPos = view.mapFromScene(scClickPos);
QPoint vwDestPos = vwClickPos + QPoint(10, 20);
QPointF scExpectedDelta = view.mapToScene(vwDestPos) - scClickPos;
CAPTURE(scClickPos);
CAPTURE(vwClickPos);
CAPTURE(vwDestPos);
CAPTURE(scExpectedDelta);
QTest::mouseMove(view.windowHandle(), vwClickPos);
QTest::mousePress(view.windowHandle(), Qt::LeftButton, Qt::NoModifier, vwClickPos);
QTest::mouseMove(view.windowHandle(), vwDestPos);
QTest::mouseRelease(view.windowHandle(), Qt::LeftButton, Qt::NoModifier, vwDestPos);
QPointF scDelta = ngo.pos() - scPosBefore;
QPoint roundDelta = scDelta.toPoint();
QPoint roundExpectedDelta = scExpectedDelta.toPoint();
CHECK(roundDelta == roundExpectedDelta);
}
}