aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/autotest
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2020-04-17 13:45:38 +0200
committerChristian Stenger <christian.stenger@qt.io>2020-04-21 06:37:40 +0000
commit3b36dcc4c68cafc514e0e3a37144a8c039763589 (patch)
tree9debbe82780f87669bde82ace1c51d7d3f8bfabb /src/plugins/autotest
parent82a7adf624164c7eb797ce8cb27d98b011641da7 (diff)
AutoTest: Provide catch settings
Users can now modify some settings of Catch tests. Task-number: QTCREATORBUG-19740 Change-Id: I47e64a43f22fbf783cbf7b256e498d9037533e9a Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/autotest')
-rw-r--r--src/plugins/autotest/CMakeLists.txt2
-rw-r--r--src/plugins/autotest/autotest.pro5
-rw-r--r--src/plugins/autotest/catch/catchconfiguration.cpp29
-rw-r--r--src/plugins/autotest/catch/catchframework.h10
-rw-r--r--src/plugins/autotest/catch/catchtestsettings.cpp94
-rw-r--r--src/plugins/autotest/catch/catchtestsettings.h62
-rw-r--r--src/plugins/autotest/catch/catchtestsettingspage.cpp113
-rw-r--r--src/plugins/autotest/catch/catchtestsettingspage.h42
-rw-r--r--src/plugins/autotest/catch/catchtestsettingspage.ui303
9 files changed, 659 insertions, 1 deletions
diff --git a/src/plugins/autotest/CMakeLists.txt b/src/plugins/autotest/CMakeLists.txt
index 1d8e6dde6b..619501af8b 100644
--- a/src/plugins/autotest/CMakeLists.txt
+++ b/src/plugins/autotest/CMakeLists.txt
@@ -26,6 +26,8 @@ add_qtc_plugin(AutoTest
catch/catchframework.h catch/catchframework.cpp catch/catchoutputreader.h
catch/catchoutputreader.cpp catch/catchresult.h catch/catchresult.cpp catch/catchtestparser.h
catch/catchtestparser.cpp catch/catchtreeitem.h catch/catchtreeitem.cpp
+ catch/catchtestsettings.cpp catch/catchtestsettings.h
+ catch/catchtestsettingspage.cpp catch/catchtestsettingspage.h catch/catchtestsettingspage.ui
gtest/gtest_utils.cpp gtest/gtest_utils.h
gtest/gtestconfiguration.cpp gtest/gtestconfiguration.h
gtest/gtestconstants.h
diff --git a/src/plugins/autotest/autotest.pro b/src/plugins/autotest/autotest.pro
index 2633883b09..7082a38586 100644
--- a/src/plugins/autotest/autotest.pro
+++ b/src/plugins/autotest/autotest.pro
@@ -33,6 +33,8 @@ SOURCES += \
catch/catchoutputreader.cpp \
catch/catchresult.cpp \
catch/catchtestparser.cpp \
+ catch/catchtestsettings.cpp \
+ catch/catchtestsettingspage.cpp \
catch/catchtreeitem.cpp \
gtest/gtestconfiguration.cpp \
gtest/gtestparser.cpp \
@@ -104,6 +106,8 @@ HEADERS += \
catch/catchoutputreader.h \
catch/catchresult.h \
catch/catchtestparser.h \
+ catch/catchtestsettings.h \
+ catch/catchtestsettingspage.h \
catch/catchtreeitem.h \
gtest/gtestconfiguration.h \
gtest/gtestparser.h \
@@ -150,6 +154,7 @@ RESOURCES += \
FORMS += \
testsettingspage.ui \
boost/boosttestsettingspage.ui \
+ catch/catchtestsettingspage.ui \
qtest/qttestsettingspage.ui \
gtest/gtestsettingspage.ui
diff --git a/src/plugins/autotest/catch/catchconfiguration.cpp b/src/plugins/autotest/catch/catchconfiguration.cpp
index ae112b73e9..51b2946a4f 100644
--- a/src/plugins/autotest/catch/catchconfiguration.cpp
+++ b/src/plugins/autotest/catch/catchconfiguration.cpp
@@ -24,8 +24,10 @@
#include "catchconfiguration.h"
#include "catchoutputreader.h"
+#include "catchtestsettings.h"
#include "../autotestplugin.h"
+#include "../itestframework.h"
#include "../testsettings.h"
namespace Autotest {
@@ -100,6 +102,33 @@ QStringList CatchConfiguration::argumentsForTestRunner(QStringList *omitted) con
' ', QString::SkipEmptyParts), omitted);
}
+ auto settings = dynamic_cast<CatchTestSettings *>(framework()->frameworkSettings());
+ if (!settings)
+ return arguments;
+
+ if (settings->abortAfterChecked)
+ arguments << "-x" << QString::number(settings->abortAfter);
+ if (settings->samplesChecked)
+ arguments << "--benchmark-samples" << QString::number(settings->benchmarkSamples);
+ if (settings->resamplesChecked)
+ arguments << "--benchmark-resamples" << QString::number(settings->benchmarkResamples);
+ if (settings->warmupChecked)
+ arguments << "--benchmark-warmup-time" << QString::number(settings->benchmarkWarmupTime);
+ if (settings->confidenceIntervalChecked)
+ arguments << "--benchmark-confidence-interval" << QString::number(settings->confidenceInterval);
+ if (settings->noAnalysis)
+ arguments << "--benchmark-no-analysis";
+ if (settings->showSuccess)
+ arguments << "-s";
+ if (settings->noThrow)
+ arguments << "-e";
+ if (settings->visibleWhitespace)
+ arguments << "-i";
+ if (settings->warnOnEmpty)
+ arguments << "-w" << "NoAssertions";
+
+ if (isDebugRunMode() && settings->breakOnFailure)
+ arguments << "-b";
return arguments;
}
diff --git a/src/plugins/autotest/catch/catchframework.h b/src/plugins/autotest/catch/catchframework.h
index 5f226da4bc..178f5ebc14 100644
--- a/src/plugins/autotest/catch/catchframework.h
+++ b/src/plugins/autotest/catch/catchframework.h
@@ -26,6 +26,9 @@
#include "../itestframework.h"
+#include "catchtestsettings.h"
+#include "catchtestsettingspage.h"
+
namespace Autotest {
namespace Internal {
@@ -40,7 +43,12 @@ public:
protected:
ITestParser *createTestParser() override;
TestTreeItem *createRootNode() override;
+
+private:
+ IFrameworkSettings * frameworkSettings() override { return &m_settings; }
+ CatchTestSettings m_settings;
+ CatchTestSettingsPage m_settingsPage{&m_settings, settingsId()};
};
-} // namepsace Internal
+} // namespace Internal
} // namespace Autotest
diff --git a/src/plugins/autotest/catch/catchtestsettings.cpp b/src/plugins/autotest/catch/catchtestsettings.cpp
new file mode 100644
index 0000000000..276a54985b
--- /dev/null
+++ b/src/plugins/autotest/catch/catchtestsettings.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 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 "catchtestsettings.h"
+
+namespace Autotest {
+namespace Internal {
+
+static const char abortAfterKey[] = "AbortAfter";
+static const char abortAfterCheckedKey[] = "AbortChecked";
+static const char benchmarkSamplesKey[] = "BenchSamples";
+static const char samplesCheckedKey[] = "SamplesChecked";
+static const char benchmarkResamplesKey[] = "BenchResamples";
+static const char resamplesCheckedKey[] = "ResamplesChecked";
+static const char benchmarConfidenceIntervalKey[] = "BenchConfInt";
+static const char confIntCheckedKey[] = "ConfIntChecked";
+static const char benchmarWarmupTimeKey[] = "BenchWarmup";
+static const char warmupCheckedKey[] = "WarmupChecked";
+static const char noAnalysisKey[] = "NoAnalysis";
+static const char showSuccessKey[] = "ShowSuccess";
+static const char breakOnFailureKey[] = "BreakOnFailure";
+static const char noThrowKey[] = "NoThrow";
+static const char visibleWhitespaceKey[] = "VisibleWS";
+static const char warnOnEmptyKey[] = "WarnEmpty";
+
+QString CatchTestSettings::name() const
+{
+ return QString("Catch2");
+}
+
+void CatchTestSettings::toFrameworkSettings(QSettings *s) const
+{
+ s->setValue(abortAfterCheckedKey, abortAfterChecked);
+ s->setValue(abortAfterKey, abortAfter);
+ s->setValue(samplesCheckedKey, samplesChecked);
+ s->setValue(benchmarkSamplesKey, benchmarkSamples);
+ s->setValue(resamplesCheckedKey, resamplesChecked);
+ s->setValue(benchmarkResamplesKey, benchmarkResamples);
+ s->setValue(confIntCheckedKey, confidenceIntervalChecked);
+ s->setValue(benchmarConfidenceIntervalKey, confidenceInterval);
+ s->setValue(warmupCheckedKey, warmupChecked);
+ s->setValue(benchmarWarmupTimeKey, benchmarkWarmupTime);
+ s->setValue(noAnalysisKey, noAnalysis);
+ s->setValue(showSuccessKey, showSuccess);
+ s->setValue(breakOnFailureKey, breakOnFailure);
+ s->setValue(noThrowKey, noThrow);
+ s->setValue(visibleWhitespaceKey, visibleWhitespace);
+ s->setValue(warnOnEmptyKey, warnOnEmpty);
+}
+
+void CatchTestSettings::fromFrameworkSettings(const QSettings *s)
+{
+ abortAfterChecked = s->value(abortAfterCheckedKey, false).toBool();
+ abortAfter = s->value(abortAfterKey, 0).toInt();
+ samplesChecked = s->value(samplesCheckedKey, false).toBool();
+ benchmarkSamples = s->value(benchmarkSamplesKey, 100).toInt();
+ resamplesChecked = s->value(resamplesCheckedKey, false).toBool();
+ benchmarkResamples = s->value(benchmarkResamplesKey, 100000).toInt();
+ confidenceIntervalChecked = s->value(confIntCheckedKey, false).toBool();
+ confidenceInterval = s->value(benchmarConfidenceIntervalKey, 0.95).toDouble();
+ warmupChecked = s->value(warmupCheckedKey, false).toBool();
+ benchmarkWarmupTime = s->value(benchmarWarmupTimeKey, 0).toInt();
+ noAnalysis = s->value(noAnalysisKey, false).toBool();
+ showSuccess = s->value(showSuccessKey, false).toBool();
+ breakOnFailure = s->value(breakOnFailureKey, true).toBool();
+ noThrow = s->value(noThrowKey, false).toBool();
+ visibleWhitespace = s->value(visibleWhitespaceKey, false).toBool();
+ warnOnEmpty = s->value(warnOnEmptyKey, false).toBool();
+}
+
+} // namespace Internal
+} // namespace Autotest
diff --git a/src/plugins/autotest/catch/catchtestsettings.h b/src/plugins/autotest/catch/catchtestsettings.h
new file mode 100644
index 0000000000..71c8d9eea5
--- /dev/null
+++ b/src/plugins/autotest/catch/catchtestsettings.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 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 "../iframeworksettings.h"
+
+namespace Autotest {
+namespace Internal {
+
+class CatchTestSettings : public IFrameworkSettings
+{
+public:
+ CatchTestSettings() = default;
+ QString name() const override;
+
+ int abortAfter = 0;
+ int benchmarkSamples = 0;
+ int benchmarkResamples = 0;
+ double confidenceInterval = 0;
+ int benchmarkWarmupTime = 0;
+ bool abortAfterChecked = false;
+ bool samplesChecked = false;
+ bool resamplesChecked = false;
+ bool confidenceIntervalChecked = false;
+ bool warmupChecked = false;
+ bool noAnalysis = false;
+ bool showSuccess = false;
+ bool breakOnFailure = true;
+ bool noThrow = false;
+ bool visibleWhitespace = false;
+ bool warnOnEmpty = false;
+
+protected:
+ void toFrameworkSettings(QSettings *s) const override;
+ void fromFrameworkSettings(const QSettings *s) override;
+};
+
+} // namespace Internal
+} // namespace Autotest
diff --git a/src/plugins/autotest/catch/catchtestsettingspage.cpp b/src/plugins/autotest/catch/catchtestsettingspage.cpp
new file mode 100644
index 0000000000..8c54dbe8c8
--- /dev/null
+++ b/src/plugins/autotest/catch/catchtestsettingspage.cpp
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 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 "catchtestsettingspage.h"
+#include "catchtestsettings.h"
+#include "ui_catchtestsettingspage.h"
+#include "../autotestconstants.h"
+
+#include <coreplugin/icore.h>
+
+namespace Autotest {
+namespace Internal {
+
+class CatchTestSettingsWidget final : public Core::IOptionsPageWidget
+{
+ Q_DECLARE_TR_FUNCTIONS(Autotest::Internal::CatchTestSettingsWidget)
+public:
+ explicit CatchTestSettingsWidget(CatchTestSettings *settings);
+ void apply() override;
+private:
+ Ui::CatchTestSettingsPage m_ui;
+ CatchTestSettings *m_settings;
+};
+
+CatchTestSettingsWidget::CatchTestSettingsWidget(CatchTestSettings *settings)
+ : m_settings(settings)
+{
+ m_ui.setupUi(this);
+
+ m_ui.abortSB->setEnabled(m_settings->abortAfterChecked);
+ m_ui.samplesSB->setEnabled(m_settings->samplesChecked),
+ m_ui.resamplesSB->setEnabled(m_settings->resamplesChecked);
+ m_ui.confIntSB->setEnabled(m_settings->confidenceIntervalChecked);
+ m_ui.warmupSB->setEnabled(m_settings->warmupChecked);
+
+ connect(m_ui.abortCB, &QCheckBox::toggled, m_ui.abortSB, &QSpinBox::setEnabled);
+ connect(m_ui.samplesCB, &QCheckBox::toggled, m_ui.samplesSB, &QSpinBox::setEnabled);
+ connect(m_ui.resamplesCB, &QCheckBox::toggled, m_ui.resamplesSB, &QSpinBox::setEnabled);
+ connect(m_ui.confIntCB, &QCheckBox::toggled, m_ui.confIntSB, &QDoubleSpinBox::setEnabled);
+ connect(m_ui.warmupCB, &QCheckBox::toggled, m_ui.warmupSB, &QSpinBox::setEnabled);
+
+ m_ui.showSuccessCB->setChecked(m_settings->showSuccess);
+ m_ui.breakOnFailCB->setChecked(m_settings->breakOnFailure);
+ m_ui.noThrowCB->setChecked(m_settings->noThrow);
+ m_ui.visibleWhiteCB->setChecked(m_settings->visibleWhitespace);
+ m_ui.warnOnEmpty->setChecked(m_settings->warnOnEmpty);
+ m_ui.noAnalysisCB->setChecked(m_settings->noAnalysis);
+ m_ui.abortCB->setChecked(m_settings->abortAfterChecked);
+ m_ui.abortSB->setValue(m_settings->abortAfter);
+ m_ui.samplesCB->setChecked(m_settings->samplesChecked);
+ m_ui.samplesSB->setValue(m_settings->benchmarkSamples);
+ m_ui.resamplesCB->setChecked(m_settings->resamplesChecked);
+ m_ui.resamplesSB->setValue(m_settings->benchmarkResamples);
+ m_ui.confIntCB->setChecked(m_settings->confidenceIntervalChecked);
+ m_ui.confIntSB->setValue(m_settings->confidenceInterval);
+ m_ui.warmupCB->setChecked(m_settings->warmupChecked);
+ m_ui.warmupSB->setValue(m_settings->benchmarkWarmupTime);
+}
+
+void CatchTestSettingsWidget::apply()
+{
+ m_settings->showSuccess = m_ui.showSuccessCB->isChecked();
+ m_settings->breakOnFailure = m_ui.breakOnFailCB->isChecked();
+ m_settings->noThrow = m_ui.noThrowCB->isChecked();
+ m_settings->visibleWhitespace = m_ui.visibleWhiteCB->isChecked();
+ m_settings->warnOnEmpty = m_ui.warnOnEmpty->isChecked();
+ m_settings->noAnalysis = m_ui.noAnalysisCB->isChecked();
+ m_settings->abortAfterChecked = m_ui.abortCB->isChecked();
+ m_settings->abortAfter = m_ui.abortSB->value();
+ m_settings->samplesChecked = m_ui.samplesCB->isChecked();
+ m_settings->benchmarkSamples = m_ui.samplesSB->value();
+ m_settings->resamplesChecked = m_ui.resamplesCB->isChecked();
+ m_settings->benchmarkResamples = m_ui.resamplesSB->value();
+ m_settings->confidenceIntervalChecked = m_ui.confIntCB->isChecked();
+ m_settings->confidenceInterval = m_ui.confIntSB->value();
+ m_settings->warmupChecked = m_ui.warmupCB->isChecked();
+ m_settings->benchmarkWarmupTime = m_ui.warmupSB->value();
+
+ m_settings->toSettings(Core::ICore::settings());
+}
+
+CatchTestSettingsPage::CatchTestSettingsPage(CatchTestSettings *settings, Core::Id settingsId)
+{
+ setId(settingsId);
+ setCategory(Constants::AUTOTEST_SETTINGS_CATEGORY);
+ setDisplayName(QCoreApplication::translate("CatchTestFramework", "Catch Test"));
+ setWidgetCreator([settings] { return new CatchTestSettingsWidget(settings); });
+}
+
+} // namespace Internal
+} // namespace Autotest
diff --git a/src/plugins/autotest/catch/catchtestsettingspage.h b/src/plugins/autotest/catch/catchtestsettingspage.h
new file mode 100644
index 0000000000..1c659c7f10
--- /dev/null
+++ b/src/plugins/autotest/catch/catchtestsettingspage.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 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 <coreplugin/dialogs/ioptionspage.h>
+
+namespace Autotest {
+namespace Internal {
+
+class CatchTestSettings;
+
+class CatchTestSettingsPage : public Core::IOptionsPage
+{
+public:
+ CatchTestSettingsPage(CatchTestSettings *settings, Core::Id settingsId);
+};
+
+} // namespace Internal
+} // namespace Autotest
diff --git a/src/plugins/autotest/catch/catchtestsettingspage.ui b/src/plugins/autotest/catch/catchtestsettingspage.ui
new file mode 100644
index 0000000000..429d4482b6
--- /dev/null
+++ b/src/plugins/autotest/catch/catchtestsettingspage.ui
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CatchTestSettingsPage</class>
+ <widget class="QWidget" name="CatchTestSettingsPage">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>314</width>
+ <height>323</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string>Confidence interval used for bootstrapping.</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="showSuccessCB">
+ <property name="toolTip">
+ <string>Show success for tests.</string>
+ </property>
+ <property name="text">
+ <string>Show success</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="breakOnFailCB">
+ <property name="toolTip">
+ <string>Turns failures into debugger breakpoints.</string>
+ </property>
+ <property name="text">
+ <string>Break on failure while debugging</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="noThrowCB">
+ <property name="toolTip">
+ <string>Skips all assertions that test for thrown exceptions.</string>
+ </property>
+ <property name="text">
+ <string>Skip throwing assertions</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="visibleWhiteCB">
+ <property name="toolTip">
+ <string>Makes whitespace visible.</string>
+ </property>
+ <property name="text">
+ <string>Visualize whitespace</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="warnOnEmpty">
+ <property name="toolTip">
+ <string>Warns if a test section does not check any assertion.</string>
+ </property>
+ <property name="text">
+ <string>Warn on empty tests</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="abortHL">
+ <item>
+ <widget class="QCheckBox" name="abortCB">
+ <property name="toolTip">
+ <string>Aborts after the specified number of failures.</string>
+ </property>
+ <property name="text">
+ <string>Abort after</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="abortSB">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>9999</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="samplesHL">
+ <item>
+ <widget class="QCheckBox" name="samplesCB">
+ <property name="toolTip">
+ <string>Number of samples to collect while running benchmarks.</string>
+ </property>
+ <property name="text">
+ <string>Benchmark samples</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="samplesSB">
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="resamplesHL">
+ <item>
+ <widget class="QCheckBox" name="resamplesCB">
+ <property name="text">
+ <string>Benchmark resamples</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="resamplesSB">
+ <property name="toolTip">
+ <string>Number of resamples for bootstrapping.</string>
+ </property>
+ <property name="maximum">
+ <number>9999999</number>
+ </property>
+ <property name="value">
+ <number>100000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="confIntHL">
+ <item>
+ <widget class="QCheckBox" name="confIntCB">
+ <property name="text">
+ <string>Benchmark confidence interval</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="confIntSB">
+ <property name="maximum">
+ <double>1.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.050000000000000</double>
+ </property>
+ <property name="value">
+ <double>0.950000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="warmupHL">
+ <item>
+ <widget class="QCheckBox" name="warmupCB">
+ <property name="toolTip">
+ <string>Warmup time for each test.</string>
+ </property>
+ <property name="text">
+ <string>Benchmark warmup time</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="warmupSB">
+ <property name="suffix">
+ <string> ms</string>
+ </property>
+ <property name="maximum">
+ <number>10000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="noAnalysisCB">
+ <property name="toolTip">
+ <string>Disables statistical analysis and bootstrapping.</string>
+ </property>
+ <property name="text">
+ <string>Disable analysis</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>