summaryrefslogtreecommitdiff
path: root/src/plugins/autotest/boost/boosttestsettings.cpp
blob: 840647572a4535b57bfe80c81193045269e9bad5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#include "boosttestsettings.h"

#include "boosttestconstants.h"

#include "../autotestconstants.h"
#include "../autotesttr.h"

#include <utils/layoutbuilder.h>

using namespace Layouting;
using namespace Utils;

namespace Autotest::Internal {

BoostTestSettings::BoostTestSettings(Id settingsId)
{
    setId(settingsId);
    setCategory(Constants::AUTOTEST_SETTINGS_CATEGORY);
    setDisplayName(Tr::tr(BoostTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
    setSettingsGroups("Autotest", "BoostTest");

    setLayouter([this](QWidget *widget) {
        Row { Form {
            logLevel, br,
            reportLevel, br,
            randomize, Row { seed }, br,
            systemErrors, br,
            fpExceptions, br,
            memLeaks,
        }, st}.attachTo(widget);
    });

    registerAspect(&logLevel);
    logLevel.setSettingsKey("LogLevel");
    logLevel.setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox);
    logLevel.addOption("All");
    logLevel.addOption("Success");
    logLevel.addOption("Test Suite");
    logLevel.addOption("Unit Scope");
    logLevel.addOption("Message");
    logLevel.addOption("Warning");
    logLevel.addOption("Error");
    logLevel.addOption("C++ Exception");
    logLevel.addOption("System Error");
    logLevel.addOption("Fatal Error");
    logLevel.addOption("Nothing");
    logLevel.setDefaultValue(int(LogLevel::Warning));
    logLevel.setLabelText(Tr::tr("Log format:"));

    registerAspect(&reportLevel);
    reportLevel.setSettingsKey("ReportLevel");
    reportLevel.setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox);
    reportLevel.addOption("Confirm");
    reportLevel.addOption("Short");
    reportLevel.addOption("Detailed");
    reportLevel.addOption("No");
    reportLevel.setDefaultValue(int(ReportLevel::Confirm));
    reportLevel.setLabelText(Tr::tr("Report level:"));

    registerAspect(&seed);
    seed.setSettingsKey("Seed");
    seed.setEnabled(false);
    seed.setLabelText(Tr::tr("Seed:"));
    seed.setToolTip(Tr::tr("A seed of 0 means no randomization. A value of 1 uses the current "
                           "time, any other value is used as random seed generator."));
    seed.setEnabler(&randomize);

    registerAspect(&randomize);
    randomize.setSettingsKey("Randomize");
    randomize.setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
    randomize.setLabelText(Tr::tr("Randomize"));
    randomize.setToolTip(Tr::tr("Randomize execution order."));

    registerAspect(&systemErrors);
    systemErrors.setSettingsKey("SystemErrors");
    systemErrors.setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
    systemErrors.setLabelText(Tr::tr("Catch system errors"));
    systemErrors.setToolTip(Tr::tr("Catch or ignore system errors."));

    registerAspect(&fpExceptions);
    fpExceptions.setSettingsKey("FPExceptions");
    fpExceptions.setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
    fpExceptions.setLabelText(Tr::tr("Floating point exceptions"));
    fpExceptions.setToolTip(Tr::tr("Enable floating point exception traps."));

    registerAspect(&memLeaks);
    memLeaks.setSettingsKey("MemoryLeaks");
    memLeaks.setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
    memLeaks.setDefaultValue(true);
    memLeaks.setLabelText(Tr::tr("Detect memory leaks"));
    memLeaks.setToolTip(Tr::tr("Enable memory leak detection."));
}

QString BoostTestSettings::logLevelToOption(const LogLevel logLevel)
{
    switch (logLevel) {
    case LogLevel::All: return QString("all");
    case LogLevel::Success: return QString("success");
    case LogLevel::TestSuite: return QString("test_suite");
    case LogLevel::UnitScope: return QString("unit_scope");
    case LogLevel::Message: return QString("message");
    case LogLevel::Error: return QString("error");
    case LogLevel::CppException: return QString("cpp_exception");
    case LogLevel::SystemError: return QString("system_error");
    case LogLevel::FatalError: return QString("fatal_error");
    case LogLevel::Nothing: return QString("nothing");
    case LogLevel::Warning: return QString("warning");
    }
    return {};
}

QString BoostTestSettings::reportLevelToOption(const ReportLevel reportLevel)
{
    switch (reportLevel) {
    case ReportLevel::Confirm: return QString("confirm");
    case ReportLevel::Short: return QString("short");
    case ReportLevel::Detailed: return QString("detailed");
    case ReportLevel::No: return QString("no");
    }
    return {};
}

} // Autotest::Internal