blob: ac20fb35ec55c3ab3817b376f350a867199eac0b [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtCore/qvariantanimation.h>
#include <QtTest>
class tst_QVariantAnimation : public QObject
{
Q_OBJECT
private slots:
void construction();
void destruction();
void currentValue();
void easingCurve();
void startValue();
void endValue();
void keyValueAt();
void keyValues();
void duration();
void interpolation();
};
class TestableQVariantAnimation : public QVariantAnimation
{
Q_OBJECT
public:
void updateCurrentValue(const QVariant&) {}
};
void tst_QVariantAnimation::construction()
{
TestableQVariantAnimation anim;
}
void tst_QVariantAnimation::destruction()
{
TestableQVariantAnimation *anim = new TestableQVariantAnimation;
delete anim;
}
void tst_QVariantAnimation::currentValue()
{
TestableQVariantAnimation anim;
QVERIFY(!anim.currentValue().isValid());
}
void tst_QVariantAnimation::easingCurve()
{
TestableQVariantAnimation anim;
QCOMPARE(anim.easingCurve().type(), QEasingCurve::Linear);
anim.setEasingCurve(QEasingCurve::InQuad);
QCOMPARE(anim.easingCurve().type(), QEasingCurve::InQuad);
}
void tst_QVariantAnimation::endValue()
{
TestableQVariantAnimation anim;
anim.setEndValue(QVariant(1));
QCOMPARE(anim.endValue().toInt(), 1);
}
void tst_QVariantAnimation::startValue()
{
TestableQVariantAnimation anim;
anim.setStartValue(QVariant(1));
QCOMPARE(anim.startValue().toInt(), 1);
anim.setStartValue(QVariant(-1));
QCOMPARE(anim.startValue().toInt(), -1);
}
void tst_QVariantAnimation::keyValueAt()
{
TestableQVariantAnimation anim;
int i=0;
for (qreal r=0.0; r<1.0; r+=0.1) {
anim.setKeyValueAt(0.1, ++i);
QCOMPARE(anim.keyValueAt(0.1).toInt(), i);
}
}
void tst_QVariantAnimation::keyValues()
{
TestableQVariantAnimation anim;
QVariantAnimation::KeyValues values;
int i=0;
for (qreal r=0.0; r<1.0; r+=0.1) {
values.append(QVariantAnimation::KeyValue(r, i));
}
anim.setKeyValues(values);
QCOMPARE(anim.keyValues(), values);
}
void tst_QVariantAnimation::duration()
{
TestableQVariantAnimation anim;
QCOMPARE(anim.duration(), 250);
anim.setDuration(500);
QCOMPARE(anim.duration(), 500);
QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
anim.setDuration(-1);
QCOMPARE(anim.duration(), 500);
}
void tst_QVariantAnimation::interpolation()
{
QVariantAnimation unsignedAnim;
unsignedAnim.setStartValue(100u);
unsignedAnim.setEndValue(0u);
unsignedAnim.setDuration(100);
unsignedAnim.setCurrentTime(50);
QCOMPARE(unsignedAnim.currentValue().toUInt(), 50u);
QVariantAnimation signedAnim;
signedAnim.setStartValue(100);
signedAnim.setEndValue(0);
signedAnim.setDuration(100);
signedAnim.setCurrentTime(50);
QCOMPARE(signedAnim.currentValue().toInt(), 50);
QVariantAnimation pointAnim;
pointAnim.setStartValue(QPoint(100, 100));
pointAnim.setEndValue(QPoint(0, 0));
pointAnim.setDuration(100);
pointAnim.setCurrentTime(50);
QCOMPARE(pointAnim.currentValue().toPoint(), QPoint(50, 50));
}
QTEST_MAIN(tst_QVariantAnimation)
#include "tst_qvariantanimation.moc"