diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-07-23 11:18:11 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-07-23 11:18:11 +0200 |
commit | 084c5b3db794af1ce86b2b17455d9be5e64baebe (patch) | |
tree | 46d29a7b89ff251c07b6fdd59c57e30f14baa64a /tests/auto/widgets/graphicsview | |
parent | f4a0d6d2494d1dd41cd5b854a48b435120714d32 (diff) | |
parent | 54987c6bf55b159d3ddb79461439700f6e0111f9 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
Change-Id: I18a9d83fc14f4a9afdb1e40523ec51e3fa1d7754
Diffstat (limited to 'tests/auto/widgets/graphicsview')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp index dd432912f3..55fcd96dc0 100644 --- a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp @@ -61,6 +61,8 @@ private slots: void movingItems(); void connectedToSceneRectChanged(); void items(); + void boundingRectPointIntersection_data(); + void boundingRectPointIntersection(); void removeItems(); void clear(); @@ -233,6 +235,56 @@ void tst_QGraphicsSceneIndex::items() QCOMPARE(scene.items().size(), 3); } +class CustomShapeItem : public QGraphicsItem +{ +public: + CustomShapeItem(const QPainterPath &shape) : QGraphicsItem(0), mShape(shape) {} + + QPainterPath shape() const { return mShape; } + QRectF boundingRect() const { return mShape.boundingRect(); } + void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) {} +private: + QPainterPath mShape; +}; + +Q_DECLARE_METATYPE(Qt::ItemSelectionMode) +Q_DECLARE_METATYPE(QPainterPath) + +void tst_QGraphicsSceneIndex::boundingRectPointIntersection_data() +{ + QTest::addColumn<QPainterPath>("itemShape"); + QTest::addColumn<Qt::ItemSelectionMode>("mode"); + + QTest::newRow("zero shape - intersects rect") << QPainterPath() << Qt::IntersectsItemBoundingRect; + QTest::newRow("zero shape - contains rect") << QPainterPath() << Qt::ContainsItemBoundingRect; + + QPainterPath triangle; + triangle.moveTo(50, 0); + triangle.lineTo(0, 50); + triangle.lineTo(100, 50); + triangle.lineTo(50, 0); + QTest::newRow("triangle shape - intersects rect") << triangle << Qt::IntersectsItemBoundingRect; + QTest::newRow("triangle shape - contains rect") << triangle << Qt::ContainsItemBoundingRect; + + QPainterPath rect; + rect.addRect(QRectF(0, 0, 100, 100)); + QTest::newRow("rectangle shape - intersects rect") << rect << Qt::IntersectsItemBoundingRect; + QTest::newRow("rectangle shape - contains rect") << rect << Qt::ContainsItemBoundingRect; +} + +void tst_QGraphicsSceneIndex::boundingRectPointIntersection() +{ + QFETCH(QPainterPath, itemShape); + QFETCH(Qt::ItemSelectionMode, mode); + + QGraphicsScene scene; + CustomShapeItem *item = new CustomShapeItem(itemShape); + scene.addItem(item); + QList<QGraphicsItem*> items = scene.items(QPointF(0, 0), mode, Qt::AscendingOrder); + QVERIFY(!items.isEmpty()); + QCOMPARE(items.first(), item); +} + class RectWidget : public QGraphicsWidget { Q_OBJECT |