diff --git a/src/plugins/qmlprofiler/qmlprofiler.qbs b/src/plugins/qmlprofiler/qmlprofiler.qbs index c870d3096fd..46e965661da 100644 --- a/src/plugins/qmlprofiler/qmlprofiler.qbs +++ b/src/plugins/qmlprofiler/qmlprofiler.qbs @@ -93,6 +93,7 @@ QtcPlugin { "qmlprofilerbindingloopsrenderpass_test.cpp", "qmlprofilerbindingloopsrenderpass_test.h", "qmlprofilerclientmanager_test.cpp", "qmlprofilerclientmanager_test.h", + "qmlprofilerconfigwidget_test.cpp", "qmlprofilerconfigwidget_test.h", ] } } diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index 4f8450b6129..123a84bd17f 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -46,6 +46,7 @@ #include "tests/qmlprofilerattachdialog_test.h" #include "tests/qmlprofilerbindingloopsrenderpass_test.h" #include "tests/qmlprofilerclientmanager_test.h" +#include "tests/qmlprofilerconfigwidget_test.h" // Force QML Debugging to be enabled, so that we can selftest the profiler #define QT_QML_DEBUG_NO_WARNING @@ -115,6 +116,7 @@ QList QmlProfiler::Internal::QmlProfilerPlugin::createTestObjects() c tests << new QmlProfilerAttachDialogTest; tests << new QmlProfilerBindingLoopsRenderPassTest; tests << new QmlProfilerClientManagerTest; + tests << new QmlProfilerConfigWidgetTest; tests << new QQmlEngine; // Trigger debug connector to be started #endif diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.cpp new file mode 100644 index 00000000000..e291c15f5df --- /dev/null +++ b/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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. +** +****************************************************************************/ +#include "qmlprofilerconfigwidget_test.h" +#include + +namespace QmlProfiler { +namespace Internal { + +QmlProfilerConfigWidgetTest::QmlProfilerConfigWidgetTest(QObject *parent) : + QObject(parent), widget(&settings) +{ + widget.show(); + flushEnabled = widget.findChild("flushEnabled"); + QVERIFY(flushEnabled); + flushInterval = widget.findChild("flushInterval"); + QVERIFY(flushInterval); + aggregateTraces = widget.findChild("aggregateTraces"); + QVERIFY(aggregateTraces); +} + +void QmlProfilerConfigWidgetTest::testUpdateFromSettings() +{ + QSignalSpy flushes(flushEnabled, SIGNAL(stateChanged(int))); + QCOMPARE(flushEnabled->checkState(), Qt::Unchecked); + settings.setFlushEnabled(true); + QCOMPARE(flushEnabled->checkState(), Qt::Checked); + settings.setFlushEnabled(false); + QCOMPARE(flushEnabled->checkState(), Qt::Unchecked); + QCOMPARE(flushes.count(), 2); + + + QSignalSpy intervals(flushInterval, SIGNAL(valueChanged(int))); + QCOMPARE(flushInterval->value(), 1000); + settings.setFlushInterval(200); + QCOMPARE(flushInterval->value(), 200); + settings.setFlushInterval(1000); + QCOMPARE(flushInterval->value(), 1000); + QCOMPARE(intervals.count(), 2); + + QSignalSpy aggregates(aggregateTraces, SIGNAL(stateChanged(int))); + QCOMPARE(aggregateTraces->checkState(), Qt::Unchecked); + settings.setAggregateTraces(true); + QCOMPARE(aggregateTraces->checkState(), Qt::Checked); + settings.setAggregateTraces(false); + QCOMPARE(aggregateTraces->checkState(), Qt::Unchecked); + QCOMPARE(aggregates.count(), 2); +} + +void QmlProfilerConfigWidgetTest::testChangeWidget() +{ + QCOMPARE(flushEnabled->checkState(), Qt::Unchecked); + QVERIFY(!settings.flushEnabled()); + flushEnabled->setCheckState(Qt::Checked); + QVERIFY(settings.flushEnabled()); + flushEnabled->setCheckState(Qt::Unchecked); + QVERIFY(!settings.flushEnabled()); + + QCOMPARE(flushInterval->value(), 1000); + QCOMPARE(settings.flushInterval(), 1000u); + flushInterval->setValue(200); + QCOMPARE(settings.flushInterval(), 200u); + flushInterval->setValue(1000); + QCOMPARE(settings.flushInterval(), 1000u); + + QCOMPARE(aggregateTraces->checkState(), Qt::Unchecked); + QVERIFY(!settings.aggregateTraces()); + aggregateTraces->setCheckState(Qt::Checked); + QVERIFY(settings.aggregateTraces()); + aggregateTraces->setCheckState(Qt::Unchecked); + QVERIFY(!settings.aggregateTraces()); +} + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.h b/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.h new file mode 100644 index 00000000000..3e39f4beb22 --- /dev/null +++ b/src/plugins/qmlprofiler/tests/qmlprofilerconfigwidget_test.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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. +** +****************************************************************************/ +#pragma once + +#include +#include +#include +#include + +namespace QmlProfiler { +namespace Internal { + +class QmlProfilerConfigWidgetTest : public QObject +{ + Q_OBJECT +public: + explicit QmlProfilerConfigWidgetTest(QObject *parent = 0); + +private slots: + void testUpdateFromSettings(); + void testChangeWidget(); + +private: + QmlProfilerSettings settings; + QmlProfilerConfigWidget widget; + + QCheckBox *flushEnabled; + QSpinBox *flushInterval; + QCheckBox *aggregateTraces; +}; + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/tests.pri b/src/plugins/qmlprofiler/tests/tests.pri index 8cbefe4b760..6d976a2716c 100644 --- a/src/plugins/qmlprofiler/tests/tests.pri +++ b/src/plugins/qmlprofiler/tests/tests.pri @@ -13,7 +13,8 @@ SOURCES += \ $$PWD/qmlprofileranimationsmodel_test.cpp \ $$PWD/qmlprofilerattachdialog_test.cpp \ $$PWD/qmlprofilerbindingloopsrenderpass_test.cpp \ - $$PWD/qmlprofilerclientmanager_test.cpp + $$PWD/qmlprofilerclientmanager_test.cpp \ + $$PWD/qmlprofilerconfigwidget_test.cpp HEADERS += \ $$PWD/debugmessagesmodel_test.h \ @@ -30,4 +31,5 @@ HEADERS += \ $$PWD/qmlprofileranimationsmodel_test.h \ $$PWD/qmlprofilerattachdialog_test.h \ $$PWD/qmlprofilerbindingloopsrenderpass_test.h \ - $$PWD/qmlprofilerclientmanager_test.h + $$PWD/qmlprofilerclientmanager_test.h \ + $$PWD/qmlprofilerconfigwidget_test.h