blob: f27ba21a72573fdc9b8ad79714fcb364a71fbab6 [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 <QtTest/QtTest>
#include <QWinTaskbarButton>
#include <QWinTaskbarProgress>
class tst_QWinTaskbarProgress : public QObject
{
Q_OBJECT
private slots:
void testValue();
void testRange();
void testPause();
void testVisibility();
void testStop();
};
void tst_QWinTaskbarProgress::testValue()
{
QWinTaskbarButton btn;
QWinTaskbarProgress *progress = btn.progress();
QVERIFY(progress);
QCOMPARE(progress->value(), 0);
QCOMPARE(progress->minimum(), 0);
QCOMPARE(progress->maximum(), 100);
QSignalSpy valueSpy(progress, SIGNAL(valueChanged(int)));
QVERIFY(valueSpy.isValid());
progress->setValue(25);
QCOMPARE(progress->value(), 25);
QCOMPARE(valueSpy.count(), 1);
QCOMPARE(valueSpy.last().at(0).toInt(), 25);
// under valid range -> no effect
progress->setValue(-50);
QCOMPARE(progress->value(), 25);
QCOMPARE(valueSpy.count(), 1);
progress->setValue(75);
QCOMPARE(progress->value(), 75);
QCOMPARE(valueSpy.count(), 2);
QCOMPARE(valueSpy.last().at(0).toInt(), 75);
// over valid range -> no effect
progress->setValue(150);
QCOMPARE(progress->value(), 75);
QCOMPARE(valueSpy.count(), 2);
}
void tst_QWinTaskbarProgress::testRange()
{
QWinTaskbarButton btn;
QWinTaskbarProgress *progress = btn.progress();
QVERIFY(progress);
QCOMPARE(progress->value(), 0);
QCOMPARE(progress->minimum(), 0);
QCOMPARE(progress->maximum(), 100);
QSignalSpy valueSpy(progress, SIGNAL(valueChanged(int)));
QSignalSpy minimumSpy(progress, SIGNAL(minimumChanged(int)));
QSignalSpy maximumSpy(progress, SIGNAL(maximumChanged(int)));
QVERIFY(valueSpy.isValid());
QVERIFY(minimumSpy.isValid());
QVERIFY(maximumSpy.isValid());
// value must remain intact
progress->setValue(50);
QCOMPARE(valueSpy.count(), 1);
progress->setMinimum(25);
QCOMPARE(progress->minimum(), 25);
QCOMPARE(minimumSpy.count(), 1);
QCOMPARE(minimumSpy.last().at(0).toInt(), 25);
progress->setMaximum(75);
QCOMPARE(progress->maximum(), 75);
QCOMPARE(maximumSpy.count(), 1);
QCOMPARE(maximumSpy.last().at(0).toInt(), 75);
QCOMPARE(progress->value(), 50);
QCOMPARE(valueSpy.count(), 1);
// value under valid range -> reset
progress->setMinimum(55);
QCOMPARE(progress->value(), 55);
QCOMPARE(progress->minimum(), 55);
QCOMPARE(valueSpy.count(), 2);
QCOMPARE(valueSpy.last().at(0).toInt(), 55);
QCOMPARE(minimumSpy.count(), 2);
QCOMPARE(minimumSpy.last().at(0).toInt(), 55);
progress->setValue(70);
QCOMPARE(valueSpy.count(), 3);
// value over valid range -> reset
progress->setMaximum(65);
QCOMPARE(progress->value(), 55);
QCOMPARE(progress->maximum(), 65);
QCOMPARE(valueSpy.count(), 4);
QCOMPARE(valueSpy.last().at(0).toInt(), 55);
QCOMPARE(maximumSpy.count(), 2);
QCOMPARE(maximumSpy.last().at(0).toInt(), 65);
}
void tst_QWinTaskbarProgress::testPause()
{
QWinTaskbarButton btn;
QWinTaskbarProgress *progress = btn.progress();
QVERIFY(progress);
QVERIFY(!progress->isPaused());
QSignalSpy pausedSpy(progress, SIGNAL(pausedChanged(bool)));
QVERIFY(pausedSpy.isValid());
progress->setPaused(true);
QVERIFY(progress->isPaused());
QCOMPARE(pausedSpy.count(), 1);
QCOMPARE(pausedSpy.last().at(0).toBool(), true);
progress->setPaused(false);
QVERIFY(!progress->isPaused());
QCOMPARE(pausedSpy.count(), 2);
QCOMPARE(pausedSpy.last().at(0).toBool(), false);
progress->stop();
progress->pause();
QVERIFY(!progress->isPaused());
QCOMPARE(pausedSpy.count(), 2);
progress->resume();
progress->pause();
QVERIFY(progress->isPaused());
QCOMPARE(pausedSpy.count(), 3);
QCOMPARE(pausedSpy.last().at(0).toBool(), true);
progress->resume();
QVERIFY(!progress->isPaused());
QCOMPARE(pausedSpy.count(), 4);
QCOMPARE(pausedSpy.last().at(0).toBool(), false);
}
void tst_QWinTaskbarProgress::testVisibility()
{
QWinTaskbarButton btn;
QWinTaskbarProgress *progress = btn.progress();
QVERIFY(progress);
QVERIFY(!progress->isVisible());
QSignalSpy visibleSpy(progress, SIGNAL(visibilityChanged(bool)));
QVERIFY(visibleSpy.isValid());
progress->setVisible(true);
QVERIFY(progress->isVisible());
QCOMPARE(visibleSpy.count(), 1);
QCOMPARE(visibleSpy.last().at(0).toBool(), true);
progress->setVisible(false);
QVERIFY(!progress->isVisible());
QCOMPARE(visibleSpy.count(), 2);
QCOMPARE(visibleSpy.last().at(0).toBool(), false);
}
void tst_QWinTaskbarProgress::testStop()
{
QWinTaskbarButton btn;
QWinTaskbarProgress *progress = btn.progress();
QVERIFY(progress);
QVERIFY(!progress->isStopped());
QSignalSpy stoppedSpy(progress, SIGNAL(stoppedChanged(bool)));
QVERIFY(stoppedSpy.isValid());
progress->pause();
QVERIFY(progress->isPaused());
QVERIFY(!progress->isStopped());
progress->stop();
QVERIFY(!progress->isPaused());
QVERIFY(progress->isStopped());
QCOMPARE(stoppedSpy.count(), 1);
QCOMPARE(stoppedSpy.last().at(0).toBool(), true);
progress->resume();
QVERIFY(!progress->isStopped());
QCOMPARE(stoppedSpy.count(), 2);
QCOMPARE(stoppedSpy.last().at(0).toBool(), false);
}
QTEST_MAIN(tst_QWinTaskbarProgress)
#include "tst_qwintaskbarprogress.moc"