1
/****************************************************************************
3
** Copyright (C) 2016 The Qt Company Ltd.
4
** Contact: https://www.qt.io/licensing/
6
** This file is part of the test suite of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and The Qt Company. For licensing terms
14
** and conditions see https://www.qt.io/terms-conditions. For further
15
** information use the contact form at https://www.qt.io/contact-us.
17
** GNU General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU
19
** General Public License version 3 as published by the Free Software
20
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21
** included in the packaging of this file. Please review the following
22
** information to ensure the GNU General Public License requirements will
23
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
27
****************************************************************************/
30
#include <QtTest/QtTest>
32
#include <qgraphicsitemanimation.h>
33
#include <QtCore/qtimeline.h>
34
#include <QtGui/qmatrix.h>
36
class tst_QGraphicsItemAnimation : public QObject
43
void linearRotation();
44
void checkReturnedLists();
45
void overwriteValueForStep();
49
void tst_QGraphicsItemAnimation::construction()
51
QGraphicsItemAnimation animation;
52
QVERIFY(!animation.item());
53
QVERIFY(!animation.timeLine());
54
QCOMPARE(animation.posAt(0), QPointF());
55
QCOMPARE(animation.posAt(0.5), QPointF());
56
QCOMPARE(animation.posAt(1), QPointF());
57
QCOMPARE(animation.matrixAt(0), QMatrix());
58
QCOMPARE(animation.matrixAt(0.5), QMatrix());
59
QCOMPARE(animation.matrixAt(1), QMatrix());
60
QCOMPARE(animation.rotationAt(0), qreal(0.0));
61
QCOMPARE(animation.rotationAt(0.5), qreal(0.0));
62
QCOMPARE(animation.rotationAt(1), qreal(0.0));
63
QCOMPARE(animation.xTranslationAt(0), qreal(0.0));
64
QCOMPARE(animation.xTranslationAt(0.5), qreal(0.0));
65
QCOMPARE(animation.xTranslationAt(1), qreal(0.0));
66
QCOMPARE(animation.yTranslationAt(0), qreal(0.0));
67
QCOMPARE(animation.yTranslationAt(0.5), qreal(0.0));
68
QCOMPARE(animation.yTranslationAt(1), qreal(0.0));
69
QCOMPARE(animation.verticalScaleAt(0), qreal(1.0));
70
QCOMPARE(animation.horizontalScaleAt(0), qreal(1.0));
71
QCOMPARE(animation.verticalShearAt(0), qreal(0.0));
72
QCOMPARE(animation.horizontalShearAt(0), qreal(0.0));
73
animation.clear(); // don't crash
76
void tst_QGraphicsItemAnimation::linearMove()
78
QGraphicsItemAnimation animation;
80
for (int i = 0; i <= 10; ++i) {
81
QCOMPARE(animation.posAt(i / 10.0).x(), qreal(0));
82
QCOMPARE(animation.posAt(i / 10.0).y(), qreal(0));
85
animation.setPosAt(1, QPointF(10, -10));
87
for (int i = 0; i <= 10; ++i) {
88
QCOMPARE(animation.posAt(i / 10.0).x(), qreal(i));
89
QCOMPARE(animation.posAt(i / 10.0).y(), qreal(-i));
92
animation.setPosAt(2, QPointF(10, -10));
94
QCOMPARE(animation.posAt(11).x(), qreal(10));
97
void tst_QGraphicsItemAnimation::linearRotation()
99
QGraphicsItemAnimation animation;
100
animation.setRotationAt(1, 1);
102
for (int i = 0; i <= 10; ++i)
103
QCOMPARE(animation.rotationAt(i / 10.0), qreal(i / 10.0));
106
void tst_QGraphicsItemAnimation::checkReturnedLists()
108
QGraphicsItemAnimation animation;
110
animation.setPosAt(1.0, QPointF(10, -10));
111
animation.setPosAt(0.5, QPointF(5, -5));
113
animation.setRotationAt(0.3, 2.3);
114
animation.setTranslationAt(0.3, 15, 15);
115
animation.setScaleAt(0.3, 2.5, 1.8);
116
animation.setShearAt(0.3, 5, 5);
118
QCOMPARE(animation.posList().at(0), (QPair<qreal, QPointF>(0.5, QPointF(5, -5))));
119
QCOMPARE(animation.posList().at(1), (QPair<qreal, QPointF>(1.0, QPointF(10, -10))));
120
QCOMPARE(animation.rotationList().at(0), (QPair<qreal, qreal>(0.3, 2.3)));
121
QCOMPARE(animation.translationList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(15, 15))));
122
QCOMPARE(animation.scaleList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(2.5, 1.8))));
123
QCOMPARE(animation.shearList().at(0), (QPair<qreal, QPointF>(0.3, QPointF(5, 5))));
125
QCOMPARE(animation.posList().size(), 2);
126
QCOMPARE(animation.rotationList().size(), 1);
127
QCOMPARE(animation.translationList().size(), 1);
128
QCOMPARE(animation.scaleList().size(), 1);
129
QCOMPARE(animation.shearList().size(), 1);
132
void tst_QGraphicsItemAnimation::overwriteValueForStep()
134
QGraphicsItemAnimation animation;
136
for (int i=0; i<3; i++){
137
animation.setPosAt(0.3, QPointF(3, -3.1));
138
animation.setRotationAt(0.3, 2.3);
139
animation.setTranslationAt(0.3, 15, 15);
140
animation.setScaleAt(0.3, 2.5, 1.8);
141
animation.setShearAt(0.3, 5, 5);
143
QCOMPARE(animation.posList().size(), 1);
144
QCOMPARE(animation.rotationList().size(), 1);
145
QCOMPARE(animation.translationList().size(), 1);
146
QCOMPARE(animation.scaleList().size(), 1);
147
QCOMPARE(animation.shearList().size(), 1);
151
void tst_QGraphicsItemAnimation::setTimeLine()
153
QGraphicsItemAnimation animation;
154
QCOMPARE(animation.timeLine(), (QTimeLine *)0);
156
QPointer<QTimeLine> line1 = new QTimeLine;
157
animation.setTimeLine(line1);
158
QCOMPARE(animation.timeLine(), (QTimeLine *)line1);
159
animation.setTimeLine(line1);
161
QCOMPARE(animation.timeLine(), (QTimeLine *)line1);
163
animation.setTimeLine(0);
164
QCOMPARE(animation.timeLine(), (QTimeLine *)0);
167
QTimeLine *line2 = new QTimeLine;
168
animation.setTimeLine(line2);
169
QCOMPARE(animation.timeLine(), (QTimeLine *)line2);
172
QCOMPARE(animation.timeLine(), (QTimeLine *)0);
175
QTEST_MAIN(tst_QGraphicsItemAnimation)
176
#include "tst_qgraphicsitemanimation.moc"